Merge branch 'develop' of github.com:epoupon/lms into develop
This commit is contained in:
@@ -1,70 +1 @@
|
|||||||
LMS - Lightweight Media Server
|
See README.md
|
||||||
|
|
||||||
|
|
||||||
LMS is a self-hosted media streaming software, released under the GPLv3 license.
|
|
||||||
It allows you to access your music and your videos using an https web interface.
|
|
||||||
|
|
||||||
Features:
|
|
||||||
- Winamp-like interface, suited for large databases
|
|
||||||
- Audio/Video transcode for maximum interoperability and low bandwith requirements
|
|
||||||
- User management
|
|
||||||
- LMS API available in Protocol Buffers (see src/lms-api/proto/messages.proto)
|
|
||||||
|
|
||||||
Please note LMS is still under development and will gain more features in the future.
|
|
||||||
A mobile application based on Kivy is being developped as well.
|
|
||||||
|
|
||||||
LMS is written entirely in C++. Therefore, it is suitable to run on embedded devices, where space and/or memory are limited.
|
|
||||||
Please note some media files may require significant CPU usage to be transcoded.
|
|
||||||
|
|
||||||
I) DEPENDENCIES
|
|
||||||
|
|
||||||
Debian packages:
|
|
||||||
g++ autoconf automake libboost-dev libavcodec-dev libwtdbosqlite-dev libwthttp-dev libwtdbo-dev libwt-dev libprotobuf-dev libconfig++-dev libprotobuf-dev protobuf-compiler libjpeg8-dev libavcodec-dev libavformat-dev libavutil-dev
|
|
||||||
|
|
||||||
Warning: your distrib may provide an outdated wt library. Using the latest Wt (>= 3.3.3) is highly recommended (see http://www.webtoolkit.eu/wt)
|
|
||||||
|
|
||||||
|
|
||||||
II) BUILD
|
|
||||||
|
|
||||||
# autoreconf -vfi
|
|
||||||
# mkdir build
|
|
||||||
# cd build
|
|
||||||
# ../configure
|
|
||||||
|
|
||||||
(configure will complain if a mandatory library is missing)
|
|
||||||
|
|
||||||
The configure script allows you to disable the LMS API support (and protobuf dependencies)
|
|
||||||
See 'configure --help' for more information.
|
|
||||||
|
|
||||||
# make
|
|
||||||
|
|
||||||
III) Setting up SSL materials (required by the SSL server and the web server)
|
|
||||||
|
|
||||||
This is just a self signed certificate example, you could do use a CA if you want.
|
|
||||||
|
|
||||||
Generate a dh file:
|
|
||||||
# openssl dhparam -out dh2048.pem 2048
|
|
||||||
|
|
||||||
Generate a self signed certificate:
|
|
||||||
# openssl req -x509 -out cert.pem -keyout privkey.pem -newkey rsa:4096
|
|
||||||
|
|
||||||
|
|
||||||
IV) RUNNING
|
|
||||||
|
|
||||||
In the build directory:
|
|
||||||
# ./src/lms lms.conf
|
|
||||||
|
|
||||||
Create the lms.conf file using the etc/lms.sample.conf
|
|
||||||
- "ui.resources.approot" has to refer to the ui/approot/ directory.
|
|
||||||
- "ui.resources.docroot" has to refer to the ui/docroot/ directory
|
|
||||||
You must also link Wt's docroot (usually located in /usr/share/Wt) into that directory. Example:
|
|
||||||
# ln -s /var/lms/docroot/resources /usr/share/Wt/resources
|
|
||||||
|
|
||||||
Depending on your SSL parameters, you may be asked for the PEM passphrase to unlock the private key.
|
|
||||||
|
|
||||||
V) LINKS
|
|
||||||
|
|
||||||
- Wt (http://www.webtoolkit.eu/)
|
|
||||||
- bootstrap3 (http://getbootstrap.com/)
|
|
||||||
- libav project (https://www.libav.org/).
|
|
||||||
- Protocol Buffers (https://github.com/google/protobuf/)
|
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
# LMS - Lightweight Media Server
|
||||||
|
|
||||||
|
LMS is a self-hosted media streaming software, released under the GPLv3 license.
|
||||||
|
It allows you to access your music and your videos using an https web interface.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
- Winamp-like interface, suited for large databases
|
||||||
|
- Audio/Video transcode for maximum interoperability and low bandwith requirements
|
||||||
|
- User management
|
||||||
|
- LMS API available in Protocol Buffers (see src/lms-api/proto/messages.proto)
|
||||||
|
|
||||||
|
Please note LMS is still under development and will gain more features in the future.
|
||||||
|
|
||||||
|
LMS is written entirely in C++. Therefore, it is suitable to run on embedded devices, where space and/or memory are limited.
|
||||||
|
Please note some media files may require significant CPU usage to be transcoded.
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
### Debian or Ubuntu packages
|
||||||
|
```sh
|
||||||
|
$ apt-get install g++ autoconf automake libboost-dev libboost-locale-dev libboost-iostreams-dev libboost-log-dev libavcodec-dev libwtdbosqlite-dev libwthttp-dev libwtdbo-dev libwt-dev libconfig++-dev libjpeg8-dev libavcodec-dev libavformat-dev libavutil-dvegi libav-tools
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to enable the LMS API, you need these additional packages:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ apt-get install libprotobuf-dev libprotobuf-dev protobuf-compiler
|
||||||
|
```
|
||||||
|
|
||||||
|
Warning: your distrib may provide an outdated wt library. Using the latest Wt (>= 3.3.3) is highly recommended (see http://www.webtoolkit.eu/wt)
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ autoreconf -vfi
|
||||||
|
$ mkdir build
|
||||||
|
$ cd build
|
||||||
|
$ ../configure
|
||||||
|
```
|
||||||
|
|
||||||
|
configure will complain if a mandatory library is missing.
|
||||||
|
|
||||||
|
The configure script allows you to disable the LMS API support, see 'configure --help' for more information.
|
||||||
|
```sh
|
||||||
|
$ make
|
||||||
|
```
|
||||||
|
|
||||||
|
## Setting up SSL materials
|
||||||
|
This is required by the SSL server and the web server.
|
||||||
|
|
||||||
|
Here is just a self signed certificate example, you could do use a CA if you want.
|
||||||
|
|
||||||
|
Generate a dh file:
|
||||||
|
```sh
|
||||||
|
$ openssl dhparam -out dh2048.pem 2048
|
||||||
|
```
|
||||||
|
|
||||||
|
Generate a self signed certificate:
|
||||||
|
```sh
|
||||||
|
$ openssl req -x509 -out cert.pem -keyout privkey.pem -newkey rsa:4096
|
||||||
|
```
|
||||||
|
|
||||||
|
## Running
|
||||||
|
|
||||||
|
In the build directory:
|
||||||
|
```sh
|
||||||
|
$ ./src/lms lms.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
Create the lms.conf file using the etc/lms.sample.conf
|
||||||
|
- "ui.resources.approot" has to refer to the ui/approot/ directory.
|
||||||
|
- "ui.resources.docroot" has to refer to the ui/docroot/ directory
|
||||||
|
You must also link Wt's docroot (usually located in /usr/share/Wt) into that directory. Example:
|
||||||
|
```sh
|
||||||
|
ln -s /var/lms/docroot/resources /usr/share/Wt/resources
|
||||||
|
```
|
||||||
|
|
||||||
|
Depending on your SSL parameters, you may be asked for the PEM passphrase to unlock the private key.
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
- Wt (http://www.webtoolkit.eu/)
|
||||||
|
- bootstrap3 (http://getbootstrap.com/)
|
||||||
|
- libav project (https://www.libav.org/).
|
||||||
|
- Protocol Buffers (https://github.com/google/protobuf/)
|
||||||
|
73,1 Bot
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
- add a global play counter for tracks. This will help people to spot most popular files
|
- add a global play counter for tracks. This will help people to spot most popular files
|
||||||
- rework the exception process in av/metadata/updater in case of bad files
|
- rework the exception process in av/metadata/updater in case of bad files
|
||||||
- Use the WServer::post method to notify the end of the database scan? (with results?)
|
- Use the WServer::post method to notify the end of the database scan? (with results?)
|
||||||
|
- Put more config information in the database, access from the UI
|
||||||
|
|
||||||
[Metadata]
|
[Metadata]
|
||||||
- OGG metadata -> properly handle metadata nested in the audio stream
|
- OGG metadata -> properly handle metadata nested in the audio stream
|
||||||
|
|||||||
@@ -585,7 +585,7 @@ Updater::processRootDirectory(RootDirectory rootDirectory, Stats& stats)
|
|||||||
if (!_running)
|
if (!_running)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!boost::filesystem::is_regular(*itPath))
|
if (boost::filesystem::is_regular(*itPath))
|
||||||
{
|
{
|
||||||
switch( rootDirectory.type )
|
switch( rootDirectory.type )
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user