Add a README file
[gstfs.git] / README
blob6f4a916e108017f095f9d68d35b66471f6d9f1ad
1 GSTFS, a gstreamer-based transcoding FUSE filesystem
2 Bob Copeland <me@bobcopeland.com>
4 Introduction
5 ~~~~~~~~~~~~
7 GSTFS is a filesystem for on-demand transcoding of music files between 
8 different formats.  It utilizes the gstreamer library for conversion so any
9 formats supported by gstreamer should also be supported by gstfs.  The 
10 filesystem's only requirement is that the gstreamer pipeline begin with a 
11 filesrc with the name "_source" and end with an fdsink with the name "_dest".
12 The filesystem will automatically substitute the filename and fd number in
13 these pipelines.
15 Usage
16 ~~~~~
17 The example shell script mp32wav.sh is illustrative (pretend it's all on one 
18 line):
20     #! /bin/sh
21     gstfs -d -osrc=$1,src_ext=mp3,dst_ext=wav,\
22         pipeline="filesrc name=\"_source\" ! decodebin ! audioconvert ! \
23         wavenc ! fdsink name=\"_dest\" sync=false" $2
25 The pipeline loads the mp3 from a file, decodes it, converts it to the proper
26 sampling rate, sample size and endianness, and encodes it as a wave file.  
27 gst-launch(1) is a useful program to test pipelines to see if they work (e.g. 
28 use alsasink).  The parameters to the script are the music directory 
29 containing mp3s, followed by the mount point where wave files will appear.
31 Once mounted, the first read of a file will transcode it, blocking until 
32 transcoding is complete.  The transcoded data is cached in memory for 
33 subsequent reads.
35 Mount Options
36 ~~~~~~~~~~~~~
38 GSTFS currently recognizes the following mount options:
40     src: The source directory of files you want to transcode
41     src_ext: Source format file extension
42     dst_ext: Target format file extension
43     pipeline: gstreamer conversion pipeline
44     ncache: number of files to cache in memory (default: 50)