Skip to content

gburca/mediatomb

 
 

Repository files navigation

Gerbera - UPnP Media Server

Current Release Build Status Docker Version Documentation Status IRC

Gerbera is a UPnP media server which allows you to stream your digital media through your home network and consume it on a variety of UPnP compatible devices.

Pull requests are very welcome and reporting issues is encouraged.

Gerbera was originally based on MediaTomb

Documentation

View our documentation online at http://docs.gerbera.io.

Features

  • Browse and playback your media via your network on all kinds of devices.
  • Web UI with a tree view of the database and the file system, allowing to add/remove/edit/browse your media
  • Metadata extraction from MP3, OGG, AAC, M4A, FLAC, JPG (and many more!) files.
  • Media thumbnail support
  • Highly flexible media format transcoding via plugins / scripts
  • Automatic directory rescans (timed, inotify)
  • User defined server layout based on extracted metadata
  • Supports last.fm scrobbing
  • On the fly video thumbnail generation
  • Support for external URLs (create links to internet content and serve them via UPnP to your renderer)
  • Runs on Linux, BSD, Mac OS X, and more!
  • Runs on x86, ARM, MIPS, and more!

Installing

Head over to the docs page on Installing Gerbera.

Building

Gerbera uses CMake.

Quick start build instructions:

# Assuming Ubuntu base
git clone https://github.com/gerbera/gerbera.git
mkdir build
cd build
cmake ../gerbera -DWITH_MAGIC=1 -DWITH_MYSQL=1 -DWITH_CURL=1 -DWITH_JS=1 \
-DWITH_TAGLIB=1 -DWITH_AVCODEC=1 -DWITH_FFMPEGTHUMBNAILER=1 -DWITH_EXIF=1 -DWITH_LASTFM=1
make -j4
sudo make install

Alternatively, the options can be set using a GUI (make sure to press "c" to configure after toggling settings in the GUI):

git clone https://github.com/gerbera/gerbera.git
mkdir build
cd build
cmake ../gerbera
make edit_cache
# Enable some of the WITH... options
make -j4
sudo make install

Install prerequisites.

On Ubuntu 18.04

  • The default cmake is too old. We need to install the latest:
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null \
  | gpg --dearmor - \
  | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'
sudo apt-get install cmake
  • Install GCC 9:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-9
  • libspdlog-dev is built with an internal version of libfmt. It needs to be re-built with SPDLOG_FMT_EXTERNAL so it doesn't conflict with gerbera's libfmt.
  • libspdlog 1.7.0 requires libfmt 5.3.0 (apt install libfmt-dev installs version 4.0.0), gerbera requires libfmt 7.0.0 the apt installed version is too old.
sudo apt-get install autoconf uuid-dev libtool libpugixml-dev \
  libsqlite3-dev duktape-dev libcurl4-openssl-dev libtaglib-cil-dev \
  libtag1-dev libmagic-dev libexif-dev libebml-dev zlib1g-dev
sudo ./scripts/install-pupnp.sh
sudo ./scripts/install-fmtlib.sh
sudo ./scripts/install-spdlog.sh
env CXX=g++-9 CC=gcc-9 cmake .. -DWITH_MYSQL=0 -DWITH_MATROSKA=0

On Ubuntu 16.04

apt-get install uuid-dev libsqlite3-dev libmysqlclient-dev \
libmagic-dev libexif-dev libcurl4-openssl-dev libspdlog-dev libpugixml-dev
# If building with LibAV/FFmpeg (-DWITH_AVCODEC=1)
apt-get install libavutil-dev libavcodec-dev libavformat-dev libavdevice-dev \
libavfilter-dev libavresample-dev libswscale-dev libswresample-dev libpostproc-dev

The following packages are too old in 16.04 and must be installed from source: taglib (1.11.x), and libupnp (1.12.x).

libupnp must be configured/built with --enable-ipv6. See scripts/install-pupnp.sh for details.

On macOS

The Gerbera Team maintains a Homebrew Tap to allow for easy installation of Gerbera Media Server on macOS.

https://github.com/gerbera/homebrew-gerbera

Dependencies

Lib Version Required? Note Compile-time option Default
libupnp >=1.12.1 XOR libnpupnp pupnp
libnpupnp >=4.0.11 XOR libupnp [nppupnp]
libuuid Depends on OS On *BSD native libuuid is used, others require e2fsprogs-libuuid
pugixml Required pugixml
libiconv Required
sqlite3 Required Database storage
zlib Required
fmtlib 7.0.0 Required
spdlog 1.7.0 Required
duktape 2.1.0 Optional Scripting Support WITH_JS Enabled
mysql Optional Alternate database storage WITH_MYSQL Disabled
curl Optional Enables web services WITH_CURL Enabled
taglib 1.11.1 Optional Audio tag support WITH_TAGLIB Enabled
libmagic Optional File type detection WITH_MAGIC Enabled
libmatroska Optional MKV metadata WITH_MATROSKA Enabled
ffmpeg/libav Optional File metadata WITH_AVCODEC Disabled
libexif Optional JPEG Exif metadata WITH_EXIF Enabled
libexiv2 Optional Exif, IPTC, XMP metadata WITH_EXIV2 Disabled
lastfmlib 0.4.0 Optional Enables scrobbling WITH_LASTFM Disabled
ffmpegthumbnailer Optional Generate video thumbnails WITH_FFMPEGTHUMBNAILER Disabled
inotify Optional Efficient file monitoring WITH_INOTIFY Enabled

Licence

GPLv2

Copyright (C) 2005
   Gena Batyan <bgeradz at mediatomb dot cc>
   Sergey Bostandzhyan <jin at mediatomb dot cc>

Copyright (C) 2006-2008
   Gena Batyan <bgeradz at mediatomb dot cc>
   Sergey Bostandzhyan <jin at mediatomb dot cc>
   Leonhard Wimmer <leo at mediatomb dot cc>

Copyright (C) 2016-2020
    Gerbera Contributors

Packages

No packages published

Languages

  • C++ 72.9%
  • JavaScript 17.6%
  • CMake 3.8%
  • HTML 2.2%
  • C 1.6%
  • CSS 0.6%
  • Other 1.3%