Warum ist die Codierung von VP8 / 9 im Vergleich zu H.264 so langsam?

11

Kürzlich wollte ich die Webm-Codecs VP8 und VP9 ausprobieren, aber als ich ffmpegeine H.264 MP4-Datei in einen der beiden anderen Codecs codierte, stellte ich fest, dass die Codierung (um fast eine Größenordnung) langsamer ist.

Ein 1080p30-Video von H.264 zu VP9 mit 3 MBit / s wird mit ungefähr 6-7 fps codiert, während dasselbe Video mit ungefähr 40 fps zu H.264 codiert wird. Ich habe den libvpx-vp9Codec ffmpegfür das VP9-Format verwendet. Ich bekomme die gleichen Ergebnisse auch für VP8 und Theora.

Kann mir jemand erklären, warum VP9 so viel langsamer ist? Ich habe eine andere Maschine ausprobiert, die mir mit Handbremse ähnliche Ergebnisse lieferte.

comfreak
quelle
askubuntu.com/questions/270625/…
Ciro Santilli 法轮功 病毒 审查 六四. 法轮功

Antworten:

11

libvpx-vp9ist ein viel langsamerer Encoder als, libx264aber die Standardeinstellungen von Threads in ffmpeg (0 = auto) sind für libvpx nicht wirksam. Durch manuelles Einstellen wird die Geschwindigkeit erhöht. z.B

ffmpeg -i in.mp4 -c:v libvpx-vp9 -threads 4 out.mp4

Auf einem 4-Kern-Computer bekomme ich beim Codieren eines 1080-30p H.264-Streams eine Beule von 3.8 fpsbis 10 fps.

Gyan
quelle
Man sollte auch erwähnen, dass es verschiedene Geschwindigkeitsvoreinstellungen gibt, dh -presetfür libx264und -speedfür libvpx-vp9. Siehe ffmpeg -h full. Diese können einen großen Unterschied machen, wirken sich aber auch auf die Qualität oder die Komprimierungseffizienz aus.
Slhck
1
Ich habe es auf ziemlich alten Maschinen versucht, aber ich habe 4 Threads verwendet, da beide Maschinen Quad-Core sind. Die -speedOption machte keinen großen Unterschied für mich
Comfreak
@comfreak Siehe auch: developer.google.com/media/vp9/the-basics
slhck
3

VP9 ist ein komplexerer Codec, der eine bessere Komprimierung bietet. Das Verhältnis von Videokomprimierung zu Leistung ist tendenziell exponentiell. Sie sollten erwarten, dass der VP9-Austausch (AV1) noch langsamer ist.

szatmary
quelle
1
Mit anderen Worten, obwohl der Codec "nur" eine relativ geringe Größenverbesserung bewirkt, kann er viel langsamer sein? Sind die Ergebnisse repräsentativ?
Comfreak
1
VP9 kann in Bezug auf die Qualität bis zu 50% effizienter sein, @comfreak. Ich würde das nicht klein nennen. Sie können die resultierende Dateigröße nicht einfach vergleichen.
Slhck
@slhck: Sie sagen also, dass 3 MBit / s mehr Originalinformationen als H.264 codieren können und daher eine niedrigere Bitrate als das Quellmaterial in H.264 eine Option sein könnte, um die Dinge zu beschleunigen?
Comfreak
1
@comfreak Die Verwendung einer niedrigeren Bitrate erhöht die Geschwindigkeit des Codierungsprozesses nicht automatisch. Ich sage nur, dass es einen Kompromiss zwischen Komprimierungseffizienz und Geschwindigkeit gibt, und viele Streaming-Anbieter würden beispielsweise lieber die CPU-Zeit investieren, um Streams mit höherer Qualität bei niedrigerer Gesamtbitrate zu erstellen, um Platz und Bandbreite zu sparen. Die Verwendung effizienterer Codecs (wie VP9 oder HEVC über H.264) hilft auch in dieser Hinsicht.
Slhck
Wenn jedoch die Geschwindigkeit für Sie der wichtigste Faktor ist, sollten Sie sich an ältere Codecs (z. B. H.264) und weniger komprimierungseffiziente Voreinstellungen halten und sich möglicherweise auch mit der GPU-unterstützten Codierung befassen, z. B. mit NVENC.
Slhck