dmapd

The dmapd project provides a GObject-based, Open Source implementation of DMAP sharing with the following features:

  • Support for both DAAP and DPAP
  • Support for realtime transcoding of media formats not natively supported by clients
  • Support for many metadata formats, such as those associated with Ogg Vorbis and MP3 (e.g., ID3)
  • Detection of video streams so that clients may play them as video
  • Use of GStreamer to support a wide range of audio and video CODECs
  • Caching of photograph thumbnails to avoid regenerating them each time the server restarts

Dmapd runs on Linux and other POSIX operating systems. It has been used on OpenWrt Linux-based systems with as little as 32MB of memory to serve music, video, and photograph libraries containing thousands of files.

Dmapd supports the following command line options:

-?, --help
Show help options
-f, --foreground
Do not fork; remain in foreground
-n, --name
Name of media shares
-m, --music-dir
Music directory
-p, --picture-dir
Picture directory
-M, --music-format
Acceptable music format
-P, --picture-format
Acceptable picture format
-l, --lockpath
Path to lockfile
-i, --pidpath
Path to PID file
-d, --db-dir
Media database directory
-u, --user
User to run as
-g, --group
Group to run as
-t, --transcode-mime-type
Target MIME type for transcoding
-r, --rt-transcode
Perform transcoding in real-time
-w, --max-thumbnail-width
Maximum thumbnail size (may reduce memory use)
-c, --directory-containers
Serve DMAP containers based on filesystem heirarchy

Dmapd supports the following environment variables:

DMAPD_DEBUG
Enable verbose debugging messages
DMAPD_CONFIG_FILE
Path to an alternate configuration file
DMAPD_MODULEDIR
Directory containing dmapd modules
DMAPD_AV_META_READER_MODULE
Name of an alternate AV module
DMAPD_AV_RENDER_MODULE
Name of an alternate AV render module; when applicable may also specify a host, e.g.: DMAPD_AV_RENDER_MODULE=gst:host=192.168.0.1
DMAPD_PHOTO_META_READER_MODULE
Name of an alternate photograph module
DMAPD_DB_MODULE
Name of an alternate database module

Dmapd can provide content to any client that supports DAAP or DPAP. This includes the following software clients and hardware devices:

Dmapd can read metadata from any music file supported by GStreamer. In order to use this feature you must have the appropriate GStreamer plugins installed. The following plugins are always required if you wish to use this feature:

  • app
  • decodebin
  • typefindfunctions

The following GStreamer plugins are required for the corresponding media types:

  • mad (MP3)
  • id3demux (MP3)
  • ogg (Ogg Vorbis, etc.)
  • vorbis (Ogg Vorbis)
  • flac (FLAC)
  • mpeg2dec (MPEG video)
  • theora (Ogg Theora video)

The dmapd project is also available as a Git repository. To clone the repository, execute

git clone https://www.flyn.org/git/dmapd