Por favor lea la documentación para FFmpeg, y correr ffmpeg -h full
por la lista de opciones. Además, eche un vistazo a este artículo que escribí, que muestra las diferencias entre los modos de control de velocidad en codificadores como x264 y x265.
En general, esto es lo que significan las opciones:
-b:v
(o -vb
, lo mismo) especifica la tasa de bits promedio objetivo para que el codificador use:
-b
<int>
E..VA
. establecer bitrate (en bits / s) (de 0 a INT_MAX)
-minrate
especifica una tolerancia mínima para ser utilizada:
-minrate
<int>
E..VA
. Establezca la tolerancia mínima de velocidad de bits (en bits / s). Lo más útil para configurar una codificación CBR. Es de poca utilidad de lo contrario. (de INT_MIN a INT_MAX)
-maxrate
Especifica una tolerancia máxima. Sin embargo, como lo indica la documentación, esto solo se usa junto con bufsize
:
-maxrate
<int>
E..VA
. Establezca la tolerancia máxima de velocidad de bits (en bits / s). Requiere bufsize
ser configurado. (de INT_MIN a INT_MAX)
-bufsize
<int>
E..VA
. establecer el tamaño del búfer de control de velocidad (en bits) (de INT_MIN a INT_MAX)
Esto solo tiene sentido para la codificación de velocidad de bits variable, donde en lugar de usar una velocidad de bits constante o un modelo de calidad constante, el codificador simula una transmisión con un buffer virtual en el decodificador. Las opciones -minrate
/ -maxrate
/ -bufsize
controlan ese tamaño de búfer. Por lo general, solo usa este modo para la transmisión, ya que la técnica limitará la velocidad de bits para no exceder un cierto valor que causaría que el búfer del decodificador se desborde o se desborde.
Para resumir, tiene varias opciones para limitar la tasa de bits:
Para configurar un proceso CBR, debe verificar lo que ofrece el codificador. Por lo general, no puede lograr una tasa de bits constante "perfecta", ya que el codificador no desperdiciará bits. La configuración -b:v
, -minrate
y -maxrate
en los mismos niveles logrará eso, por ejemplo para libx264:
ffmpeg -i input.mp4 -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M output.ts
Advertencia: Esto puede resultar en baja calidad para videos que son difíciles de codificar y desperdiciará bits. A menos que sea absolutamente necesario lograr una salida de velocidad constante, no use esta opción.
Configure un proceso de velocidad de bits restringida / variable para la transmisión. Uso -b:v 3500K -maxrate 3500K -bufsize 1000K
, por ejemplo. Obviamente, tendrá que ajustar la velocidad y los tamaños del búfer al contexto. Cuanto mayor sea el tamaño del búfer, mayor será la variación de velocidad de bits permitida.
Use un objetivo de calidad constante y limite la tasa de bits solo para atrapar picos. Por ejemplo, utilice -c:v libx264 -crf 23 -maxrate 4M -bufsize 4M
para codificar a velocidad de bits variable con un CRF objetivo de 23, pero limite la salida a un máximo de 4 MBit / s.