Estoy creando ajustes preestablecidos para que nuestros usuarios conviertan los videos a un formato apropiado para nuestro repositorio de videos en línea. Dado que ha pasado un tiempo desde que construí algo como esto desde cero, he estado mirando lo que otros recomiendan y noté que muchos de ellos recomiendan específicamente la codificación de tasa de bits variable. Por ejemplo:
https://support.google.com/youtube/answer/1722171?hl=en
Incluso con transmisión progresiva o pseudotransmisión, ¿no introduciría eso pausas y tartamudeos en la reproducción una vez que llegue a un segmento con una tasa de bits alta? Simplemente parece extraño como recomendación general cuando es probable que cree una mala experiencia de reproducción. ¿O simplemente estoy sobreestimando los problemas ya que han pasado algunos años desde la última vez que lo investigué? ¿Utiliza generalmente una tasa de bits variable para la entrega en línea en estos días?
Los reproductores almacenan en búfer las transmisiones. Cuanto mayor sea el tamaño del búfer, mayor será la ventana que tiene el codificador para usar tasas de bits más altas para el contenido duro, y luego menos bits antes o después para el contenido fácil, para lograr una calidad similar para todo el video.
Asumiré que vas a usar h.264 (también conocido como AVC) como códec, ya que es el estándar de facto para la transmisión de video en Internet. VP8 no es tan buena calidad. VP9 puede verse mejor que h.264, pero el soporte es limitado. HEVC (h.265) también es mejor que h.264, pero, de nuevo, la compatibilidad con los jugadores es limitada. (Y la aceleración de decodificación de hardware no se generalizará durante años. Esto es importante, porque HEVC requiere mucha CPU para decodificar, más que AVC).
Las comparaciones de calidad de las que hablo son con los mejores codificadores disponibles para cada códec. x264 para AVC, VPx de Google para VP8/VP9 y x265 para HEVC. Todos con ajustes activados casi por completo. Sin embargo, x265 comenzará a pasar a segundos por cuadro en lugar de cuadros por segundo para 1080p con configuraciones tan lentas. (x264 órdenes de magnitud más rápido, ya que ha estado esencialmente maduro durante un par de años, y se han encontrado pocas mejoras de velocidad o mejoras de calidad).
Todos estos codificadores son software gratuito de código abierto. Es bueno que no tengas que pagar nada para obtener códecs de calidad mundial en estos días. :)
Un éxito aleatorio de Google en x264 vbv para transmisión: http://forum.doom9.org/showthread.php?t=147460
Un ejemplo de x264 --fullhelp
:
Constant bitrate at 1000kbps with a 2 second-buffer:
x264 --vbv-bufsize 2000 --bitrate 1000 -o <output> <input>
(Sin embargo, en realidad no use el modo de tasa de bits de destino de un solo paso. O 2 pases si tiene una tasa de bits de destino específica, o crf con una calidad de destino).
editar: el uso recomendado para la transmisión, según el desarrollador principal de x264 (Jason Garrett-Glaser), es el modo de objetivo de calidad (CRF) con tasa de bits restringida por VBV. p.ej
x264 --vbv-bufsize 2000 --vbv-maxrate 1000 --crf 22 -preset slower -o <output> <input>
vbv-maxrate
es la velocidad máxima a la que se puede llenar el búfer. (es decir, el ancho de banda máximo de la red). vbv-bufsize
es, por supuesto, el tamaño del búfer, que permite picos de tasa de bits no sostenidos superiores a vbv-maxrate
.
Y, por supuesto, si está codificando una vez para crear un archivo que se transmitirá muchas veces, invierta tanto tiempo de CPU como pueda. El tiempo de codificación tiene poca importancia en comparación con obtener la mayor calidad por tasa de bits (intercambio de distorsión de tasa, también conocido como RD). La codificación solo ocurre una vez, y cualquier bit que pueda guardar (manteniendo la misma calidad) se guarda para cada descarga. por ejemplo, use x264 con --preset veryslow
.
--vbv-buffsize
es cómo se hace.vbv-maxrate
es la tasa de llenado del búfer, no el pico de decodificación limitado por la CPU del decodificador. Y CRF + VBV es la forma recomendada de codificación de video en línea (en tiempo real) o fuera de línea para transmisión.
Dr. Mayhem
pedro cordes
pedro cordes
x264 --crf 16 --preset fast
.Grovberg