miniDLNA mit .m4b-Support auf dem BananaPi
Da ich gerne eine einfache und unkomplizierte DLNA Lösung haben wollte, hatte ich mir ja den BananaPi angeschafft. Nun bin ich endlich mal dazu gekommen, diesen richtig in Betrieb zu nehmen und habe das Debian installiert und den miniDLNA. Leider kennt der miniDLNA das Dateiformat „.m4b“ nicht, kann aber eingerichtet werden. Hinzu kommt, dass das Paket in den Debian-Repositories nicht mehr ganz aktuell ist und so kompilieren wir das eben selber.
Zuerst laden wir uns die aktuelle Version vom miniDLNA herunter:
wget http://downloads.sourceforge.net/project/minidlna/minidlna/1.1.4/minidlna-1.1.4.tar.gz
und mit
tar xzf minidlna-1.14.tar.gz
entdecken wir das ganze. Nun wechselt ihr in das Verzeichnis und editiert die Datei metadata.c und utils.c.
Patch anwenden
In der metadata.c sucht ihr nach
else if( ends_with(path, ".m4a") || ends_with(path, ".mp4") ||
und fügt vor dem zweiten ends_with ein
ends_with(path, ".m4b") ||
Die Zeile sollte dann so aussehen:
else if( ends_with(path, ".m4a") || ends_with(path, ".m4b") || ends_with(path, ".mp4") ||
In der utils.c sucht ihr euch die Zeile
ends_with(file, ".m4a") || ends_with(file, ".aac") ||
und fügt hier folgendes ein
ends_with(file, ".m4b")
Die Zeile sollte dann so aussehen:
ends_with(file, ".m4a") || ends_with(file, ".m4b") || ends_with(file, ".aac") ||
Bibliotheken installieren
Habt ihr beide Dateien erfolgreich editiert, müssen wir nun die Entwicklungsumgebung mit den passenden Bibliotheken installieren. Unter Debian geht das einfach mit
sudo apt-get install build-essentials ffmpeg libavutil-dev libavcodec-dev libavformat-dev libjpeg-dev libsqlite3-dev libexif-dev libid3tag0-dev libogg-dev libvorbis-dev libFLAC-dev gettext
Ganz wichtig ist gettext. Ohne dieses Tool schlug make immer fehl. Wenn das erledigt ist, könnt ihr mit
./configure
im miniDLNA Verzeichnis die Konfiguration prüfen. Falls doch noch ein Paket fehlen sollte, so installiert es einfach nach und führt ./configure erneut aus.
Mit einem
sudo make install
wird miniDLNA dann im Verzeichnis
/var/local/sbin
installiert. Eine Beispielkonfiguration minidlna.conf-Datei findet ihr im minidlna-Verzeichnis. Hier ist meine in Kurzform:
# miniDLNA Config File # 2015-01-05
# Port number for HTTP traffic (descriptions, SOAP, media transfer). port=8200 # nutzer und gruppe muss vorher angelegt werden user=minidlna # verzeichnisse media_dir=/var/lib/minidlna db_dir=/var/lib/minidlna log_dir=/var/log log_level=error # Name that the DLNA server presents to clients. friendly_name=Bananian-DLNA # Serial number the server reports to clients. serial=0192837465 # Model name the server reports to clients. model_name=Bananian-DLNA # Automatic discovery of new files in the media_dir directory. inotify=yes # List of file names to look for when searching for album art. Names should be # delimited with a forward slash ("/"). album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg # Support for streaming .jpg and .mp3 files to a TiVo supporting HMO. enable_tivo=no # Notify interval, in seconds. notify_interval=895
Dieses speichert ihr am besten in einer minidlna.conf Datei in eurem Home-Verzeichnis. Den Server startet ihr dann mit dem folgenden Befehl:
sudo /usr/local/sbin/minidlnad -f ˜/minidlna.conf
Wenn alles funktioniert hat, dann sieht das im Log so aus:
Sobald eine neue Datei hinzukommt, wird die Datenbank aktualisiert. Im VideoLanClient sieht das dann so aus:
Zum testen habe ich mir ein paar Videos von Youtube heruntergeladen. Einmal als .mp4, als .flv, als .mp3 und .ogg. Alle Dateien lassen sich ohne Verzögerung abspielen und auch das hin und herspringen in Musik und Video funktionieren gut.
Und bevor ich es vergesse, die .m4b-Dateien werden ebenfalls erkannt und gelistet. Nur hatte ich da den Screenshot schon fertig.
ToDo
Als nächstes will ich das am Fernseher testen und schauen, wie schnell dort die Sachen laden. Ausserdem kann mein TV auch Bilder anzeigen. Die Daten die ich habe in das richtige Format bringen, richtig benennen und mal richtig einsortieren. Meine Youtube-ToDownload-Playlist endlich herunterladen und im Netzwerk zur Verfügung stellen.
Für heute reicht es aber – genug gefummelt.