Por favor, leia a documentação para o FFmpeg, e execute ffmpeg -h full
para a lista de opções. Além disso, consulte este artigo que escrevi, que mostra as diferenças entre os modos de controle de taxa > em codificadores como x264 e x265.
Geralmente, eis o que as opções significam:
-
-b:v
(ou-vb
, o mesmo) especifica a taxa de bits média de destino a ser usada pelo codificador:-b
<int>
E..VA
. set bitrate (in bits/s) (from 0 to INT_MAX) -
-minrate
especifica uma tolerância mínima a ser usada:-minrate
<int>
E..VA
. Set minimum bitrate tolerance (in bits/s). Most useful in setting up a CBR encode. It is of little use otherwise. (from INT_MIN to INT_MAX) -
-maxrate
especifica uma tolerância máxima. No entanto, como a documentação indica, isso só é usado em conjunto combufsize
:-maxrate
<int>
E..VA
. Set maximum bitrate tolerance (in bits/s). Requiresbufsize
to be set. (from INT_MIN to INT_MAX)-bufsize
<int>
E..VA
. set ratecontrol buffer size (in bits) (from INT_MIN to INT_MAX)Isto só faz sentido para codificação de taxa de bit variável, onde em vez de usar um modelo de taxa de bit constante ou constante, o codificador simula uma transmissão com um buffer virtual no decodificador. As opções
-minrate
/-maxrate
/-bufsize
controlam esse tamanho de buffer. Normalmente, você só usa esse modo para streaming, pois a técnica restringirá a taxa de bits para não exceder um determinado valor, o que faria com que o buffer do decodificador ficasse acima ou abaixo do esperado.
Para resumir, você tem várias opções para limitar a taxa de bits:
-
Para configurar um processo CBR, você precisa verificar o que o codificador oferece. Normalmente, não é possível obter uma taxa de bits constante "perfeita", pois o codificador não desperdiçará bits. Definir
-b:v
,-minrate
e-maxrate
para os mesmos níveis conseguirá isso, por exemplo, 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
Aviso: Isso pode resultar em baixa qualidade para vídeos que são difíceis de codificar e desperdiçam bits. A menos que você realmente precise obter uma saída de taxa constante, não use essa opção.
-
Configure um processo de taxa de bits restrita / variável para streaming. Use
-b:v 3500K -maxrate 3500K -bufsize 1000K
, por exemplo. Você terá que ajustar a taxa e os tamanhos do buffer para o contexto, obviamente. Quanto maior o tamanho do buffer, maior a variação da taxa de bits permitida. -
Use um alvo de qualidade constante e limite a taxa de bits apenas para capturar picos. Por exemplo, use
-c:v libx264 -crf 23 -maxrate 4M -bufsize 4M
para codificar a taxa de bits variável com um CRF de destino de 23, mas limite a saída a um máximo de 4 MBit / s.