gerbera
UPnP Media Server for 2024: Stream your digital media through your home network and consume it on all kinds of UPnP supporting devices 📱💻📺
Top Related Projects
Convenient unified display of the most relevant technical and tag data for video and audio files.
The Free Software Media System
Kodi is an award-winning free and open source home theater/media center software and entertainment hub for digital media. With its beautiful interface and powerful skinning engine, it's available for Android, BSD, Linux, macOS, iOS, tvOS and Windows.
Quick Overview
Gerbera is an open-source UPnP media server that allows you to stream your digital media through your home network and consume it on a variety of UPnP compatible devices. It is designed to be fast, lightweight, and feature-rich, supporting a wide range of media formats and offering flexible organization options for your media library.
Pros
- Cross-platform compatibility (Linux, FreeBSD, macOS, and more)
- Extensive media format support, including audio, video, and images
- Flexible metadata extraction and organization options
- Active development and community support
Cons
- Setup and configuration can be complex for beginners
- Limited official documentation for advanced features
- May require additional dependencies for full functionality
- Performance can vary depending on hardware and library size
Getting Started
To get started with Gerbera, follow these steps:
-
Install Gerbera on your system:
# For Ubuntu/Debian sudo apt-get install gerbera
-
Start the Gerbera service:
sudo systemctl start gerbera
-
Access the web interface at
http://localhost:49152
-
Configure your media directories in the web interface under "Filesystem"
-
Scan your media library:
gerbera --add-file /path/to/your/media
For more detailed instructions and configuration options, refer to the official Gerbera documentation at https://docs.gerbera.io/.
Competitor Comparisons
Convenient unified display of the most relevant technical and tag data for video and audio files.
Pros of MediaInfo
- Specialized in media file analysis and metadata extraction
- Supports a wide range of audio and video formats
- Provides detailed technical information about media files
Cons of MediaInfo
- Limited to media analysis and doesn't offer media server functionality
- May require additional tools for media management and streaming
Code Comparison
MediaInfo (C++):
MediaInfo MI;
MI.Open(FileName);
String To_Display = MI.Inform();
MI.Close();
Gerbera (C++):
auto config = ConfigManager::createConfig();
auto server = Server::create(config);
server->run();
Summary
MediaInfo focuses on media file analysis and metadata extraction, offering detailed technical information about various audio and video formats. It's a specialized tool for understanding media file properties.
Gerbera, on the other hand, is a full-fledged UPnP media server that can organize and stream media content across a network. It offers broader functionality for media management and playback.
While MediaInfo excels in providing in-depth media file information, Gerbera is better suited for users looking to set up a complete media server solution. The choice between the two depends on whether you need detailed media analysis or a comprehensive media server system.
The Free Software Media System
Pros of Jellyfin
- More comprehensive media server solution with support for various media types (video, audio, photos)
- Larger and more active community, resulting in frequent updates and broader device support
- Built-in transcoding capabilities for better compatibility across devices
Cons of Jellyfin
- Higher resource requirements due to its more extensive feature set
- Steeper learning curve for setup and configuration compared to Gerbera
- May be overkill for users who only need basic DLNA functionality
Code Comparison
Gerbera (C++):
void ContentManager::addFile(const fs::path& path, const std::shared_ptr<AutoscanDirectory>& adir, bool async, bool lowPriority, bool cancellable)
{
// File addition logic
}
Jellyfin (C#):
public async Task<BaseItem> CreateItem(CreateItemRequest request, CancellationToken cancellationToken)
{
// Item creation logic
}
Both projects use different programming languages and architectures, making direct code comparison challenging. Gerbera focuses on DLNA/UPnP media serving, while Jellyfin offers a more comprehensive media server solution with additional features and a web-based interface.
Kodi is an award-winning free and open source home theater/media center software and entertainment hub for digital media. With its beautiful interface and powerful skinning engine, it's available for Android, BSD, Linux, macOS, iOS, tvOS and Windows.
Pros of XBMC
- More comprehensive media center solution with a full-featured GUI
- Supports a wider range of media types and formats
- Larger community and more extensive plugin ecosystem
Cons of XBMC
- Heavier resource usage due to its full-featured nature
- More complex setup and configuration process
- Steeper learning curve for users and developers
Code Comparison
XBMC (C++):
bool CVideoPlayer::OpenDemuxStream()
{
if (m_pDemuxer)
{
m_pDemuxer->Open(m_item.GetDemuxResource());
return true;
}
return false;
}
Gerbera (C++):
void ContentManager::addFile(const fs::path& path, bool async, bool hidden)
{
auto dir = fs::path(path).parent_path();
auto dirEnt = findDir(dir);
if (!dirEnt)
throw_std_runtime_error("Could not find parent directory");
addFileInternal(dirEnt, path, async, hidden);
}
Both projects use C++ and handle media-related functionality, but XBMC focuses on playback and user interface, while Gerbera emphasizes media serving and organization. XBMC's codebase is more extensive and complex, reflecting its broader feature set, while Gerbera's code is more focused on UPnP/DLNA server functionality.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Gerbera - UPnP Media Server
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.
Documentation
View our documentation online at https://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, wavpack, 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 for instructions on how to install Gerbera.
Building
Visit our docs for instructions to Compile Gerbera or Compile latest Gerbera.
Quick start build instructions:
git clone https://github.com/gerbera/gerbera.git
mkdir build
cd build
cmake ../gerbera -DWITH_DEBUG=YES
make -j4
sudo make install
Dependencies
Library | Min Version | Recommended | Latest tested | Required? | Note | Default |
---|---|---|---|---|---|---|
libupnp | 1.14.6 | 1.14.20 | 1.14.20 | XOR libnpupnp | pupnp | |
libnpupnp | 4.2.1 | 5.1.2 | 6.2.0 | XOR libupnp | npupnp | Disabled |
libuuid | Depends on OS | Not required on *BSD | ||||
pugixml | 1.10 | 1.14 | Required | XML file and data support | ||
libiconv | Required | Charset conversion | ||||
sqlite3 | 3.7.0 | 3.35.5 | 3.36.0 | Required | Database storage | |
zlib | Required | Data compression | ||||
fmtlib | 7.1.3 | 9.1.0 | 11.0.2 | Required | Fast string formatting | |
spdlog | 1.8.1 | 1.11.0 | 1.14.1 | Required | Runtime logging | |
duktape | 2.1.0 | 2.6.0 | 2.7.0 | Optional | Scripting Support | Enabled |
mysql | Optional | Alternate database storage | Disabled | |||
curl | Optional | Enables web services | Enabled | |||
taglib | 1.12 | 1.12 | 2.0.2 | Optional | Audio tag support | Enabled |
libmagic | Optional | File type detection | Enabled | |||
wavpack | 5.1.0 | 5.4.0 | 5.7.0 | Optional | WavPack metadata support | Disabled |
libmatroska | 1.6.3 | 1.7.1 | Optional | MKV metadata | Enabled | |
libebml | 1.4.2 | 1.4.5 | Optional | requird by libmatroska | Enabled | |
ffmpeg/libav | Optional | File metadata | Disabled | |||
libexif | v0.6.24 | v0.6.24-90-g2ed252d | Optional | JPEG Exif metadata | Enabled | |
libexiv2 | v0.26 | v0.27.7 | v0.28.3 | Optional | Exif, IPTC, XMP metadata | Disabled |
lastfmlib | 0.4.0 | 0.4.0 | 0.4.0 | Optional | Enables scrobbling | Disabled |
ffmpegthumbnailer | 2.2.2 | 2.2.3 | Optional | Generate video thumbnails | Disabled | |
inotify | Optional | Efficient file monitoring | Enabled |
Development Dependencies
Library | Min Version | Recommended | Latest tested | Required? | Note | Default |
---|---|---|---|---|---|---|
googletest | 1.10.0 | 1.10.0 | 1.15.2 | Optional | Running tests | Disabled |
doxygen | 1.8.14 | 1.8.14 | Optional | Building source documentation | Disabled |
License
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-2024
Gerbera Contributors
Top Related Projects
Convenient unified display of the most relevant technical and tag data for video and audio files.
The Free Software Media System
Kodi is an award-winning free and open source home theater/media center software and entertainment hub for digital media. With its beautiful interface and powerful skinning engine, it's available for Android, BSD, Linux, macOS, iOS, tvOS and Windows.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot