1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
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 <path> the directory, where the server may write config files
(default is /var/lib/cmp)
-r, --realm <path> 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
|