1mp3fs 2===== 3 4[![Build Status](https://travis-ci.org/khenriks/mp3fs.svg?branch=master)](https://travis-ci.org/khenriks/mp3fs) 5 6Web site: http://khenriks.github.io/mp3fs/ 7 8mp3fs is a read-only FUSE filesystem which transcodes between audio 9formats (currently FLAC to MP3) on the fly when opened and read. 10 11This can let you use a FLAC collection with software and/or hardware which 12only understands the MP3 format, or transcode files through simple 13drag-and-drop in a file browser. 14 15For installation instructions see the [install](INSTALL.md) file. 16 17Usage 18----- 19 20Mount your filesystem like this: 21 22 mp3fs [-b bitrate] musicdir mountpoint [-o fuse_options] 23 24For example, 25 26 mp3fs -b 128 /mnt/music /mnt/mp3 -o allow_other,ro 27 28In recent versions of FUSE and mp3fs, the same can be achieved with the 29following entry in `/etc/fstab`: 30 31 mp3fs#/mnt/music /mnt/mp3 fuse allow_other,ro,bitrate=128 0 0 32 33At this point the files `/mnt/media/**.flac` will show up as 34`/mnt/mp3/**.mp3`. 35 36How it Works 37------------ 38 39When a file is opened, the decoder and encoder are initialised and 40the file metadata is read. At this time the final filesize can be 41determined as we only support constant bitrate (CBR) MP3 files. 42 43As the file is read, it is transcoded into an internal per-file 44buffer. This buffer continues to grow while the file is being read 45until the whole file is transcoded in memory. The memory is freed 46only when the file is closed. This simplifies the implementation. 47 48Seeking within a file will cause the file to be transcoded up to the 49seek point (if not already done). This is not usually a problem 50since most programs will read a file from start to finish. Future 51enhancements may provide true random seeking. 52 53ID3 version 2.4 and 1.1 tags are created from the vorbis comments in 54the FLAC file. They are located at the start and end of the file 55respectively. 56 57A special optimisation is made so that applicatins which scan for 58id3v1 tags do not have to wait for the whole file to be transcoded 59before reading the tag. This *dramatically* speeds up such 60applications. 61 62Development 63----------- 64 65mp3fs uses Git for revision control. You can obtain the full repository 66with: 67 68 git clone https://github.com/khenriks/mp3fs.git 69 70mp3fs is written in a mixture of C and C++ and uses the following libraries: 71 72* [FUSE](http://fuse.sourceforge.net/) 73* [FLAC](http://flac.sourceforge.net/) 74* [LAME](http://lame.sourceforge.net/) 75* [libid3tag](http://www.underbit.com/products/mad/) 76 77Authors 78------- 79 80This program is maintained by K. Henriksson, who is the primary author 81from 2008 to present. 82 83The original maintainer and author was David Collett from 2006 to 2008. 84Much thanks to him for his original work. 85 86License 87------- 88 89This program can be distributed under the terms of the GNU GPL version 3 90or later. It can be found [online](http://www.gnu.org/licenses/gpl-3.0.html) 91or in the COPYING file. 92 93This file and other documentation files can be distributed under the terms of 94the GNU Free Documentation License 1.3 or later. It can be found 95[online](http://www.gnu.org/licenses/fdl-1.3.html) or in the COPYING.DOC file. 96