Was ist nun für Plex wirklich(!) das beste Format bzgl Audio? + Tipps zum Skript

Guten Tag Zusammen,

erstmals, wow! Kann nicht glauben wie schnell die Zeit vergeht, und wie lange ich schon an verschiedene Skripte bastel und ausprobiert habe…

Ich beziehe mich mit diesem Thread auf folgenden Thread: Wiedergabe Stockt trotz DirectPlay und Gigabit

Schon über 1 Jahr her!

Nun, leider habe ich bis heute immer noch keine passende Lösung gefunden…

Habe auch nicht durchgängig mich darum bemüht, weil es am PC ja alles reibungslos läuft bzgl Streamen bzw Live-Transcordieren von verschieden Formaten.

Aber seit ich seit einigen Wochen vermehrt den Amazon FireStick 4k und die Playstation 4 nutze, ist mir bei vielen Filmen aufgefallen, das ein Abspielen einfach nicht möglich ist. Bei manchen Filmen gibt es diverse Bild-/transkordierfehler wie farbige riesige Pixel. Oder extremes “Zittern”.

Das schlimmste ist jedoch z.b mit TrueHD und der Playstation 4.

Hier kratzt, pfeift und piept der Ton so extrem hoch, das ich mir schon ein Lautsprecher (dessen Hochtöner) mit zerstört habe. Und die waren nicht gerade billig…

Nun will ich es für ein und allemal richtig machen. Und alles, und ich meine alles, auf das für Plex bestmögliche Format konvertieren. Natürlich am besten nicht in Handarbeit.

Lange Rede, kurzer Sinn… :

Plex will am besten nen MP4 Container haben. Mit h264 Codec für Video und AAC für Audio.

Kein Problem soweit (wenn das nun wirklich stimmt).

Ich habe nur ein Problem mit dem Ton: 99% des Materials das ich habe/streame ist mindestens 5.1 und höher. Und hier empfiehlt nun “das ganze Internet” AC3.

Was geschlussfolgert jedoch nicht Plex lieblingsformat ist?!

Ich möchte ein Format nutzen, das auf 99% der verfügbaren Geräte auf dem Markt reibungslos läuft. Was wie bereits erwähnt wohl MP4 + H264 + AAC sein soll.

Und ich habe diverse Skripte ausprobiert. Fast alle die ich gefunden habe. Sickbeards MP4 Automator, convert-videos-for-plex, conv2mp4-ps und diverse andere.

Und keine davon ist leider zufriedenstellend. Viele Skripte “verpacken” z.b nur neu, statt zu transkordieren.

Kann mir einer hier helfen? Ich möchte ein Skript schreiben, welches mittels Handbrake-Cli jeden Inhalt eines Ordners in MP4 konvertiert (h264 + aac), das Bild nicht komprimiert (auch wenn die Datei größer wird), und zwei Tonspuren (stereo + Mehrkanal) erstellt. Das natürlich rekrusiv und bei fertigstellung die originale Datei löscht…

Danke schon mal!

Hast du das mal probiert, seit der neue Player auf den Android/Fire-TV-Boxen raus ist bzw. als Standard aktiviert ist?
Habe schon lange keine Audio-Probleme mehr gehabt/gesehen.
H264+AC3 funktioniert bei mir wunderbar (auch DTS). Bei >5.1 wird’s vermutlich wieder etwas kniffliger (aber auch nicht unmöglich), weil das dann oft neuere Codecs sind, die wieder nicht von allen Playern unterstützt werden.

ABER… wenn dein Server wg. des Umwandelns eines Audio-Streams ins Straucheln gerät, hast du vermutlich ganz andere Probleme.
Erfahrungsgemäß sind Untertitel häufiger ein Problem, weil Plex bisher (Vergangenheit) den ganzen Film transkodiert hat, wenn es mit dem Untertitel nicht umgehen konnte. Die letzten Android-Releases haben das aber auch geändert

Der Server gerät nicht ins straucheln :slight_smile: Der ist mehr als performant genug… Livetranskordierungen von diversen Formaten, langweilt Ihn.

Nur anscheinend klappt das nicht so richtig zu gewissen Endgeräten hin. Daher die Suche nach der endgültige Lösung.

Untertitel interessieren mich nicht. Existieren in großteils meiner Dateien auch nicht. Und wenn ja, können diese entfernt werden.

Alles MKV Container hier und überwiegend Untouched und somit Original Video/Audio Streams.

Mein Fire-TV 4K Ultra kann keine True-HD Audio Formate und kann auch kein PCM Stereo Format das bestimmte Eigenschaften besitzt (irgendwelche höheren KHz).

Mein Nvidia Shield 2019 Tube kann die True-HD Audio Formate, strauchelt aber über andere Streams.

Die True-HD Streams kommen aber, sofern nicht weg-gemuxt, mit einem kleineren Audio-Kern. Du kannst dann halt im Plex Player den kleineren Audio-Kern wählen und dann spielt auch der Fire-TV den Film/die Episode.

Ich habe in der Anfangszeit, vor ca. 15 Jahren, beschlossen, ausschließlich den besten Stream zu behalten und alle anderen, inkl. der kleineren Audio-Kerne, raus zu schmeißen. Das mache ich heute nicht mehr. Heute behalte ich ebenfalls die Kerne.

In den letzten zwei Wochen war ich richtig angefressen da der Plex Player auf der Shield regelmäßig abgestürzt ist und die Shield mit runtergerissen hat. Nur die Kombination aus Fire-TV, Shield und der LG TV App spielt alles. Ein Player alleine kann wohl nicht mehr alle Formate. Die Shield Tube, wenn dann Mal die bekannten Speicherprobleme von Plex auf der Shield behoben sind, kommt dem perfekten Player sehr nahe. Die aktuellen Android-TV Plex Betas laufen auf jeden Fall besser als die offiziellen Release.

So… hier bin ich wieder.

Ich habe eine Lösung gefunden. Und diese die ganze letzte vergangene Woche getestet.

Habe es geschafft mir ein einfaches Skript zu schreiben, welches alle Videodateien in einem Ordner rekrusiv konvertiert mittels Handbrake und danach das Ursprungsmaterial löscht.

Also reiner Austausch.

Habe nun testweise ungefähr 3 TB Daten so konvertiert, wie ich es wollte um das Skript selbst und das Ausgangsmaterial zu begutachten. Dabei auf viele kleine Fehler gestoßen wie mehrere Punkte im Namen, sonderzeichen, etc. Da ist regex echt penibel…

Egal. Lange Rede, kuzer Sinn. Folgendes Skript lief einwandfrei bei ungefähr 3 TB Videomaterial (ca. 2600 einzelne Videodateien):

#!/bin/bash
if [ -z $1 ];then echo Bitte Pfad angeben; exit 0;fi

    find "$1" -depth -name "*" | while read "file" ; do

    directory=$(dirname "$file")
    filename=$(basename "$file")
    extension=$(echo "$filename" | tail -c 4)
    withoutextension=${filename::-4}

    if [ ! -d "$file" ]; then

            if [ $extension == mp4 ]; then
                    mv "$directory/$filename" "$directory/$withoutextension.mp4bak"
                    filename="$withoutextension.mp4bak"
            fi

            HandBrakeCLI --preset-import-file /home/user/PLEX.json -Z PLEX -i "$directory/$filename" -o "$directory/$withoutextension.mp4" </dev/null
            rm "$directory/$filename"
    fi

done

Das Skript konnte deswegen so einfach ausfallen (war trotzdem hirnf*ck), weil die ganzen Abfragen und Parameter wie was wo umgewandelt wird von Handbrake abgenommen wird.

Dazu habe ich folgendes Handbrake Profil erstellt:

{
“PresetList”: [
{
“AlignAVStart”: true,
“AudioCopyMask”: ,
“AudioEncoderFallback”: “none”,
“AudioLanguageList”: [
“deu”,
“und”
],
“AudioList”: [
{
“AudioBitrate”: 320,
“AudioCompressionLevel”: -1.0,
“AudioDitherMethod”: “auto”,
“AudioEncoder”: “av_aac”,
“AudioMixdown”: “stereo”,
“AudioNormalizeMixLevel”: false,
“AudioSamplerate”: “auto”,
“AudioTrackDRCSlider”: 0.0,
“AudioTrackGainSlider”: 0.0,
“AudioTrackQuality”: 1.0,
“AudioTrackQualityEnable”: false
},
{
“AudioBitrate”: 640,
“AudioCompressionLevel”: -1.0,
“AudioDitherMethod”: “auto”,
“AudioEncoder”: “ac3”,
“AudioMixdown”: “none”,
“AudioNormalizeMixLevel”: false,
“AudioSamplerate”: “auto”,
“AudioTrackDRCSlider”: 0.0,
“AudioTrackGainSlider”: 0.0,
“AudioTrackQuality”: -1.0,
“AudioTrackQualityEnable”: false
}
],
“AudioSecondaryEncoderMode”: true,
“AudioTrackSelectionBehavior”: “first”,
“ChapterMarkers”: true,
“ChildrenArray”: ,
“Default”: false,
“FileFormat”: “av_mp4”,
“Folder”: false,
“FolderOpen”: false,
“InlineParameterSets”: false,
“Mp4HttpOptimize”: true,
“Mp4iPodCompatible”: false,
“PictureAutoCrop”: false,
“PictureBottomCrop”: 0,
“PictureChromaSmoothCustom”: “”,
“PictureChromaSmoothPreset”: “off”,
“PictureChromaSmoothTune”: “none”,
“PictureCombDetectCustom”: “”,
“PictureCombDetectPreset”: “default”,
“PictureDARWidth”: 0,
“PictureDeblockCustom”: “strength=strong:thresh=20:blocksize=8”,
“PictureDeblockPreset”: “off”,
“PictureDeblockTune”: “medium”,
“PictureDeinterlaceCustom”: “”,
“PictureDeinterlaceFilter”: “decomb”,
“PictureDeinterlacePreset”: “default”,
“PictureDenoiseCustom”: “”,
“PictureDenoiseFilter”: “off”,
“PictureDenoisePreset”: “”,
“PictureDenoiseTune”: “none”,
“PictureDetelecine”: “off”,
“PictureDetelecineCustom”: “”,
“PictureForceHeight”: 0,
“PictureForceWidth”: 0,
“PictureHeight”: 1080,
“PictureItuPAR”: false,
“PictureKeepRatio”: true,
“PictureLeftCrop”: 0,
“PictureLooseCrop”: true,
“PictureModulus”: 2,
“PicturePAR”: “off”,
“PicturePARHeight”: 1,
“PicturePARWidth”: 1,
“PictureRightCrop”: 0,
“PictureRotate”: “disable=1”,
“PictureSharpenCustom”: “”,
“PictureSharpenFilter”: “off”,
“PictureSharpenPreset”: “”,
“PictureSharpenTune”: “”,
“PictureTopCrop”: 0,
“PictureWidth”: 1920,
“PresetDescription”: “High quality H.264 video (up to 1080p30), AAC stereo audio, and Dolby Digital (AC-3) surround audio, in an MP4 container.”,
“PresetName”: “PLEX”,
“SubtitleAddCC”: false,
“SubtitleAddForeignAudioSearch”: true,
“SubtitleAddForeignAudioSubtitle”: false,
“SubtitleBurnBDSub”: true,
“SubtitleBurnBehavior”: “none”,
“SubtitleBurnDVDSub”: true,
“SubtitleLanguageList”: [
“deu”
],
“SubtitleTrackSelectionBehavior”: “none”,
“Type”: 1,
“UsesPictureFilters”: true,
“UsesPictureSettings”: 1,
“VideoAvgBitrate”: 9000,
“VideoColorMatrixCodeOverride”: 0,
“VideoEncoder”: “x264”,
“VideoFramerate”: “auto”,
“VideoFramerateMode”: “cfr”,
“VideoGrayScale”: false,
“VideoLevel”: “4.0”,
“VideoOptionExtra”: “”,
“VideoPreset”: “slow”,
“VideoProfile”: “high”,
“VideoQSVAsyncDepth”: 4,
“VideoQSVDecode”: false,
“VideoQualitySlider”: 20.0,
“VideoQualityType”: 2,
“VideoScaler”: “swscale”,
“VideoTune”: “”,
“VideoTurboTwoPass”: false,
“VideoTwoPass”: true,
“x264Option”: “”,
“x264UseAdvancedOptions”: false
}
],
“VersionMajor”: 42,
“VersionMicro”: 0,
“VersionMinor”: 0
}

Diesen Inhalt einfach unter “PLEX.json” speichern mit einem Editor der Wahl.

Ok, und was macht es nun genau? Das hier! :

Mittels

./dasplexumwandlungsskript.sh /dein/pfad/zur/bibliothek

wird der GESAMTE Inhalt nach jeglichen Dateien durchsucht. Und jeglicher Inhalt wird nach h264 mp4 konvertiert. Das Bild (wenn höher) wird auf 1920x1080 runtergerechnet. Es wird nichts beschnitten und es wird auch das Bildverhältniss beibehalten. Das heißt es kann sein das nicht genau 1920x1080 rauskommt, sondern 1920x1033 oder so. Sollte die Auflösung kleiner sein als 1920x1080, wird die Auflösung nicht runtergerechnet, sondern bleibt Original. Bildwiederholungsrate wird vom Original übernommen. Constantbitrate, und RF20. Genaueres zu Qualität kann man dem Profil entnehmen mittels Handbrake. Entspricht zu 99% dem “High 1080p Sourround” Profil.

Der Ton wird ebenfalls konvertiert. Und zwar die “unknown” und “Deutsch” Spuren. Und zwar einmal in Stereo (die erste Spur) und einmal nach 5.1 (die zweite Spur). Erste Spur ist AAC und zweite AC3 (Dolby Digital).

Deutsche Untertiteln werden nur hinzugefügt, wenn diese erzwungen wird.

Ich habe bestimmt einiges noch vergessen. Daher bitte entnehmt dies aus dem Profil “PLEX.json”. Diesen habe ich mit Handbrake selbst erstellt, und dann als JSON exportiert damit HandbrakeCLI dies nutzen kann.

Aber nochmal: WARNUNG! DIESES SKRIPT KONVERTIERT ALLES WAS ES FINDEN KANN REKRUSIV!!! EGAL OB ES SCHON MP4 IST ODER BEREITS RICHTIGE CODECS IN DER QUELLE GENUTZT WERDEN!! UND ENTFERNT UNWIDERRUFLICH DAS ORIGINAL!!!

Aber nun wirklich, nochmal: Das heißt natürlich in dem jeweiligen Ordner sollten sich keine Bilder, idx dateien, txt’s oder what ever liegen. Sondern nur Sachen die HandbrakeCLI auch verarbeiten kann. Bei mir befanden/befinden sich nur mkv’s.

Nun, jetzt lasse ich mein Rechenknecht die nächsten 15 Tage am Stück 24/7 weiter fleißig konvertieren… :grin:

Dir ist schon klar, dass jeglicher Konvertierungsvorgang in Handbrake eine Verschlechterung der Bildqualität bedeutet, oder? Und das gilt auch dann, wenn du die gleiche Zielbitrate wie die Ursprungsdatei wählst.

Ich halte es für eine schlechte Idee, sowas ausnahmslos auf alle Dateien loszulassen.

1 Like

Wenn das Bild nicht schlechter werden würde, würde schlußendlich die Dateigröße auch nicht kleiner werden.

Ich hätte auch RF0 einstellen können was ohne Verlust hieße, jedoch war jede Datei die ich ausprobiert habe dann vier mal so Groß wie vorher. Selbst die, die einfach mit makemkv 1:1 von der Blueray übernommen worden sind.

Bei RF20 ist bei dem Material was ich ausprobiert habe, mit meinen Augen, kein Unterschied zum Ursprungsmaterial festzustellen.

Und ich verwende es ausnahmslos auf alle meinen Dateien, weil nur ein einstelliger Prozentsatz davon für Plex im optimalen Format vorliegt. Bei egal welchem Film, wird entweder Bild oder Ton transkodiert. Beim Streamen zum PC ist das alles kein Problem. Beim Streamen zur Playstation 4 z.b, ist True HD Master 7.2 z.B anscheinend wohl ein Problem.

Diese Probleme gehe ich nun gänzlich aus dem Weg, wenn die ganzen Bluerays einfach in für Plex und alle Clienten bestem Format umgewandelt wird.

Es liegt nur am Endgerät. Selbst wenn man auf 2 aktuellen Samsung QLED TV’s per PLEX App im Netzwerk gleichzeitig auf den selben Film zugreift, ruckelt nichts. Zumal Plex mittlerweile auch so genügsam ist, das selbst die sonst so CPU bzw. GPU (Hardwarebeschleunigung aktiv) lastigen Anwendungen kaum Ressourchen des Servers brauchen.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.