summaryrefslogtreecommitdiff
path: root/README
blob: c496c9452c9ee63bc6e4967c0225d11148b332f4 (plain)
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