Plex, transkodieren - welches Videoformat?

Hallo,

ich bin zwar neu bei Plex aber schon ein älterer Hase was Linux, vdr aber vor allem Storage im Allgemeinen angeht. Ich experimentiere seit ein paar Tagen mit Plex (0.9.9) auf Ubuntu (14.04) auf einem Shuttle Barebone mit Core2Duo und 2GB RAM - vieles funktioniert auch schon echt gut und ich bin sehr zufrieden. Mittelfristiger plan ist es meine knapp 2TB VDR (.ts und .vdr) Aufnahmen nach und nach in ein "Plexfreundliches" Format zu transkodieren dazu nutze ich avidemux 2.6. 
Testweise habe ich ein paar .vdr Aufnahmen als auch .ts Files in folgendes Format umgewandelt:
Video Output (Mpeg4 AVC x264), Audio Output AAC (lav), Output Format MP4v2 Muxer 
Als Clients nutze ich aus jedem Dorf ein Kind (Android, iOS, Samsung TV und zwei Macs) somit suche ich ein gutes Format das auf allen Geräten funktioniert. Ich bin nicht ganz sicher wie Plex intern arbeitet und ob er ALLE Wiedergaben IMMER quasi on-demand transkodieren muss oder ob es am Client liegt. In einem schnellen Test sieht es so aus als würde er transkodieren: 

Sep 07, 2014 14:06:38 [0x7f43957fa700] DEBUG - Session was stopped.
Sep 07, 2014 14:06:38 [0x7f43b9ffb700] DEBUG - Starting a transcode session 1fk7v6aivx1 at offset 470.0 (stopped=1)
Sep 07, 2014 14:06:38 [0x7f43b9ffb700] DEBUG - Job running: /usr/lib/plexmediaserver/Resources/Plex New Transcoder -ss 470 -i /home/plex/Videos/27_Dresses/27_Dresses.mp4 -threads 0 -y -segment_format mpegts -f segment -loglevel quiet -loglevel_plex error -map_metadata -1 -progressurl http://127.0.0.1:32400/video/:/transcode/session/1fk7v6aivx1/progress -vcodec copy -flags -global_header -segment_time 10 -segment_start_number 47 -bsf h264_mp4toannexb,h264_plex -map 0:0 -sn -acodec aac -strict -2 -cutoff 15000 -ac 2 -map 0:1 -ab 128k media-%05d.ts
Sep 07, 2014 14:06:38 [0x7f438ffff700] ERROR - [Transcoder] [h264 @ 0x34fafc0] time_scale/num_units_in_tick invalid or unsupported (0/0)
Sep 07, 2014 14:06:38 [0x7f438cff9700] INFO - [Transcoder] Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/plex/Videos/27_Dresses/27_Dresses.mp4':
Sep 07, 2014 14:06:38 [0x7f43ba7fc700] INFO - [Transcoder]     Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x576 [SAR 64:45 DAR 16:9], 1266 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Sep 07, 2014 14:06:38 [0x7f4396ffd700] INFO - [Transcoder]     Stream #0:1(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, stereo, fltp, 128 kb/s
Sep 07, 2014 14:06:38 [0x7f438f7fe700] DEBUG - [Transcoder] Average FPS ~ 25 fps, Frame rate ~ 25 fps.
Sep 07, 2014 14:06:38 [0x7f43b9ffb700] DEBUG -  [FFMPEG] Duration: 5968
Sep 07, 2014 14:06:38 [0x7f43b9ffb700] DEBUG - Read line, and done: 1
Sep 07, 2014 14:06:38 [0x7f43b9ffb700] DEBUG - Started session successfully: 1fk7v6aivx1
Sep 07, 2014 14:06:38 [0x7f439ffff700] INFO - [Transcoder] Output #0, segment, to 'media-%05d.ts':
Sep 07, 2014 14:06:38 [0x7f4387fff700] INFO - [Transcoder]     Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv420p, 720x576 [SAR 64:45 DAR 16:9], q=2-31, 1266 kb/s, 25 fps, 90k tbn, 25 tbc
Sep 07, 2014 14:06:38 [0x7f43baffd700] INFO - [Transcoder]     Stream #0:1: Audio: aac, 48000 Hz, stereo, fltp, 128 kb/s
Sep 07, 2014 14:06:38 [0x7f43977fe700] DEBUG - Request: [127.0.0.1:35725] PUT /video/:/transcode/session/1fk7v6aivx1/progress?width=1024&height=576 (25 live)
Sep 07, 2014 14:06:38 [0x7f43977fe700] DEBUG -  * width => 1024
Sep 07, 2014 14:06:38 [0x7f43977fe700] DEBUG -  * height => 576
Sep 07, 2014 14:06:38 [0x7f43977fe700] DEBUG - We want 6 segments ahead, last returned was -1 and max is -1.
Sep 07, 2014 14:06:38 [0x7f43977fe700] DEBUG - It took 0.000017 sec to serialize a list with 0 elements.
Sep 07, 2014 14:06:39 [0x7f4397fff700] DEBUG - Sending back blank segment for 1, we got started with an offset.
Sep 07, 2014 14:06:39 [0x7f4397fff700] DEBUG - Returning segment 1 from session: /usr/lib/plexmediaserver/Resources/empty.ts
Sep 07, 2014 14:06:39 [0x7f4397fff700] DEBUG - Content-Length of /usr/lib/plexmediaserver/Resources/empty.ts is 188.
Sep 07, 2014 14:06:39 [0x7f43b8ff9700] DEBUG - We're in a seek: asked for 78, min/max available was 47/47
Sep 07, 2014 14:06:39 [0x7f43b8ff9700] DEBUG - Segment #78 WON.
Sep 07, 2014 14:06:39 [0x7f43b8ff9700] DEBUG - Killing job.
Sep 07, 2014 14:06:39 [0x7f43b8ff9700] DEBUG - Signalling job ID 23694 with 9
Sep 07, 2014 14:06:39 [0x7f43b8ff9700] DEBUG - Job was already killed, not killing again.
Sep 07, 2014 14:06:39 [0x7f43b8ff9700] DEBUG - Stopping transcode session 1fk7v6aivx1

Bevor ich nun anfange 2TB in ein Format zu konvertieren das suboptimal ist frage ich lieber mal nach: Ist das o.g Format "sinnvoll" und wenn ja  gibt es optimierte Settings? Kann ich dieselben Einstellungen für HD .ts Files als auch SD .vdr Files nehmen?

 

Freue mich auf Eure Rückmeldungen und Gruß aus NRW

Markus

Generell bist du mit mp4, h264 und aac schon richtig. Das Format wird von den meisten Clients direkt verarbeitet, so dass Plex nicht transkodieren muss.

Die Einstellungen, die Plex selbst wählt sind aber generll für schnelles Transkodieren ausgelegt, damit das on the fly passieren kann. Dadurch bekommst du aber wesentlich größere Ausgabedateien als ansonsten möglich wäre.

Der Transcoder schaltet sich immer dann ein, wenn laut Profil des Clients die Formate nicht passen bzw. falls die Einstellung der gewünschten Datenrate im Client ansonsten überschritten wird (Quality Einstellung).

Det Transkoder wird sich auch dann immer zuschalten, wenn du Inhalte zu einem Client synchronisierst (Plex Pass Funktion) oder auf Inhalte von außerhalb des Netztwerkes zugreifst und die Datenverbindung zu langsam ist und du deshalb im Client die Datenrate gedrosselt hast.

Dabei gibt es unterschiedliche Grade der Transkodierung:

Remuxen: Formate passen aber der Container passt nicht, z. Mkv. Das passiert ohne großen Aufwand, und belastet die CPU fast gar nicht. Dadurch bist du nicht wirklich an mp4 gebunden.

Nur Audio-transkodieren: Audiostream liegt z.B. als DTS vor aber Videostream kompatibel. Die Belastung der CPU ist dabei in der Regel sehr gering (ca. 3% bei meiner CPU)

Volles Transkodieren: Das ist der Zustand, der die CPU in der Regel bis zu 100% auslastet und bei Rechnern mit schwacher CPU das System ins Stottern bringt.

Ob es sich lohnt alle Filme so umzurechnen, dass PMS nie transkodieren muss, musst du letztendlich selbst entscheiden.

"Nie transkodieren" bedeuted letztendlich auch, dass die Dateien für das schwäschste Glied in der Kette geeignet sein müssten. Das dürfte in den meisetn Fällen die Übertragungsgeschwindigkeit zu Geräten außerhalb des Netztwerkes sein. Die Filmqualität dazu wäre dann aber eher sehr bescheiden und für dein TV-Gerät wohl eher zu schlecht.

Ich selbst habe fast alle Filme im MKV Container (inkl. Untertitel und Kapitelinformationen) im h264 Format (seit einigen Monaten auch h264-10bit und h265) lasse den Audiostream aber unberührt, falls ich irgednwann doch auf DTS-fähige Geräte umsteigen sollte. Standardmäßig stelle ich beim Transkodieren q=16-18 und die Geschwindigkeit auf medium. Bezüglich der weiteren Einstellungen für x264 gibt es in den einschlägigen Foren viele Empfehlungen, das ist dann allerdings eine sehr umfangreiche Materie.

Ein paar allgemeine Hinweise:

Je langsamer der Konverter arbeitet, desto kleiner wird die Ausgabedatei dank besserer Komprimierung

Kleinere Bildformate (z.B. 720p) brauchen im Vergleich zu den Größeren (z.B. 1080p) eine bessere Qualität. 1080p mit q=20 dürfte ein ähnliches Bildergebnis liefern wie 720p mit q=18

VBR ist wahrscheinlich immer besser, außer du musst deine Videos in eine bestimmte Größe hineinzwängen (z.B. auf CD-Format bringen). letzteres ist aber heute wohl eher nicht mehr erforderlich.

Bei DVD's mit anamorphen Inhalten solltest du überlegen, ob du nicht anamorph beibehälst. Die Datei wird dann zwar größer, aber du hast mehr Pixel und dadurch eine bessere Bildualität.

Jede Konvertierung führt zu mehr oder weniger Verlusten bei der Bildqualität. Viele User behalten daher lieber die Originalformate und setzten bei Bedarf lieber auf den Transkoder. Dabei wird die Transkodertechnik und die Hardware mit der Zeit eventuell besser, die Verluste beim Transkodieren sind dann aber immer vorhanden.

Letzteres gilt ganz besonders bei Inhalten die interlaced sind: Da ist es oft wirklich besser, die gar nicht anzufassen und in andere Formate umzuwandeln.

Software:

Ich denke, dass die meisten Plex-User Handbrake benutzen. Das hat den großen Vorteil, dass die meisten gängigen Einstellungen als unterschiedliche Profile in der Software schon hinterlegt sind.

Ich selbst nutze hingegen MeGui, wahrscheinlich weil ich gern an den Einstellungen rumspiele und das Programm mehr Möglichkeiten bietet (MeGui hat übrigens eine sehr ausführliche Wiki in der viele Probleme beim Transkodieren detailliert erklärt werden).

Beide basieren im Wesentlichen auf AviSynth und FFmpeg und können theoretisch gleich eingestellt werden und liefern dann auch dieselben Ergebnisse. Für den Anfang ist Dank der Presets wahrscheinlich Handbrake besser geeignet.

Da der Plex-Transkoder auch FFmpeg nutzt könntest du, wenn du das so wirklich wünschst, die Einstellungen des Transkoders 1:1 dort eingeben.

Batchjobs:

Muss man viele Dateien konvertieren sind Batchjobs interessant.

Sehr einfach gehen Batchjobs direkt mit FFmpeg.

Handbrake hat auch eine Commandline Version, die dafür gedacht ist.

Bei meGui werden die Aufgaben automatisch innen Batchjob angelegt und dann in der Regel der Reihe nach abgearbeitet. Dabei wird das Material in einem ersten Schritt recht gut analysiert, wenn du nicht die "Ein-Schritt-Variante" wählst.

Legst du Wert darauf, weil du z.B. eine Farbkorrektur brauchst oder das Deinterlacen prüfen willst, ist das vielleicht die geeignetere Software.

Ich hoffe, das hilft dir weiter

1 Like

Danke für die ausführliche Rückmeldung - ich denke das wird auch einigen anderen weiterhelfen. 

Konkret zu meinem Fall sagst du ja auch zu Beginn: 

Generell bist du mit mp4, h264 und aac schon richtig. Das Format wird von den meisten Clients direkt verarbeitet, so dass Plex nicht transkodieren muss.

Wenn ich das aber in meinen geposteten Logfiles richtig sehe HAT Plex transkodiert, richtig? Nicht das ich damit ein Problem hätte - ich würde es nur gern wissen warum dies nötig war. Kann man das an dem Ausschnitt erkennen? Und wenn nicht - wonach kann ich suchen/greppen?

Der Plex Transcoder heißt zwar so ist aber nichts anderes als FFmpeg. Wenn du die einzelnen Befehle interprätieren willst kannst, du dich daher nach FFmpeg richten: https://www.ffmpeg.org/ffmpeg.html

Die Befehlszeile sieht mir nicht danach aus, als ob dein Videostream transkodiert wird.

"-vcodec copy" kopiert dein Videostream in die Ausgabedatei hinein. Stattdessen wird dein Audio von AC3 in AAC umgewandelt und außerdem die Datei segmentiert (letzteres ist beim Transkodieren in Plex standard)

Das sollte deine CPU allerdings nicht sonderlich belasten.

Hallo dieoma,

hast Du mal traco angeschaut oder die script-sammlungen, die Handbrake-CLI nutzen? Ich selbst lass die vdr Aufnahmen so wie sie sind, und habe Plex da "anflantscht" um mein Aufnahmeverzeichnis auch schauen zu können.

Da der VDR am TV steckt ist das kein Thema, ... bei einem Headless-Server allerdings würde ich mir eine Batch-Job-Strecke mittels traco bauen, damit Aufnahmen direkt nach Ende der Aufzeichnung umgewandelt und in ein entsprechendes Verzeichnis geschoben werden.

Die beiden Plugins (Scraper & LiveTV) für VDR kennst Du aber schon? Nichts offizielles, aber auf github und im vdr-portal wirst Du fündig.

VG,

Alex

Ich klinke mich mal auch kurz ein. Mit zwei kleinen Kiddies in der Welt ist mir das ganze Gefrickel eigentlich zuwider. Handbrake sah nach den ersten Klicks recht komplex aus (oder anders gesagt: ich möchte nicht soviel Zeit aufwenden, mich in solch ein Programm einzulesen). Ziemlich gut finde ich iSkysoft, was ebenfalls konvertiert, allerdings nur eine Audiospur erlaubt. Von den Ergebnissen war ich recht beeindruckt. Kennst du, slipstreams, oder sonstwer ein Programm, was ähnlich einfach zu bedienen ist, jedoch mehrere Audiospuren erlaubt?

Ich klinge mich mal auch kurz ein. Mit zwei kleinen Kiddies in der Welt ist mir das ganze Gefrickel eigentlich zuwider. Handbrake sah nach den ersten Klicks recht komplex aus (oder anders gesagt: ich möchte nicht soviel Zeit aufwenden, mich in solch ein Programm einzulesen). Ziemlich gut finde ich iSkysoft, was ebenfalls konvertiert, allerdings nur eine Audiospur erlaubt. Von den Ergebnissen war ich recht beeindruckt. Kennst du, slipstreams, oder sonstwer ein Programm, was ähnlich einfach zu bedienen ist, jedoch mehrere Audiospuren erlaubt?

Das Problem mit mehren Audiostreams, Untertitel & Co. lässt sich sehr einfach lösen, wenn du als End-Container MKV wählst.

Ich selbst konvertiere immer nur den Videostream (ohne Audio) und stelle mir dann die endgültige Datei nach meinen persönlichen Wünschen zusammen.

Mit dem Programm MKVmerge geht das einfach und schnell:

Das Programm ist m. E. ziemlich selbsterklärend.

Einfach die Ursprungsdatei(en) und deine neu enkodierte Datei zusammen in MKVmerge laden (z.B. mit drag-and-drop). Container und Formate in den Ausgangs-Dateien sind dabei ziemlich egal.

Das Programm zeigt dir dann alle vorhandenen Streams, Untertitel, Kapitelinformationen usw. an.

Bei Bedarf kannst du hier noch nachbessern (z.B. bei Videostreams das Bildschirmverhältnis oder bei Untertiteln die Sprache ändern) und die Reihenfolge ändern.

Dann wählst du noch die Bestandteile aus, die du in deiner Ausgabedatei haben willst und startest das Muxen. Dabei werden die Streams nicht konvertiert.

Es gibt natürlich auch noch andere und zum Teil schnellere Lösungswege (z.B. Batchdatei mit FFmpeg) aber hiermit kommst du bestimmt einfach und schnell ans Ziel

Viel Erfolg

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