Plexmediaserver - Ein Problem beim abspielen von Dateien mit EAC3 Audio Format

  • Ein Problem beim abspielen von Dateien mit EAC3 Audio Format

    Passiert ist dieses Problem dem betaCube User @Robin in der Kombination Plexmediaserver Version 1.17.0.1709-982421575 und Plex Mediaplayer (iOS & Android). Mit dem Hinweis des neuen EAC3 Audio Formats bei Serien und neuen Filmen.


    Was passiert genau
    Die Episode oder Film soll abgespielt werden startet aber nicht mit der Wiedergabe. Es erscheint auch keine Fehlermeldung.

    Wenn man im Web danach sucht findet man viele Einträge, Schwierigkeiten mit Kompatibilitäten von Endgeräten, Codecs (Soundkarten) wie auch User die vermeidlich einen Bug im Plexmediaserver suchen/finden wollen.


    Der Hintergrund & Technik

    Der Plexmediaserver versucht immer das Format direkt zu streamen solange das Wiedergabegerät das Format/Codec auch unterstützt. Wenn ein Endgerät für ein bestimmten Codec nicht kompatibel ist wird die entsprechende Video,- Tonspur oder auch beides umgewandelt.


    In dem oben beschriebenen Fall wird die Videospur im DirectPlay gesendet und die Tonspur transcodiert.


    :!:Den Plexmediaserver können wir ausschließen -> ich habe es mit mehreren alten Versionen wie auch der aktuellen Variante ausprobiert und konnte das Verhalten jedesmal reproduzieren. Auch gibt es betaCube Server die dieses Problem NICHT haben. Der Grund ist weder betaCube als OS noch Plex als Software.:!:


    Die Fakten
    Einen ersten Hinweis zum Fehler bekommt man nur wenn man die Logfiles des Plexmediaservers aktiviert und die aktuelle Ausgabe dann unter Einstellungen >> Konsole anschaut und entsprechend filtert. (siehe Bild)




    Etwas Verwirrung stiftet es anfangs schon, den die Fehlermeldung sagt aus dass ein bestimmtes temporäres Verzeichnis nicht gelesen/geschrieben werden kann.


    Code
    ERROR - [Transcoder] [eac3_eae @ 0x34d8b00] EAE timeout! EAE not running, or wrong folder? Could not read ‘/tmp/pms-9334c3ae-52e9-4e21-a229-6f58c026458e/EasyAudioEncoder/Convert to WAV (to 8ch or less)/rylm1x0wflm07ss5rjjahnal_30180-0-40.wav’
    
    ERROR - [Transcoder] [eac3_eae @ 0x34d8b00] error reading output
    
    ERROR - [Transcoder] Error while decoding stream #0:1: Input/output error

    Der Pfad, wie auch das Verzeichnis sind allerdings vorhanden und Plex hat auch Zugriff darauf.


    Bei genauerer Betrachtung sieht man beim Start der Wiedergabe einer solchen Episode/Film im Ordner "Convert" eine kryptische Datei (SessionID) aber keine (transcodierte) .WAV die im gleichen Verzeichnis erwartet wird.


    Ein schneller Blick ins Verzeichnis des Plexmediaserver verrät ob der EAE Codec überhaupt hinterlegt ist:




    Der Grund, das die Wiedergabe also nicht startet ist nicht ein fehlender Codec, sondern die fehlende WAV Datei die nicht aus der temporären Datei erstellt wird.


    Die Lösung

    Ist banal und einfach zu gleich. In Kurzform: Es ist der verwendete Kernel und deren für sich reservierter Speicher.
    Wie es scheint ist in Kernelversion 5.2.7-050207 das Memorymanagement, genauer die Dateiüberwachung im Speicher und deren für den Kernel reservierte Speicher buggy.


    Im mehreren Tests konnten betaCube Server mit Kernel 5.1.x & 5.3.x sowie mit jeglicher installierten Version des Plexmediaserver ohne Probleme die Wiedergabe starten.


    Es ist nicht auszuschließen das auch Kernel 4.x von diesem Bug betroffen sind (Thema Backport Kernel).

    Betroffene können sich mit folgender Anpassung via Terminal selbst helfen:


    Temporär (bis zum nächsten Neustart gültig)

    Code
    sysctl -w fs.inotify.max_user_watches=DeinWert (z.b. 24576)

    Hinweis: "DeinWert" muss durch 32 teilbar sein. Der Standardwert ist/war: 8192


    Nach der Eingabe könnt ihr zur Sicherheit den Plexmediaserver neustarten und die Wiedergabe erneut versuchen. Mit dem richtigen Wert habt ihr im "Convert" Ordner nun endlich auch die erwartete .WAV Datei im Blick und eine funktionierende Wiedergabe.

    Dauerhaft

    Code
    sudo echo fs.inotify.max_user_watches=DeinWert >> /etc/sysctl.conf
    sudo sysctl -p


    Alternativ

    Wer es sich zutraut spielt einfach eine andere (angesprochene) Kernelversion auf den Server auf. Hilfestellung wird hierzu gerne gegeben.

    Besitzer von QNAP und Synology haben allerdings Pech, sie müssen auf Firmwareupdates hoffen und können sich erstmal nur via CLI mit dem obigen Befehl aushelfen.