Ulli_T. Posted June 14, 2020 Share Posted June 14, 2020 Hallo, meine TV Aufnahmen (wandle ich aktuell noch mit einem externen Programm in eine MP4 Datei um, weil für mich die Größe des Ergebnisses besonders wichtig ist. Grundsätzlich funktioniert bei mir natürlich auch die automatische Umwandlung mit "generate mp4/mp3". Was mir aber daran nicht gefällt, ist die Größe des Ergebnisses. Beispiel (einer ca. 100 Minuten TV Aufnahme von Tele5 / SD): MPG: 1,8 GB MP4 mit generate mp4/mp3: 1,6 GB MP4 mit VideoProc: 0,9 GB Beim VideoProc (siehe auch Bild) ist meiner Ansicht nach nichts eingestellt, was diesen großen Unterschied erklärt. Auch kann ich bei den beiden MP4s keinen nennenswerten Unterschied beim Ansehen erkennen. Da ich leider den Befehl, der hinter dem generate mp4/mp3 nicht verstehe: Könnte mir jemand sagen, was ich daran ändern muss, damit ich anschließend ein kleineres, aber möglichst nicht/kaum schlechteres Ergebnis bekomme? (mp3 muss natürlich weiterhin funktionieren, weil ich das auch nutze). Vielen Dank Ulli Quote Link to comment
YARD2 Posted June 14, 2020 Share Posted June 14, 2020 Hier sind die ffmpeg Einstellungen beschrieben https://trac.ffmpeg.org/wiki/Encode/H.264 Danach kannst mal etwas ausprobieren was dir zusagt. Am einfachsten den CRF von 18 auf 23 stellen. Quote Link to comment
Griga Posted June 14, 2020 Share Posted June 14, 2020 Die FFmpeg-Kommandozeile kann man mit Rechtsklick auf das Media Server Tray-Icon -> Mit Adminrechten konfigurieren -> Aufgaben -> generate mp4/mp3 -> Bearbeiten verändern. Das ganze ist etwas kompliziert, weil hier mit Fallunterscheidungen gearbeitet wird und je nach Input etwas anderes passiert. Was die enthaltenen Bedingungen in Großbuchstaben und geschweiften Klammern bedeuten, ist im Media Server-Änderungsverlauf (siehe Webinterface -> Links-Seite) für die Version 2.0.3 ersichtlich. Die Anweisungen an FFMpeg sind so formuliert, dass das Umpacken in MP4 nach Möglichkeit ohne Transkodierung der Videodaten stattfindet, damit es schnell und ohne Qualitätsverluste über die Bühne geht. H.264 und HEVC Video werden 1:1 übernommen. Dabei gibt es dann praktisch kaum eine Größenänderung. Nur MPEG2 Video, da ungebräuchlich in MP4, wird in H.264 verwandelt. Das dürfte der hier angesprochene Fall sein vor 5 Stunden schrieb Ulli_T.: Beispiel (einer ca. 100 Minuten TV Aufnahme von Tele5 / SD): MPG: 1,8 GB MP4 mit generate mp4/mp3: 1,6 GB da eine MPG-Datei zwangsläufig MPEG2 Video enthält. Der dafür zuständige Teil der Kommandozeile ist {IFN H264}{IFN HEVC}libx264 -vf yadif -pix_fmt yuv420p -profile:v baseline -preset medium -crf 18 -vf "scale=trunc(in_w/2)*2:trunc(in_h/2)*2"{ENDIF}{ENDIF} Lies: "Wenn nicht H.264 Video und nicht HEVC Video dann..." Dort sieht man auch den von @YARD2 angesprochenen crf Wert. Aber der Teil gilt wie gesagt nur für Aufnahmen mit MPEG2 Video. Bei HD-Aufnahmen mit H.264 oder HEVC Video bleibt er wirkungslos. Sollen diese auch neu codiert werden, müsste man {IF H264}copy{ENDIF}{IF HEVC}copy{ENDIF} entfernen und auch die Bedingungen {IFN H264}{IFN HEVC} mitsamt dem dazugehörigen {ENDIF}{ENDIF} (aber nicht das dazwischen!). Allerdings ist eine Umwandlung von H.264 in stärker komprimiertes H.264 eine zeitaufwändige Sache, die selbst eine schnelle CPU ins Schwitzen bringen und einige Zeit mit 100% Last laufen lassen wird, womöglich deutlich länger als der Film dauert. Und Qualitätsverluste gibt es dabei auf jeden Fall. Wieviel man für welche Reduzierung der Dateigröße in Kauf nimmt, ist Geschmackssache. Um optimale Ergebnisse zu erzielen, müsste man sich tiefgründiger mit den Möglichkeiten des libx264 Encoders auseinandersetzen und einige Versuche durchführen, da das Ergebnis auch immer vom Ausgangsmaterial abhängt.... also ich würde lieber bei VideoProc bleiben Quote Link to comment
Ulli_T. Posted June 15, 2020 Author Share Posted June 15, 2020 Super Tipps! Vielen Dank! Ich werde mal probieren, wie lange die Umwandlung dann dauert. Der Rechner ist nicht der Schnellste... Quote Link to comment
YARD2 Posted June 15, 2020 Share Posted June 15, 2020 Evtl kannst du die Intel GPU Enc benutzen (falls es ein Intel System ist) https://trac.ffmpeg.org/wiki/Hardware/QuickSync Quote Link to comment
Ulli_T. Posted June 15, 2020 Author Share Posted June 15, 2020 ja ist ein Intel und dieses andere von mir benutzte Programm benutzt das wohl auch. Quote Link to comment
Ulli_T. Posted June 15, 2020 Author Share Posted June 15, 2020 (edited) Ich habe den Wert von 18 auf 23 (was ja anscheinend der Standardwert ist) geändert. Wie die Anleitung verspricht, reduziert sich die Größe der MP4 Datei erheblich und ist nun ungefähr halb so groß wie die ursprüngliche MPG Datei. Das finde ich prima - vor allem, weil für meine alten Augen kaum ein Unterschied in der Bildqualität zu erkennen ist... Leider überfordert mich der Inhalt vom Link bezüglich der GPU Encodierung. Einfach so wird die GPU leider nicht benutzt (sagt mir zumindest der Taskmanager). Was ich dafür ändern muss, kann ich aus dem englischen Text leider nicht rauslesen. Mein Prozessor stammt aus der Gemini Lake Baureihe. Daran sollte es also nicht scheitern. Wenn ich jetzt noch die Geschwindigkeit der Umwandlung steigern, bzw. die Belastung der CPU etwas senken könnte... Edited June 15, 2020 by Ulli_T. Quote Link to comment
YARD2 Posted June 15, 2020 Share Posted June 15, 2020 Hier mal ein schneller Versuch, nicht sonderlich groß getestet (ffmpeg version 4.2.1). ffmpeg.exe -i "{SOURCE_FILE}" -y -map 0:v -vf yadif -init_hw_device qsv=hw -filter_hw_device hw -vcodec h264_qsv -crf 18 -map 0:a? -c:a aac "{PATH_FILENAME}.mp4" Erstelle eine neue Aufgabe bevor du die aktuelle löschst ? Quote Link to comment
Ulli_T. Posted June 16, 2020 Author Share Posted June 16, 2020 (edited) @YARD2 Grundsätzlich könnte Dein "schneller Versuch" genau die Lösung für mich sein. Vielen Dank dafür. Leider gibt es aber noch ein dickes "Aber". Natürlich habe ich in den letzten 2 Stunden viel mehr ausprobiert als ich gleich schreibe. Ich denke aber, dass folgendes das Problem genau genug beschreibt: Ich habe eine Aufgabe (Kopie der Original generate mp3/mp4) und diese getestet --> wird nach Aufnahmeende gestartet und funktioniert. dann habe ich den Parameter Teil gelöscht und Deine Anweisung da hinein geschrieben (ab "-i") --> nach Aufnahmeende passiert nichts. Wenn ich Deinen Befehl aber manuell absetze (natürlich Dateinamen statt der Platzhalter), dann funktioniert die MP4 Erstellung prächtig und nutzt definitiv auch die GPU. Woran könnte es bloß liegen, dass Dein Befehl / Paramater nach der Aufnahme nicht die gewünschte Aktion auslöst. Ulli Edited June 16, 2020 by Ulli_T. Quote Link to comment
YARD2 Posted June 16, 2020 Share Posted June 16, 2020 Mit der Aufgabe hab ich es nicht getestet, war keine Zeit mehr. Bei mir wird es auch nicht gestartet. Laut Log ist es gestartet, das ffmepg log sagt dass e den Direct3D nicht initialisieren konnte. Probier mal das. Damit ging es bei mir. -i "{SOURCE_FILE}" -map 0:v -vf yadif -vcodec h264_qsv -crf 18 -map 0:a? -c:a aac "{PATH_FILENAME}.mp4" Quote Link to comment
Ulli_T. Posted June 17, 2020 Author Share Posted June 17, 2020 Hervorragend !!! Besten Dank !!! Genau so habe ich mir das gewünscht !!! Obwohl ich nur einen Celeron J4105 in dem "DVB Rechner" habe, läuft die Umwandlung mit Nutzung der GPU relativ zügig (10 Minuten SD Aufnahme in gut 1 Minute). Und erstaunlicher Weise ist das Ergebnis sehr kompakt und wird auf ca. 30% der mpg Größe komprimiert. Also vielen Dank Euch beiden für die Hilfe und die ausführlichen Erklärungen. Quote Link to comment
YARD2 Posted June 17, 2020 Share Posted June 17, 2020 (edited) Sehr schön. Musst halt schauen ob die die Qualität/Größe passt. Wenn nicht dann den crf anpassen. Default ist 23. Ich habs auf 18 gesetzt zum Testen. The range of the CRF scale is 0–51, where 0 is lossless, 23 is the default, and 51 is worst quality possible. @Griga Die Intel GPU Umwandlung könnt ihr als Aufgabe gleich mit einbauen ? Edited June 17, 2020 by YARD2 Quote Link to comment
Ulli_T. Posted June 19, 2020 Author Share Posted June 19, 2020 Die Qualität ist (mit meinen altersschwachen Augen) kaum von der MPG Aufnahme zu unterscheiden und die Kompression (habe ich ja schon geschrieben) bei 18 ist besser als ich gehofft hätte: Fazit: Etwas weniger als 1/3 der aufgenommenen Größe bei unwesentlich schlechterer Bildqualität - und das mit vertretbarer Umrechnungszeit mit einem über 2 Jahre alten Billig Prozessor (Celeron J4105) - das ist weit mehr als ich erwartet habe! Quote Link to comment
Griga Posted June 21, 2020 Share Posted June 21, 2020 Am 17.6.2020 um 17:51 schrieb YARD2: Die Intel GPU Umwandlung könnt ihr als Aufgabe gleich mit einbauen Ich glaube nicht, dass dafür ein großer Bedarf besteht. Das jemand in einer Zeit, in der ein Festplatten-Gigabyte nur noch 0,03 € kostet, Aufnahmen möglichst klein haben will, dürfte eher die Ausnahme sein. Vielleicht, wenn man sie auf einem Smartphone mit auf Reisen nehmen will... bei mir gab es den Bedarf zuletzt vor 15 Jahren, als ich noch Aufnahmen in DivX verwandelt und auf 700 MB-CDs archiviert habe. Zudem ist MPEG2 Video auf dem absteigenden Ast und wird wohl zusammen mit SD aussterben. H.264 und HEVC werden wie gesagt einfach untranskodiert in das Ziel-Containerformat übernommen. Das braucht keine GPU-Beschleunigung. Von Interesse ist sie heutzutage eher beim transkodierten Streaming (insbesondere bei on-the-fly-Transkodierung von TV), wenn man zwingend ein bestimmtes Zielformat und wegen Bandbreiten-Beschränkungen eine geringere Bitrate braucht, aber damit die Server CPU nicht übermäßig belasten will. Eine an die Nutzung bestimmter GPUs angepasste (und gut ausgetestete) ffmpegprefs.ini und iphoneprefs.ini würde ich gerne in den DMS mit aufnehmen. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.