¿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.


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.


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


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.