Estoy usando ffmpeg para codificar mis videos para subirlos a la web. Vi esta publicación sobre el uso de ffmpeg, pero no entendí cómo considerar los valores.
Supongamos que tengo un video de 70 MB con una duración de 4 minutos. ¿Cómo iba a considerar el valor de estas banderas: -b:v
, -maxrate
y -bufsize
para este comando?
ffmpeg -i input -codec:v libx264 -profile:v main -preset slow -b:v ? -maxrate ? -bufsize ? -vf "scale=720:trunc(ow/a/2)*2" -threads 0 -codec:a libfdk_aac -movflags +faststart output
¿O hay algún valor normal, como para los crf
valores son 19-24? Realmente agradecería su ayuda y orientación.
Respuestas:
Realmente depende de tu velocidad de carga.
bufsize
determinará cuán religioso se trata de mantener constante tu tasa de bits. Si establece un valorbufsize
de 64k, según FFmpeg Wiki: Limitando la tasa de bits de salida , calculará su tasa de bits actual cada 64 kilobytes y se ajustará en consecuencia. Los tamaños más pequeñosbufsize
pueden ser perjudiciales para la calidad, ya que no permiten suficiente espacio entre las comprobaciones para x264 para realizar cambios repentinos: obtendrá bloqueo.Si su
maxrate
es 640kbps, y subufsize
es 64k, entonces cada décima de segundo x264 comprobaría. Esto es subóptimo: FFmpeg Wiki: la codificación para sitios de transmisión recomienda ejecutarlo cada 1 o 2 segundos. Si esto no tiene sentido, considérelo comomaxrate
/bufsize
= frecuencia de las verificaciones. Mantenga esta frecuencia entre 1 y 2 segundos como regla general.Si configura ambos
maxrate
ybufsize
, debe:maxrate
a la velocidad de carga más baja que sea probable (en el ejemplo de wiki de ffmpeg , esto es el 80% de la velocidad de carga total, pero su kilometraje puede variar).bufsize
en algún lugar entre lo mismo que sumaxrate
(un segundo) y dos veces de sumaxrate
(2 segundos). Si todavía no es lo suficientemente bajo, baje su valormaxrate
y luego vuelva a configurarlo enbufsize
consecuencia.Entonces, tendrás que jugar un poco, pero como tienes que comenzar en algún lugar, comenzaría en
maxrate
alrededor de 600k, que generalmente fue lo suficientemente satisfactorio para mí antes de que lo usaracrf
para todo.Si lo desea, puede probar valores más bajos para
bufsize
, como cada tres o cuatro segundos, solo para ver cómo el valor cambia la apariencia de su salida. Luego, puede determinar cuánto debe preocuparse por su video.En realidad, no hay un valor normal: lo que
crf
hace es optimizar la salida en función de lo que cree que es el mejor tamaño de búfer para mantener la velocidad establecida. Trata de mantener un tamaño de archivo tan bajo mientras mantiene cierta calidad, a costa de picos ocasionales.fuente
crf
, entonces no necesito especificarbitrate
,buffsize
ymaxrate
? Y si es así, ¿cuál es más eficiente (usarcrf
obitrate
,buffsize
ymaxrate
)?bufsize
ymaxrate
. Sinbitrate
embargo, no es necesario . Como dijo Ely, mejorará la transmisión.