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:

miniDLNA Log

Sobald eine neue Datei hinzukommt, wird die Datenbank aktualisiert. Im VideoLanClient sieht das dann so aus:

miniDLNA im VLC

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.

Banana Pi – Bananian Distribution

Bananian Linux

Nach dem kläglichen Versuch Android zum laufen zu bringen habe ich mir das Bananian-Image heruntergeladen. Die Macher der Bananian-Distribution sind mit LeMaker eine Verbindung eingegangen und sind somit offizielle Partner von LeMaker. Das aktuelle Release 14.11 kann auf der Webseite von bananian.org heruntergeladen werden. Bananian basiert auf Debian 7 und beinhaltet die kompletten ‚Debian 7 wheezy armhf‘ Pakete und für den Banana Pi optimiert.

Das Release ist ziemlich klein. Mit nur 300 MB im Download und ca 2 GB auf der Festplatte, lässt es sich innerhalb  weniger als 5 Minuten auf der SD Karte installieren. Öffnet dazu ein Terminal und gebt folgenden Befehl ein:

carstens-air:~ carsten$ diskutil list

Damit bekomme ich folgende Übersicht

/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage                         250.1 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS SSD                    *249.8 GB   disk1
                                 Logical Volume on disk0s2
                                 ********-****-****-****-************
                                 Unlocked Encrypted
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *16.0 MB    disk2
   1:        Apple_partition_map                         32.3 KB    disk2s1
   2:                  Apple_HFS Flash Player            16.0 MB    disk2s2
/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *4.0 GB     disk3
   1:                        EFI EFI                     209.7 MB   disk3s1
   2:       Microsoft Basic Data sdcard                  3.8 GB     disk3s2

Damit werden die Speichermedien aufgelistet. Die Speicherkarte ist 4GB groß und hier bei mir ist es die Karte mit der Bezeichnung /dev/disk3. Falls ihr schon ein System auf der Speicherkarte habt, müsst ihr diese erst mit formatieren. Das kann man auch mit Hilfe der Konsole machen:

carstens-air:~ carsten$ diskutil eraseDisk exfat sdcard /dev/disk3

Kontrolliert lieber die Angaben lieber dreimal bevor ihr aus Versehen eure Festplatte löscht.

Ist das geschehen, können wir die SD Karte auswerfen und mit ‚dd‘ das Image auf die SD Karte schreiben:

carstens-air:~ carsten$ diskutil unmountDisk /dev/disk3
Unmount of all volumes on disk3 was successful
carstens-air:~ carsten$ sudo dd bs=1m if=Downloads/bananian-1411.img of=/dev/rdisk3

Ich habe hier das Device ‚/dev/rdisk3‚ gewählt. Das ‚r‚ steht für das raw-Device und das Beschreiben dauert nicht sehr lange. Um genau zu sein, dauert es nur knapp 4 Minuten anstelle von 20 Minuten.

Medium konnte nicht erkannt werden.

Sobald das Image auf der SD Karte ist und alles funktioniert hat, erscheint folgender Dialog. Hier klickt ihr einfach auf ‚Auswerfen‘, steckt die Karte dann in den Banana Pi stecken und alles anschließen und starten. Nach ein paar Sekunden erscheint dann auch der Login und ihr könnte euch mit ‚root / pi‘ anmelden und loslegen.

Als erstes solltet ihr mit ‚bananian-update‘ ausführen um zu aktualisieren und dann ‚bananian-config‘ das System einzurichten. Tastaturlayout, Zeitzone, hostname, root-Passwort kann nun eingerichtet werden. Zusätzlich kann man sich den restlichen Speicher der SD Karte wieder zurückholen. Das Image war ja nur 2 GB groß und meine 4 GB Karte kann ich nun voll nutzen.

Die Installation der Pakete und die Konfiguration eines Basis-Systems schreibe ich später auf.