¿Por qué la codificación VP8 / 9 es tan lenta en comparación con H.264?

10

Recientemente, quería probar los códecs Webm VP8 y VP9, ​​pero cuando ejecuté ffmpegpara codificar un archivo H.264 MP4 en uno de los otros dos códecs, me di cuenta de que la codificación es (en casi un orden de magnitud) más lenta.

Un video de 1080p30 de H.264 a VP9 a 3 MBit / s se codifica a alrededor de 6-7 fps, mientras que el mismo video codifica a alrededor de 40 fps a H.264. libvpx-vp9Usé el códec ffmpegpara el formato VP9. También obtengo los mismos resultados para VP8 y Theora.

¿Alguien puede explicarme por qué VP9 es mucho más lento? Probé una máquina diferente que me dio resultados similares usando Handbrake.

comfreak
fuente
askubuntu.com/questions/270625/…
Ciro Santilli 新疆 改造 中心 996ICU 六四 事件

Respuestas:

10

libvpx-vp9es un codificador mucho más lento que, libx264pero la configuración predeterminada de los hilos en ffmpeg (0 = auto) no es efectiva para libvpx. Ajustarlo manualmente da un aumento de velocidad. p.ej

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

En una máquina de 4 núcleos, cuando codifico un flujo H.264 1080-30p, recibo un aumento de 3.8 fpsa 10 fps.

Gyan
fuente
También se debe mencionar que hay diferentes presets de velocidad, es decir, -presetpara libx264y -speedpara libvpx-vp9. Ver ffmpeg -h full. Estos pueden marcar una gran diferencia, pero también afectan la calidad o la eficiencia de la compresión.
slhck
Lo probé en máquinas bastante antiguas, pero utilicé 4 hilos ya que ambas máquinas son de cuatro núcleos. La -speedopción no hizo una gran diferencia para mí
comfreak
@comfreak Vea también: developers.google.com/media/vp9/the-basics
slhck
3

VP9 es un códec más complejo que proporciona una mejor compresión. La relación compresión / rendimiento de video tiende a ser exponencial. Debe esperar que el reemplazo de VP9 (AV1) sea aún más lento.

szatmary
fuente
1
En otras palabras, a pesar de que el códec "solo" produce una mejora de tamaño relativamente pequeño, ¿puede ser mucho más lento? ¿Son representativos los resultados que obtuve?
Comfreak
1
VP9 puede ser hasta un 50% más eficiente en términos de calidad, @comfreak. No llamaría así de pequeño. No puede simplemente comparar el tamaño del archivo resultante.
slhck
@slhck: ¿Entonces está diciendo que 3MBit / s puede codificar más información original que H.264 y, por lo tanto, una velocidad de bits más baja que el material fuente en H.264 podría ser una opción para acelerar las cosas?
Comfreak
1
@comfreak Usar una tasa de bits más baja no aumentará automáticamente la velocidad del proceso de codificación. Solo digo que existe una compensación entre la eficiencia de compresión y la velocidad, y muchos proveedores de transmisión, por ejemplo, prefieren invertir el tiempo de la CPU para crear transmisiones de mayor calidad a una tasa de bits general más baja, para ahorrar espacio y ancho de banda. El uso de códecs más eficientes (como VP9 o HEVC sobre H.264) también ayuda en ese sentido.
slhck
Pero, esencialmente, si la velocidad es el factor más importante para usted, debe seguir usando códecs más antiguos (por ejemplo, H.264), ajustes preestablecidos menos eficientes de compresión y quizás también buscar codificación asistida por GPU, por ejemplo, con NVENC.
slhck