Reduzir a taxa de bits com o ffmpeg usando '-b: v 500k' na verdade não reduz a taxa de bits para 500k

1

Estou tentando criar várias versões desatualizadas de um arquivo de vídeo com ffmpeg . Estou usando o seguinte comando por meio da linha de comando (o comando é retirado da documentação ):

ffmpeg -i ../../tos.avi -b:v 500k tos_500k.avi

Estou tentando isso com vários valores abaixo de 2000 kbps (até ~ 125 kbps), mas o limite inferior que realmente é produzido quando eu verifico os arquivos de vídeo gerados é de aproximadamente 2000 kbps. Estou verificando os valores usando o software videospec .

  1. Alguém tem uma idéia de por que reduzir ainda mais a taxa de bits não parece ter nenhum efeito?
  2. Você pode me dar uma dica de como posso reduzir efetivamente a taxa de bits de um vídeo para um determinado nível?

[EDIT] Para ser um pouco mais preciso, o meu vídeo original tem uma resolução de 1920x1080 com uma taxa de bits de cerca de 15 Mbps. Ao usar o comando acima, posso fazer o downgrade sem problemas para bitrates maiores, como 8000, 5000, até 2000 kbps. No entanto, qualquer coisa abaixo de 2000 não parece ser manipulada, os arquivos de saída resultantes estão sempre presos em um bitrate de pouco mais de 2000 kbps. (O tamanho do arquivo também é muito próximo do arquivo que foi rebaixado com sucesso para 2000 kbps.)

    
por nburk 19.08.2015 / 07:37

1 resposta

5

Ao recodificar um arquivo, você não deve especificar apenas uma taxa de bits. Meu palpite é que o ffmpeg tenta usar o codec mpeg4 por padrão, e ele se recusa a usar menos de 2mbps porque simplesmente não pode ir abaixo com uma resolução tão alta.

Eu sugiro que você re-codifique com o codec H.264 que você pode fazer assim:

ffmpeg -i ../../tos.avi -c:v libx264 -b:v 500k tos_500k.mp4

Observe, no entanto, que isso usará um método de taxa de bits média de 1 passagem que é muito ruim para a qualidade. Em vez disso, você deve tentar codificar com "fator de taxa constante", ou seja, você direciona uma determinada qualidade e o codificador decide qual taxa de bits média é a melhor para seu arquivo:

ffmpeg -i ../../tos.avi -c:v libx264 -crf 23 tos_500k.mp4

Você está livre para experimentar o valor de crf. Aumentar isso significará menor taxa de bits e pior qualidade, diminuindo-o vice-versa.

Se você deseja segmentar uma taxa de bits média, verifique a codificação de duas passagens . Além disso, não se esqueça das predefinições !

Como uma nota lateral, 500k para 1080p é muito baixo e você obterá resultados ruins. Se você deseja segmentar uma taxa de bits tão baixa, sugiro que você diminua para 480p (854x480). 720p deve ter um mínimo de taxa de bits de 1,5mbps e 3mbps de 1080p.

Para suas futuras perguntas, não se esqueça de postar os registros de entrada / saída do ffmpeg, eles sempre serão úteis :-).

    
por 19.08.2015 / 12:53