News FFmpeg 4.0: Neue Version bringt besseres Hardware-Decoding

Hat jemand eine Ahnung ob sich was auf der Kommandozeile geändert hat?

Bei FFMPEG2 zu FFMPEG3 wurd ja einiges entfernt oder geändert...
 
Infi88 schrieb:
madvr+lav+ngu+Nvdia, ist ziemlich insane muss man sagen. Allerdings brauch Intel natürlich deutlich weniger Strom.

Ich finde madvr, ffmpeg, LAV und AMD von der Bildquali besser. Allerdings läuft da die 290X schon derb am Anschlag.
 
Galde schrieb:
Hat jemand eine Ahnung ob sich was auf der Kommandozeile geändert hat?

Bei FFMPEG2 zu FFMPEG3 wurd ja einiges entfernt oder geändert...

Meines Wissens nicht. Und genau deswegen liefern die meisten Distris auch noch separat ein ffmpeg2 Paket aus, zusätzlich zur aktuellen Version.
 
Wie üblich bietet das FFmpeg Project aus rechtlichen Gründen nur den Quellcode zum Download an

Und was sind diese rechtlichen Gründe?
Steht leider nicht im ffmpeg Wikipedia Artikel.
 
https://www.ffmpeg.org/legal.html

Wenn sich herausstellt, daß ein verwendeter Codec/Algorithmus durch ein Patent geschützt wird, geht man einem Verklagtwerden aus dem Weg, indem man nur den Quelltext zur Verfügung stellt, nicht aber etwas fertig Kompiliertes. Text ist nicht problematisch, Binärdateien dagegen schon. Gibt eine witzige Anekdote dazu mit PGP. :) Zwar ohne Patentrecht, aber gleiches Prinzip.
 
Zuletzt bearbeitet:
Euathlus schrieb:
welcher davon bei h264 und h265 die beste qualität bietet.

H.264 stirbt langsam, H.265 hat sich erst gar nicht breit etabliert, und wird vom lizenzkosten-freien(!) und besseren AV1 verdrängt.

Wer jetzt vorhat, seine Video-Sammlung auf Festplatte zu bringen, sollte etwas warten, bis der AV1-Encoder optimiert ist, und dann wegen der besseren Bildqualität in Software encodieren. Wozu hat die 16 Threads im Ryzen 2700X? :D

Das coole ist, dass die gierige Industrie sich ihr eigenes Grab geschaufelt hat. H.264 konnte man noch mit übersichtlichem Aufwand und zu vertretbaren Konditionen lizensieren, bei H.265 haben sie jeden Anstand verloren ... und siehe da, der Rest der IT-Industrie hat sich zusammen gesetzt und ein lizenzfreies Format gebaut.
 
Zuletzt bearbeitet:
Ja, das ist absehbar. Wenn man sich die Lizenzbedingungen von H.265 anguckt weiß man, dass es so nicht überleben wird.
Das war bei H.264 noch in Ordnung, und mich wundert es (im Vergleich) nicht, dass H.265 von vielen Anbietern gemieden wird.

Und auch das folgende Mimimi des MPEG LA-Gründers persönlich bestätigt meine Einschätzung:
Wegen eigener Probleme und der freien Konkurrenz der Aomedia sieht der Gründer der Moving Pictures Expert Group deren Lizenzmodell in Gefahr. Er zieht daraus den abwegigen Schluss, dass damit auch die Weiterentwicklung von Videocodecs gefährdet werde.
Der zweite Satz entbehrt nicht einer gewissen Komik :D

https://www.golem.de/news/kaputtes-...-sieht-videocodecs-in-gefahr-1801-132479.html

Der Witz ist ja, dass man selbst mit den jetzt sehr hohen Lizenzzahlungen noch nicht weiß, ob man hinterher nicht doch verklagt wird.

Bei AV1 sind nicht zufällig alle Branchengrößen mit im Boot, da war der Leidensdruck wohl hoch genug.
 
Zuletzt bearbeitet:
HaZweiOh schrieb:
Schade, dass man hier keine thump ups geben kann. Danke für deine sehr hilfreichen Beiträge! Kannte AV1 noch gar nicht.
 
Hat jemand eine (sichere) Quelle wo ich mich mir fertig kompilierte 4.0 Version für Windows zeihen kann mit Nvenc support?
 
@HaZweiOh
Schön, du redest von HEVC, diese Probleme sind mir durchaus bekannt. Aber bei AVC mit seiner unglaublich großen Verbreitung und Unterstüzung heute schon vom Aussterben zu reden halte ich doch für sehr übertrieben. Es werden socherlich noch einige Jahre ins Land ziehen, bis AVC verschwunden ist, davon kannst du ausgehen.
 
Beitrag schrieb:
Schön, du redest von HEVC, diese Probleme sind mir durchaus bekannt. Aber bei AVC mit seiner unglaublich großen Verbreitung ...

Ja, H.264 ist natürlich verbreitet. Ich meinte das, wie ich oben schrieb, aus der heutigen Perspektive: "Wenn ich jetzt überlege, meine Filmsammlung zu rippen, welchen Codec sollte ich wählen?" Dann wäre meine Antwort: noch etwas Optimierung bei AV1 abwarten und dann damit starten, bevor man später nochmal neu codiert.

H.264 wird vermutlich auch in den Hardware-Codecs verbleiben. Ich kann mir aber vorstellen, dass die weniger benutzte Formate wie H.265 später wieder entfernt werden. Bei immer neuen Codecs musst irgendwann mal Ballast abgeworfen werden.
 
Zuletzt bearbeitet:
Ich habe zum Thema Hardwaredecoding ein paar tests gemacht und hier mal der Vergleich der genutzten Resourcen

Encodierung mit x264 (CPU)
Code:
ffmpeg40\bin\ffmpeg.exe -i "E:\input.ts" -vcodec libx264 -preset slow "E:\output.mp4"
tm_x264.png


Encodierung mit Intel Quick Sync (Monitor ist an einer nVidia GTX760 angeschlossen)
Code:
ffmpeg40\bin\ffmpeg -i "E:\input.ts" -c:v h264_qsv -preset slow  "E:\output.mp4"
tm_qs.png

Encodierung über nVidia, dekodieren über CPU
Code:
ffmpeg40\bin\ffmpeg -i "E:\input.ts" -vcodec h264_nvenc -preset slow "E:\output.mp4"
tm_nv_enc.png

Dekodieren über nVidia, über encodierung CPU
Code:
ffmpeg40\bin\ffmpeg   -c:v mpeg2_cuvid -i "E:\input.ts"   -vcodec libx264 -preset slow "E:\output.mp4"
tm_nv_dec.png

Encodieren und Decodieren über nVidia
Code:
ffmpeg40\bin\ffmpeg  -hwaccel cuvid -c:v mpeg2_cuvid -i "E:\input.ts"   -c:v h264_nvenc "E:\output.mp4"
tm_nv_enc_dec.png
 
Zuletzt bearbeitet:
Klar, hier die Ergebnisse

CPU: Intel i7 4770k
GPU: Geforce GTX 760

FFMPEG Settings wie oben (Preset slow) mit -acodec aac 160KBs


libx264: 115 FPS
Quick Sync: 420 FPS
NVEnc + CPU: 305 FPS
NVDec+ CPU: 120 FPS
NVenc + NVDec: 400 FPS

VCSDK_DEC_006.PNG

NVidia hat auf der Grafikkarte eine Encoding und eine Decoding-Einheit. Die man getrennt und kombiniert nutzen kann.

Um den Dekoder verwenden zu können muss man wissen welches Format im Input ist und das dann angeben. Unterstützte Formate:

Code:
h263_cuvid           Nvidia CUVID H263 decoder (codec h263)
h264_cuvid           Nvidia CUVID H264 decoder (codec h264)
hevc_cuvid           Nvidia CUVID HEVC decoder (codec hevc)
mjpeg_cuvid          Nvidia CUVID MJPEG decoder (codec mjpeg)
mpeg1_cuvid          Nvidia CUVID MPEG1VIDEO decoder (codec mpeg1video)
mpeg2_cuvid          Nvidia CUVID MPEG2VIDEO decoder (codec mpeg2video)
mpeg4_cuvid          Nvidia CUVID MPEG4 decoder (codec mpeg4)
vc1_cuvid            Nvidia CUVID VC1 decoder (codec vc1)
vp8_cuvid            Nvidia CUVID VP8 decoder (codec vp8)
vp9_cuvid            Nvidia CUVID VP9 decoder (codec vp9)
 
Zuletzt bearbeitet:
Thx. Und wie sah's mit der Bildqualität aus? Ungefähr gleich?

Edit:
Hab selbst mal getestet (AVC -> AVC), nur qsv nicht (iGPU deaktiviert).
(Quelldatei: .flv, 52,7 MB, Dauer 03:47)

CPU: 55 fps 2.18x 68.8 MB
CPU + NV-decode: 57 fps 2.29x 68.9 MB
NV-encode + CPU-decode: 506 fps 20.2x 54.2 MB
NV-de+encode: 674 fps 27x 54.6 MB

(Benutzte Hardware in der Signatur)
 
Zuletzt bearbeitet:
Die FPS sind sicher nicht das Maximum, weil bei
Code:
-preset slow
2-Pass encoding verwendet wird - was es langamer aber dafür qualitativ besser macht.


Beitrag schrieb:
Thx. Und wie sah's mit der Bildqualität aus? Ungefähr gleich?

Man kann bei dem nVidia Encoder (wie auch beim x264 CPU-Encoer) die Bitrate und die Qualität festlegen.

Qualität zwischen 20 und 30
Code:
ffmpeg -i "e:\input.ts" -vcodec h264_nvenc  -qmin 20 -qmax 30 "e:\output.mp4"

Bitrate 1000k, darf jedoch zwischen 500k und 3000k variieren
Code:
ffmpeg -i "e:\input.ts" -vcodec h264_nvenc -b:v 1000k -minrate 500k -maxrate 3000k  "e:\output.mp4"


Mir ist aufgefallen, dass Qualität x264 nicht gleich Qualität NVEnc ist - NVEnc ist immer etwas schlechter. Wenn man die miteinander vergleichen will muss man die Bitrate gleich setzen und dann die Bildqualität ansehen - und da ist x264 immer etwas im Vorteil - aber hey 55 FPS VS 674 FPS bei dir.

Deswegen ist nVidia's Haupteinsatzzweck auch das Streamen von Games und nicht das Archivieren von Filmen. Wenn man z.B. 4k h265-Dateien in h264 encodieren will macht es imho Sinn, NVDec zum dekodieren zu verwenden. Dabei wird die CPU um den Dekodierungsaufwand entlastet und hat mehr Ressourcen zum Encodieren.


@Beitrag wie hoch ist deine Auslastung bei der GPU-Konvertigerung? Könntest du auch 2 Dateien parallel konvertiern?
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben