gstfs-ng

A FUSE-based file system that works as a dynamic gstreamer-based transcoder
over an existing directory.
For example, this can make your FLAC music archive
appear as an MP3 or OGG archive.
Transcodings can be cached in memory and persisted to disk.

See COPYING for license, ChangeLog for history.

See man page (man ./gstfs-ng.8) for details,
from which the following is extracted:

       gstfs-ng  is  a  read-only  filesystem  that  acts as a gstreamer-based
       transcoding facade (visible at MOUNTPOINT) over an existing  BASEDIREC‐
       TORY tree.

       Perhaps gstfs-ng is best explained by an example use case:

       A  music  archive stored on a computer might enjoy ample space for disk
       storage and, therefore, the archive  maintainer  might  choose  a  high
       quality  lossless encoding to store content.  For lack of storage, how‐
       ever, the same archive might not fit on a  portable  media  player.   A
       portable  media  player might require a lower quality lossy encoding to
       store the complete archive.

       In order to balance the needs between quality and size,  one  might  be
       tempted  to  store both a high quality lossless and a low quality lossy
       archive on their computer.  This, of course, requires additional  stor‐
       age  on  the computer and presents the archive maintainer with synchro‐
       nization problems.

       gstfs-ng helps by allowing one archive type appear as another.  In this
       case,  it  allows the large high quality archive to appear as a smaller
       low quality one.  To make this happen, gstfs-ng must be told where  the
       base  of  the  original archive is, where the transcoded archive should
       appear and the transcodings that should take place between them.

       The transcodings that are to occur are specified as transcode mappings.
       Each mapping must specify a source extension (e.g. source=flac), a tar‐
       get extension (e.g. target=ogg) and a  gstreamer  pipeline  description
       that can be used to perform the transcoding.  gstfs-ng can perform many
       such mappings at once as long as the source to target file name  exten‐
       sion  mapping  is one-to-one.  gstfs-ng creates a new transcode mapping
       as soon as it has all three components and then prepares to  build  the
       next.

       While  gstfs-ng  relies on fuse (Filesystem in Userspace) technology to
       allow transcoded  files  to  appear  as  a  filesystem,  it  relies  on
       gstreamer  technology to actually perform the transcodings.  This means
       that that type of transcodings that gstfs-ng can perform are only  lim‐
       ited  by the capabilities of (audio/video/tagging formats supported by)
       the installed gstreamer implementation.

       gstfs-ng is dependent on gstreamer-1.0 interfaces as of  gstfs-ng  ver‐
       sion 1.0.