CMP - Compound Media Player =========================== 2012 (c) Reinhard Mantey - some rights reserved. The project is published under the license of cc-by-sa consists of: ------------ cmps - compound media player server cmpc - compound media player client cmps (the server part) ---------------------- scans the given media root directory (default /media) and offers the result as list in html- and json-format. The lists contain an url for the media, which can be streamed by using http-protocol. No external tools are used at server side. The libraries I use are libssl, libcrypto and libstdc++ As parts of the server libraries are work from vdr, cmps inherits some dependencies of vdr (i.e. libpthread and librt). So the complete (runtime) dependencies of cmps are: libpthread librt libssl libcrypto libstdc++ libpcrecpp cmps supports these commandline parameters: -h, --help the help, you are reading -d, --appDir the directory, where the server may write config files (default is /var/lib/cmp) -r, --realm absolute path to credential file. That file must be writable to enable remote administration of principals (default is no file / no authorization required) - configuration (srserver.conf) server configuration is put into a config file, so remote administration can be worked out (some day). Within config-files, each line that starts with '#' will be treaten as comment. Each config line has the format: 'name' = 'value' These are the supported entries: - media-root contains the absolute path of the directory where scanning for media will start - favicon the absolute path to a icon that serves to identify the server using standard webbrowsers - cmps-port the backend port, where clients can connect to - want-auth flag to signal, whether the server should require authorization - want-meta flag to enable deeper scan for media informations. If set to false, only information from filesystem will be used. Enabling the scan for meta information will slow down the media scan. - mediainfo the absolute path to mediainfo (external tool to retrieve info) - ffmpeg the absolute path to ffmpeg, which will be used to retrieve media information too (on some media types). A sample server configuration file might look like: # # config for cmps - the backend of CMP # media-root = /media favicon = /media/favicon.ico cmps-port = 9000 want-auth = true want-meta = true mediainfo = /usr/bin/mediainfo ffmpeg = /usr/local/bin/ffmpeg > attribution: cmps uses some classes from the vdr-project, a project of Klaus Schmidinger, located at http://tvdr.de cmpc (the client) ----------------- *tbd* cmpcj (a java client) --------------------- is the butler between mediaserver (cmps) and mediaplayer and offers several filters on the medialist. The list of mediaservers and the mediaplayers to use are user configurable. The first screen offers the selection of the mediaserver to use. Next screen shows the medialist (if the server is online). That list can be filtered by mediatype and/or free text, where the text may match the (invisible) path of the media. A doubleclick on a mediaitem starts the player - cmpc (the client) stays blocked until the player stops. > attribution: cmpcj uses glazedlists from http://www.glazedlists.com and jackson from http://jackson.codehaus.org The used folder icons are from http://www.iconfinder.com/search/?q=iconset%3Asabre where as the vdr- and dvd-icons are built on my own (based on the work from above) The C/C++ libraries ------------- 1. libs/vdr ----------- contains classes from the vdr project, some of them extended For each file Klaus Schmidinger is the original author and the copyright holder. All his files are published following the GPL 2.0 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) 2. libs/util ------------ basic helper classes, used by other libs 3. libs/IO ----------- filesystem abstraction and basic input/output 4. libs/networking ------------------ classes to handle sockets and i.e. http protocol 5. fsScan --------- classes around filesystem scanning, and media base classes 6. cmps/serverlib ----------------- classes used by backend only