Como @LordNeckbeard já aponta, a taxa de bits constante não é a mesma que a qualidade constante. Na verdade, é exatamente o oposto. Certas partes de sequências de vídeo são mais fáceis de codificar do que outras (mais fáceis no sentido de exigir menos bits) e outras não. Se você gastar todos os seus bits nas partes fáceis, você não terá as partes mais difíceis.
É aí que a qualidade constante entra em jogo. Em x264 existe o Fator de Taxa Constante , que faz exatamente isso. Eu sugiro que você leia o artigo vinculado, se você quiser mais informações de fundo. Basicamente, o CRF varia de 0 (sem perda, melhor) a 51 (pior). Etapas de ± 6, aproximadamente, igual a metade ou a metade da taxa de bits.
Então, para adaptar seu script, simplesmente faça algo como o seguinte:
for i in $(seq 0 5 51); do
ffmpeg -i input.mkv -c:v libx264 -crf $i -c:a copy output-$i.mkv
done
A escala em si é, a menos que esteja errada, próxima de logarítmica em termos de qualidade, para que você possa calcular suas etapas com base nisso em vez da chamada seq
.
With a very low bitrate ($j = 150), at the beginning (between 0 and 3s), the video is really poor but at the end (between 8 and 10s), the quality is proper! Besides, while watching the video, one can see this increasing of quality through the time. Can someone explain me this phenomenon?
A taxa de bits constante não é uma tarefa fácil para um codificador. Você dá um certo valor para trabalhar, por exemplo diga "me dê 150 kBit por segundo", mas o codificador nem sabe o que vai codificar no próximo quadro.
Então, quanto deve gastar com esse frame? Quanto no próximo? Alguns quadros - como mencionei acima - são fáceis de codificar e bastam alguns kilobits, enquanto outros podem levar muito mais. Mas o codificador pode realmente apenas olhar para o que foi codificado no passado, a fim de escalar para imagens futuras. Além disso, leve em consideração os diferentes tipos de imagens .
Algoritimicamente, fazer uma taxa de bits constante é realmente difícil, e é também o pior dos modos de controle de taxa que o x264 tem a oferecer. Especialmente para clipes curtos, uma vez que o codificador não sabe o que pode esperar sem fazer uma codificação de 2 passagens, você pode perceber isso da maneira que descreve: a qualidade muda drasticamente durante os dez segundos. Mas 150 kBit / s realmente não é suficiente para vídeo de dimensões decentes de qualquer maneira.