DLNA Mediaserver

Streaming media zijn media die rechtstreeks via computernetwerken (zoals het internet) worden gedistribueerd. Het proces wordt streamen genoemd en wordt gebruikt bij het webcasten en is een populaire distributiemethode bij het op verzoek bekijken van webvideo's. Tijdens het streamen wordt continu een gedeelte van de data in een buffer geplaatst, opdat een programma dit kan afspelen. Hierdoor kunnen de ontvangen media (video en audio) direct geconsumeerd worden zonder dat de gehele uitzending gedownload is.

Het UPnP-AV-protocol is specifiek ontworpen om multimediabestanden (audio, video en afbeeldingen) te streamen. Het wordt door heel wat apparaten ondersteund: AV-receivers, smart tv's, smartphones, enz.

Om bestanden via UPnP te streamen vanaf een Raspberry Pi moet je een zogenaamde UPnP media server installeren. Op Wikipedia vind je een ellenlange lijst van dergelijke software. Beperken we ons tot software die nog actief ontwikkeld wordt, geen al te hoge systeemeisen stelt en eenvoudig te installeren is, dan blijft er heel wat minder keuze over! ReadyMedia - het vroegere MiniDLNA - wordt door Netgear ontwikkeld voor gebruik in zijn ReadyNAS-apparaten. Dat biedt verschillende voordelen:

Nadelen zijn er natuurlijk ook. Zo kan ReadyMedia geen mediabestanden on-the-fly transcoderen naar een ander formaat. Transcoding is erg handig als de UPnP-client het formaat van het bronbestand niet ondersteunt. Bijvoorbeeld: de mediaserver bevat een muziekcollectie in FLAC-formaat en een bepaalt apparaat speelt enkel MP3- en WAV-bestanden af. Een transcoding media server zet in dit geval het FLAC-bestand om in WAV-formaat zonder dat de client daar iets van merkt. Maar het transcoderen - met name van videobestanden - is erg processor-intensief. Dat is wellicht geen probleem als je ReadyMedia op je desktop of laptop installeert. Maar wil je die apparaten steeds inschakelen om een film te streamen naar je mediacenter? Het is veel handiger om een Raspberry Pi in je meterkast te installeren. De Pi gebruikt zo weinig stroom dat je ze probleemloos dag en nacht kan laten draaien. Sluit er een externe schijf op aan en je hebt je eigen homeserver om je mediacollectie te bewaren.

Zolang je geen video wilt transcoderen, is een Pi dus prima geschikt als UPnP-AV media server. Ga dus na welke audio- en videoformaten er allemaal in je mediacollectie aanwezig zijn. Controleer meteen of die formaten ook ondersteund worden door Kodi en eventueel andere apparaten waarop je ze wilt afspelen. Zitten er bepaalde bestanden tussen die niet afgespeeld kunnen worden? Converteer ze dan éénmalig naar een ondersteund formaat met applicaties zoals Handbrake (voor video) of LameXP (voor audio). Zo vermijd je onaangename verrassingen achteraf.

Installatie

Om de DLNA-server straks te testen zorgen we voor mediabestanden op de Raspberry Pi. Natuurlijk kan je zelf voor multimedia zorgen, maar wie wat testmateriaal nodig heeft, kan dlna.zip downloaden en uitpakken. Met Filezilla (of een andere SFTP client) kopieer je de albums Marcin Szczepankiewicz - Moonlight Piano en Celadon Candy - Celadonia naar de map Music in de thuismap van de gebruiker op de Raspberry Pi. De map Nature Wonders kopieer je naar de map Pictures in de thuismap van de gebruiker op de Raspberry Pi. En de bestanden Terrestrial Wonders Time Lapse.mkv en Nature Time Lapse.mp4 kopieer je naar de map Videos in de thuismap van de gebruiker op de Raspberry Pi.

Eerst de obligate update-upgrade opdracht:

pi@raspberrypi:~ $ sudo apt update && sudo apt upgrade -y
Geraakt:1 http://security.debian.org/debian-security bullseye-security InRelease
Geraakt:2 http://deb.debian.org/debian bullseye InRelease                                                  
Geraakt:3 http://deb.debian.org/debian bullseye-updates InRelease                                          
Geraakt:4 http://archive.raspberrypi.org/debian bullseye InRelease                                         
Pakketlijsten worden ingelezen... Klaar                                                                    
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar 
Alle pakketten zijn up-to-date.
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar 
Opwaardering wordt doorgerekend... Klaar
0 opgewaardeerd, 0 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd.

Raspberry Pi OS biedt ReadyMedia via hun eigen softwarebronnen (repositories) aan. Het pakket gebruikt echter wel nog de oude naam minidlna:

pi@raspberrypi:~ $ sudo apt install minidlna
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar 
De volgende NIEUWE pakketten zullen geïnstalleerd worden:
  minidlna
0 opgewaardeerd, 1 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd.
Er moeten 150 kB aan archieven opgehaald worden.
Na deze bewerking zal er 441 kB extra schijfruimte gebruikt worden.
Ophalen:1 http://deb.debian.org/debian bullseye/main arm64 minidlna arm64 1.3.0+dfsg-2+deb11u2 [150 kB]
150 kB opgehaald in 0s (1.664 kB/s)
Voorheen niet geselecteerd pakket minidlna wordt geselecteerd.
(Database wordt ingelezen ... 96976 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../minidlna_1.3.0+dfsg-2+deb11u2_arm64.deb wordt voorbereid...
Bezig met uitpakken van minidlna (1.3.0+dfsg-2+deb11u2) ...
Instellen van minidlna (1.3.0+dfsg-2+deb11u2) ...
Created symlink /etc/systemd/system/multi-user.target.wants/minidlna.service → /lib/systemd/system/minidlna.service.
Bezig met afhandelen van triggers voor man-db (2.9.4-2) ...

Na de installatie staan twee configuratiebestanden klaar om ReadyMedia in te stellen: /etc/default/minidlna en /etc/minidlna.conf. In het eerste bestand hoef je normaal gesproken niets te wijzigen. Het bevat onder andere de gebruikersnaam waaronder ReadyMedia draait (minidlna) en de locatie van het eigenlijk configuratiebestand (/etc/minidlna.conf). Dit bestand zullen we nu stap voor stap aan onze wensen aanpassen. Stop om te beginnen de minidlna-service:

pi@raspberrypi:~ $ sudo systemctl stop minidlna.service

En open vervolgens /etc/minidlna.conf in een teksteditor:

pi@raspberrypi:~ $ sudo nano -B /etc/minidlna.conf

De belangrijkste optie is media_dir. Die bepaalt welke mappen ReadyMedia moet scannen op zoek naar mediabestanden. Standaard staat dit ingesteld op /var/lib/minidlna. Wijzig dit dus naar de locatie van je mediabestanden. Meerdere media_dir-opties opnemen mag ook: bij elke map (directory) kan je zelfs aangeven of die muziek (A), video (V) of afbeeldingen (P) bevat. ReadyMedia zoekt dan enkel naar die specifieke bestandstypes.

# Path to the directory you want scanned for media files.
#
# This option can be specified more than once if you want multiple directories
# scanned.
#
# If you want to restrict a media_dir to a specific content type, you can
# prepend the directory name with a letter representing the type (A, P or V),
# followed by a comma, as so:
#   * "A" for audio    (eg. media_dir=A,/var/lib/minidlna/music)
#   * "P" for pictures (eg. media_dir=P,/var/lib/minidlna/pictures)
#   * "V" for video    (eg. media_dir=V,/var/lib/minidlna/videos)
#   * "PV" for pictures and video (eg. media_dir=PV,/var/lib/minidlna/digital_camera)
media_dir=/var/lib/minidlna

Om de mediabestanden in de gebruikersmap van pi te streamen, vervang je de laatste regel door:

media_dir=A,/home/pi/Music
media_dir=P,/home/pi/Pictures
media_dir=V,/home/pi/Videos

En start je de miniDLNA dienst terug op:

pi@raspberrypi:~ $ sudo systemctl start minidlna.service

Je kunt de instellingen ook aanpassen terwijl miniDLNA draait. De aanpassingen worden dan pas actief na het herladen van het configuratiebestand in miniDLNA:

pi@raspberrypi:~ $ sudo systemctl reload-or-try-restart minidlna.service

De opgegeven mappen moeten door miniDLNA allemaal doorzocht en verwerkt worden, dit kan naargelang de omvang van de te doorzoeken mediabibliotheek een tijd duren.

Als je meerdere mediaservers gebruikt, moeten deze een unieke naam hebben. Zo kan het zinvol zijn voor elk mediatype een aparte mediaserver op te zetten. De ReadyMedia server geef je in zijn configuratiebestand een unieke naam met:

# Name that the DLNA server presents to clients.
# Defaults to "hostname: username".
friendly_name=miniDLNA

Start een UPnP compatibele mediaspeler zoals VLC (zie de praktijk opdracht Musicbox). De friendly name van uw Raspberry Pi DLNA server verschijnt in de mediaspeler. Open jouw Raspberry Pi DLNA apparaat in de mediaspeler en speel wat muziek af, bekijk de video's en wat foto's.
VLC

Praktijk opdracht
  1. Multimedia bestanden (en dat geldt zeker voor video) vreten opslagruimte. De opslagruimte op een SD-kaart is daardoor snel opgebruikt. Daarenboven is het veiliger en vooral handiger om de SD-kaart te gebruiken om het systeem op te plaatsen en de multimedia bestanden op een ander apparaat te plaatsen. In deze oefening maken we gebruik van USB-sticks, maar de methode kan evengoed gebruikt worden met USB schijven met enorme opslagcapaciteiten. Let wel dat je bij het gebruik van een USB schijf je een aparte voeding nodig hebt:
    1. Verwijder de muziek in de pi gebruikersmap met:
      pi@raspberrypi:~ $ rm -r Music/*
      De optie -r (recursief) zorgt dat eventuele mappen en hun inhoud in de map Music verwijderd worden. * betekent dat alleen de inhoud van de map Music en niet de map Music mag verwijderd worden. Als de opdracht niets meldt, verliep alles zoals het hoort, m.a.w. geen nieuws is goed nieuws.
    2. Verwijder op dezelfde manier de inhoud van de map Pictures en Videos.
    3. Maak op een USB stick drie verschillende mappen: Muziek, Video en Foto's.
    4. Kopieer de mappen Marcin Szczepankiewicz - Moonlight Piano en Celadon Candy - Celadonia naar de map Muziek
    5. Kopieer de video's Terrestrial Wonders Time Lapse.mkv en Nature Time Lapse.mp4 naar de map Video.
    6. Kopieer de map Nature Wonders naar de map Foto's.
    7. Nu je mediabestanden op de USB-stick staan, verwijder je veilig (belangrijk, zeker als je er juist bestanden hebt opgeplaatst) de USB-stick.
    8. Plug de USB-stick in de Raspberry Pi.
    9. Sluit op de Raspberry Pi het venster Verwijderbaar medium is ingebracht. Indien je headless werkt (zonder scherm en toetsenbord) moet je dit natuurlijk niet doen. Dit venster sluiten we alleen omdat het stoort.
    10. De eigenschappen van de USB-stick geef je weer met:
      pi@raspberrypi:~ $ sudo blkid
      /dev/mmcblk0p1: LABEL_FATBOOT="bootfs" LABEL="bootfs" UUID="35DE-9C73" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="38c99ca5-01"
      /dev/mmcblk0p2: LABEL="rootfs" UUID="2aa5eb08-26a7-434c-a9f9-6ab89ea0f362" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="38c99ca5-02"
      /dev/sda1: SEC_TYPE="msdos" LABEL="DANY PINOY" UUID="2A56-B4A5" BLOCK_SIZE="512" TYPE="vfat"
      De blkid opdracht toont twee opslagmedia met in totaal drie opslagruimtes (partities). mmcblk0 is de SD-kaart en deze heeft twee partities: p1 voor het opstarten (bootfs) van de Pi en p2 met het Raspberry Pi OS besturingssysteem (rootfs). sda is de USB-stick partitie. Veel USB-sticks hebben in tegenstelling tot USB schijven geen partities (enkel sda). M.a.w. op USB schijven staat minstens één partitie met de naam sda1. Elke schijf wordt gekenmerkt door een uniek nummer, zijn UUID. Bruikbare partities zijn geformatteerd met een bepaald bestandssysteem (TYPE), zo gebruikt de boot partitie van de SD-kaart vfat, het Raspberry Pi OS besturingssysteem ext4 en de USB-stick vfat (of exfat).
    11. Maak een map om de inhoud van de USB-stick beschikbaar te maken:
      pi@raspberrypi:~ $ sudo mkdir /media/MediaDrive
    12. Om de inhoud van de USB-stick in de mappenstructuur van de Raspberry Pi op te nemen, moet je het configuratiebestand verantwoordelijk voor de bestandssystemen aanpassen. Het /etc/fstab (filesystem table) pas je als systeemgebruiker aan met de nano editor.
      pi@raspberrypi:~ $ sudo nano -B /etc/fstab
      Voeg de volgende regel toe:
      UUID=2A56-B4A5  /media/MediaDrive   vfat    defaults      0     0
      Vervang daarbij de UUID door deze van jouw USB-stick. /media/MediaDrive is de map waar de inhoud van de USB-stick tevoorschijn zal komen. vfat is het op jouw USB-stick gebruikte bestandssysteem. Voor de rest worden enkel standaard opties toegepast. Let op: dit configuratiebestand moet eindigen met een lege regel.
    13. Voor de zekerheid testen we de nieuwe configuratie:
      pi@raspberrypi:~ $ sudo mount -a
      Geen nieuws is opnieuw goed nieuws, anders pas je /etc/fstab aan tot deze geen fouten meer bevat. Aangezien dit configuratiebestand nodig is bij het opstarten van de Pi, is het belangrijk deze test uit te voeren, anders kan het opstarten afgebroken worden.
    14. Herstart de Raspberry Pi met:
      pi@raspberrypi:~ $ sudo shutdown -r now
    15. Bekijk de inhoud van de map met:
      pi@raspberrypi:~ $ ls -l /media/MediaDrive/
      totaal 24
      drwxr-xr-x 3 root root 8192 11 okt 16:28 "Foto's"
      drwxr-xr-x 4 root root 8192 11 okt 16:28  Muziek
      drwxr-xr-x 2 root root 8192 11 okt 16:28  Video
      De -l optie zorgt dat er details (long) zoals rechten, gebruiker, datum en grootte worden weergegeven. Let ook op de schrijfwijze van map- en bestandsnamen waarin spaties voorkomen. De naam met spaties is omringt door aanhalingstekens als teken dat het één geheel vormt.
    16. Pas de configuratie van miniDLNA aan zodat de media op de USB-stick gestreamd wordt.
      media_dir=A,/media/MediaDrive/Muziek
      media_dir=P,/media/MediaDrive/Foto's
      media_dir=V,/media/MediaDrive/Video
    17. Zorg dat miniDLNA de nieuwe configuratie gebruikt.
    18. Test op een ander apparaat in een mediaspeler of je de verschillende media kunt afspelen. Mocht dit niet het geval zijn, stop dan eerst zowel miniDLNA en de mediaspeler en herstart daarna beiden opnieuw op. Mocht je nog steeds geen media kunnen afspelen, controleer je de werking van miniDLNA met de opdracht:
      pi@raspberrypi:~ $ sudo systemctl status -l minidlna.service
       minidlna.service - MiniDLNA lightweight DLNA/UPnP-AV server
           Loaded: loaded (/lib/systemd/system/minidlna.service; enabled; vendor preset: enabled)
           Active: active (running) since Sat 2023-10-14 16:00:41 CEST; 1min 33s ago
             Docs: man:minidlnad(1)
                   man:minidlna.conf(5)
         Main PID: 1894 (minidlnad)
            Tasks: 2 (limit: 1599)
              CPU: 754ms
           CGroup: /system.slice/minidlna.service
                   └─1894 /usr/sbin/minidlnad -f /etc/minidlna.conf -P /run/minidlna/minidlna.pid -S -r
      
      okt 14 16:00:41 raspberrypi systemd[1]: Started MiniDLNA lightweight DLNA/UPnP-AV server.
      De -l (long) optie zorgt weer voor gedetailleerde uitgebreide informatie.

      Om de geschiedenis van de miniDLNA service op te vragen en te volgen, gebruik je de volgende opdracht:

      pi@raspberrypi:~ $ sudo journalctl -u minidlna.service -f -n 10
      -- Journal begins at Wed 2023-05-03 05:23:19 CEST. --
      okt 13 16:32:26 raspberrypi systemd[1]: Stopped MiniDLNA lightweight DLNA/UPnP-AV server.
      -- Boot a9b6745a4d91441eaaf33de01c5999ac --
      okt 13 16:32:32 raspberrypi systemd[1]: Started MiniDLNA lightweight DLNA/UPnP-AV server.
      okt 13 16:53:11 raspberrypi systemd[1]: Stopping MiniDLNA lightweight DLNA/UPnP-AV server...
      okt 13 16:53:11 raspberrypi systemd[1]: minidlna.service: Succeeded.
      okt 13 16:53:11 raspberrypi systemd[1]: Stopped MiniDLNA lightweight DLNA/UPnP-AV server.
      -- Boot eafdca4ea6494ad5b463e7b5a9465489 --
      okt 13 16:53:17 raspberrypi systemd[1]: Started MiniDLNA lightweight DLNA/UPnP-AV server.
      okt 14 16:00:41 raspberrypi systemd[1]: Stopping MiniDLNA lightweight DLNA/UPnP-AV server...
      okt 14 16:00:41 raspberrypi systemd[1]: minidlna.service: Succeeded.
      okt 14 16:00:41 raspberrypi systemd[1]: Stopped MiniDLNA lightweight DLNA/UPnP-AV server.
      okt 14 16:00:41 raspberrypi systemd[1]: Started MiniDLNA lightweight DLNA/UPnP-AV server.
      ^C
      
      Deze opdracht toont de laatste 10 miniDLNA meldingen en blijft de werking van miniDLNA volgen. Je kunt deze opdracht stoppen (afbreken) met de sneltoets Ctrl+c.
    19. De USB-stick verwijder je veilig met:
      pi@raspberrypi:~ $ sudo umount /dev/sda1
      Of met:
      pi@raspberrypi:~ $ sudo umount /media/MediaDrive
      In de eerste opdracht is sda1 de systeemnaam van de USB-stick partitie, in de tweede opdracht wordt de map gebruikt met de inhoud van de USB-stick (koppelpunt of mountpoint). Je kunt de Raspberry Pi natuurlijk ook afsluiten en de USB-stick dan verwijderen.
    20. Verwijder in het configuratiebestand /etc/fstab de regel die verantwoordelijk is voor het beschikbaar maken van de inhoud van de USB-stick.
    21. Test het fstab configuratiebestand op eventuele fouten.
  2. In plaats van een USB schijf kunnen we de multimedia bestanden ook op een apparaat met Windows gedeelde mappen opslaan, denk daarbij aan een NAS.
    1. De apparaatnaam van een NAS met Windows gedeelde mappen is enkel zichtbaar voor andere Windows systemen. Om onze Raspberry Pi met een Windows compatibele NAS te laten samenwerken, moet dus extra software geïnstalleerd worden:
      pi@raspberrypi:~ $ sudo apt install libnss-winbind
      Pakketlijsten worden ingelezen... Klaar
      Boom van vereisten wordt opgebouwd... Klaar
      De statusinformatie wordt gelezen... Klaar 
      De volgende extra pakketten zullen geïnstalleerd worden:
        python3-gpg python3-samba python3-tdb samba-common samba-common-bin samba-dsdb-modules winbind
      Voorgestelde pakketten:
        libpam-winbind heimdal-clients python3-markdown python3-dnspython
      De volgende NIEUWE pakketten zullen geïnstalleerd worden:
        libnss-winbind python3-gpg python3-samba python3-tdb samba-common samba-common-bin samba-dsdb-modules winbind
      0 opgewaardeerd, 8 nieuw geïnstalleerd, 0 te verwijderen en 9 niet opgewaardeerd.
      Er moeten 4.710 kB aan archieven opgehaald worden.
      Na deze bewerking zal er 27,9 MB extra schijfruimte gebruikt worden.
      Wilt u doorgaan? [J/n] 
      Ophalen:1 http://deb.debian.org/debian bullseye/main arm64 samba-common all 2:4.13.13+dfsg-1~deb11u5 [171 kB]
      Ophalen:2 http://deb.debian.org/debian bullseye/main arm64 python3-tdb arm64 1.4.3-1+b1 [20,2 kB]
      Ophalen:3 http://deb.debian.org/debian bullseye/main arm64 python3-samba arm64 2:4.13.13+dfsg-1~deb11u5 [2.514 kB]
      Ophalen:4 http://deb.debian.org/debian bullseye/main arm64 samba-common-bin arm64 2:4.13.13+dfsg-1~deb11u5 [641 kB]
      Ophalen:5 http://deb.debian.org/debian bullseye/main arm64 winbind arm64 2:4.13.13+dfsg-1~deb11u5 [538 kB]
      Ophalen:6 http://deb.debian.org/debian bullseye/main arm64 libnss-winbind arm64 2:4.13.13+dfsg-1~deb11u5 [123 kB]
      Ophalen:7 http://deb.debian.org/debian bullseye/main arm64 python3-gpg arm64 1.14.0-1+b2 [324 kB]
      Ophalen:8 http://deb.debian.org/debian bullseye/main arm64 samba-dsdb-modules arm64 2:4.13.13+dfsg-1~deb11u5 [378 kB]
      4.710 kB opgehaald in 1s (9.297 kB/s)   
      Voorconfigureren van pakketten ...
      Voorheen niet geselecteerd pakket samba-common wordt geselecteerd.
      (Database wordt ingelezen ... 97006 bestanden en mappen momenteel geïnstalleerd.)
      Uitpakken van .../0-samba-common_2%3a4.13.13+dfsg-1~deb11u5_all.deb wordt voorbereid...
      Bezig met uitpakken van samba-common (2:4.13.13+dfsg-1~deb11u5) ...
      ...
      Voorheen niet geselecteerd pakket samba-dsdb-modules:arm64 wordt geselecteerd.
      Uitpakken van .../7-samba-dsdb-modules_2%3a4.13.13+dfsg-1~deb11u5_arm64.deb wordt voorbereid...
      Bezig met uitpakken van samba-dsdb-modules:arm64 (2:4.13.13+dfsg-1~deb11u5) ...
      Instellen van samba-common (2:4.13.13+dfsg-1~deb11u5) ...
      
      Creating config file /etc/samba/smb.conf with new version
      Instellen van python3-tdb (1.4.3-1+b1) ...
      Instellen van python3-gpg (1.14.0-1+b2) ...
      Instellen van samba-dsdb-modules:arm64 (2:4.13.13+dfsg-1~deb11u5) ...
      Instellen van python3-samba (2:4.13.13+dfsg-1~deb11u5) ...
      Instellen van samba-common-bin (2:4.13.13+dfsg-1~deb11u5) ...
      Checking smb.conf with testparm
      Load smb config files from /etc/samba/smb.conf
      Loaded services file OK.
      Weak crypto is allowed
      Server role: ROLE_STANDALONE
      
      Done
      Instellen van winbind (2:4.13.13+dfsg-1~deb11u5) ...
      mkdir: map '/var/lib/samba/winbindd_privileged' is aangemaakt
      de groep van '/var/lib/samba/winbindd_privileged' is veranderd van root naar winbindd_priv
      modus van '/var/lib/samba/winbindd_privileged' is veranderd van 0755 (rwxr-xr-x) naar 0750 (rwxr-x---)
      Created symlink /etc/systemd/system/multi-user.target.wants/winbind.service → /lib/systemd/system/winbind.service.
      Instellen van libnss-winbind:arm64 (2:4.13.13+dfsg-1~deb11u5) ...
      Bezig met afhandelen van triggers voor man-db (2.9.4-2) ...
      Bezig met afhandelen van triggers voor libc-bin (2.31-13+rpt2+rpi1+deb11u7) ...
    2. Daarna zorgen we dat Raspberry Pi OS bij het opzoeken van een computernaam ook de pas geïnstalleerde software gebruikt. Daarvoor passen we het configuratiebestand die verantwoordelijk is voor het opzoeken van computernamen aan met:
      pi@raspberrypi:~ $ sudo nano -B /etc/nsswitch.conf
      Tussen het lokaal zoeken (files) en het zoeken via ZeroConf (mdns) en zelfs uiteindelijk op internet (dns), plaatsen we het zoeken naar Windows computernamen. De regel hosts pas je aan naar:
      hosts:          files wins mdns4_minimal [NOTFOUND=return] dns
    3. Test of jouw NAS door de Raspberry Pi gevonden wordt met:
      pi@raspberrypi:~ $ ping NASnaam.local
      PING NASnaam.local (192.168.129.29) 56(84) bytes of data.
      64 bytes from 192.168.129.29 (192.168.129.29): icmp_seq=1 ttl=64 time=106 ms
      64 bytes from 192.168.129.29 (192.168.129.29): icmp_seq=2 ttl=64 time=25.4 ms
      64 bytes from 192.168.129.29 (192.168.129.29): icmp_seq=3 ttl=64 time=38.9 ms
      64 bytes from 192.168.129.29 (192.168.129.29): icmp_seq=4 ttl=64 time=70.7 ms
      64 bytes from 192.168.129.29 (192.168.129.29): icmp_seq=5 ttl=64 time=84.1 ms
      ^C
      --- NASnaam.local ping statistics ---
      5 packets transmitted, 5 received, 0% packet loss, time 4004ms
      rtt min/avg/max/mdev = 25.423/64.993/105.894/29.377 ms
      Breek deze opdracht af met de sneltoets Ctrl+c.
    4. We hebben toegang tot onze NAS, de gedeelde map met multimedia bestanden is bijvoorbeeld Media die openbaar toegankelijk, dus voor iedereen (zonder gebruikersnaam en bijhorende wachtwoord). Deze informatie is voldoende om de inhoud van deze gedeelde map in de mappenstructuur van de Raspberry Pi op te nemen. We gebruiken daarvoor de reeds bestaande map /media/MediaDrive. Voeg als systeembeheerder de volgende regel toe aan het configuratiebestand dat verantwoordelijk is voor de bestandssystemen:
      //NASnaam.local/Media /media/MediaDrive cifs vers=2.0,guest,auto
      NASnaam vervang je door de naam van de NAS waarop de mediabestanden staan. De NASnaam kan je eventueel ook vervangen door het vaste IP adres van de NAS. Media door de gedeelde map op de NAS. Aangezien spaties in configuratiebestanden gebruikt worden om onderdelen van elkaar te scheiden, mogen bijvoorbeeld mapnamen geen spaties bevatten. De spatie wordt dan vervangen door de octale notatie \040 voor een spatie.
    5. Test de nieuwe configuratie:
      pi@raspberrypi:~ $ sudo mount -a
      pi@raspberrypi:~ $ ls -l /media/MediaDrive/
      totaal 16
      drwxr-xr-x 2 root root    0 16 okt 17:46  Afbeeldingen
      drwxr-xr-x 2 root root    0  6 okt 16:25  Muziek
      drwxr-xr-x 2 root root    0  2 okt 19:03 "Video's"
      
    6. Nu de mappen met multimediabestanden toegankelijk zijn voor de Raspberry Pi moet je er enkel nog voor zorgen dat miniDLNA ze vindt om ze te streamen.
    7. Test de nieuwe miniDLNA configuratie met een mediaspeler.
  3. Het is jullie misschien al opgevallen, maar niet alle muziek en video's worden door alle mediaspelers afgespeeld. Dit heeft te maken met het formaat van de mediabestanden. Voor muziek is MP3, voor video is MP4 de standaard. Een oplossing:
    1. Een veelzijdige speler die (bijna) alle formaten kan afspelen is VLC. Deze kan je vinden in alle zichzelf respecterende softwarebronnen, zoals de Microsoft Store. Of je download deze van de VideoLAN website.
  4. Hoewel je miniDLNA ook kunt uitbreiden met transcodering (readymedia-transcode via ffmpeg) is dit niet eenvoudig te realiseren en is het erg belastend voor de processor. Vandaar dat je beter kiest voor standaard mediaformaten (mp3 en h265). Hou wel rekening met het feit dat elke conversie een kwaliteitsverlies met zich meebrengt (hoewel dit voor de meeste mensen niet hoorbaar of zichtbaar is):
    1. Installeer de recentste versie van VLC.
    2. Start VLC.
    3. Start in het menu Media de opdracht Meerdere bestanden openen....
    4. Voeg de ogg-bestanden met behulp van de knop uit de muziekmap Celadon Candy - Celadonia toe aan de lijst.
    5. Open de keuzelijst Afspelen en start de opdracht Converteren.
      VLC Media openen
    6. Selecteer het Profiel Audio - MP3.
      VLC profiel
    7. Klik op de knop . De muziekbestanden worden één per één geconverteerd. Let echter op dat je tijdens de conversie geen muziek of video afspeelt, of je kunt herbeginnen.
    8. Dit ging vlot. Sluit VLC na de conversie.
    9. Open in de bestandsbeheerder de map Celadon Candy - Celadonia met de omgezette muziek.
    10. Rangschik de inhoud van de map volgens Type.
    11. Selecteer alle ogg-bestanden en verwijder ze (doe dit nooit met originele muziek uit jouw eigen muziekcollectie).
    12. De muziekbestanden zijn nu wel omgezet, maar de afspeellijst niet. Open het bestand playlist.m3u met een teksteditor.
    13. Pas de .ogg bestandsextensie op elke regel aan naar .mp3.
    14. Sla de aanpassingen op en sluit de teksteditor.
    15. Test in de mediaspeler of het album nu wel via miniDLNA afspeelt. Mocht dit niet het geval zijn, probeer dan de minidlna server en mediaspeler te herstarten. Software gebruikt dikwijls buffers (cache) om alles sneller te laten werken, maar dit heeft als nadeel dat aanpassingen niet altijd direct doorgevoerd worden. Mocht dit nog niet lukken, wis de buffer van minidnla dan manueel:
      pi@raspberrypi:~ $ sudo systemctl stop minidlna.service
      pi@raspberrypi:~ $ sudo rm -r /var/cache/minidlna/*
      pi@raspberrypi:~ $ sudo systemctl start minidlna.service
  5. Nu de video Terrestrial Wonders Time Lapse nog omzetten naar het MP4 formaat. Ga daarbij op dezelfde manier te werk als het converteren van OGG muziekbestanden met de volgende aanpassingen:
    1. Gebruik het profiel Video - H.265 + MP3 (MP4).
    2. Gebruik de knop om een Doelbestand in te geven.
    3. Sluit na het omzetten VLC af.
    4. Verwijder de originele video in het MKV formaat (doe dit nooit met originele video's uit jouw eigen videocollectie).
    5. Test het afspelen van de door miniDLNA gestreamde omgezette video in een mediaspeler.
  6. Serviio is een commerciële DLNA Media Server. Serviio kan je gratis gebruiken, maar een volledige versie met extra mogelijkheden moet je kopen (Pro-versie).
    1. Voor je Serviio installeert, schakel je met de volgende opdrachten de reeds geïnstalleerde mniDLNA server tijdelijk uit. De miniDLNA server sluit je af met de opdracht:
      pi@raspberrypi:~ $ sudo systemctl stop minidlna.service
      Om te beletten dat de miniDLNA server bij de volgende herstart van de Raspberry Pi terug automatisch opstart, voer je de volgende opdracht uit:
      pi@raspberrypi:~ $ sudo systemctl disable minidlna.service
      Synchronizing state of minidlna.service with SysV service script with /lib/systemd/systemd-sysv-install.
      Executing: /lib/systemd/systemd-sysv-install disable minidlna
      Removed /etc/systemd/system/multi-user.target.wants/minidlna.service.
    2. Volg nu de handleiding op de webpagina van The Milhouse Group om Serviio te installeren. Zorg daarbij dat je de laatste versie van Serviio installeert: 2.3.
    3. Een handleiding van hoe je Serviio via een webpagina kunt configureren kan je vinden op de Support webpagina van Serviio. Zorg daarbij dat Serviio de muziek, video's en foto's die we daarstraks gebruikten kan streamen.
      Serviio
    4. Test de Serviio mediaserver met behulp van een mediaspeler, bijvoorbeeld VLC.

Openbare reacties op deze pagina (kunnen door alle bezoekers gelezen worden)

, vrijdag 2 juni 2023 19:28