Como o ffmpeg determina as taxas de bits de fluxo individuais?

3

Por exemplo, eu tenho um vídeo para o qual o ffmpeg mostra

  Duration: 00:46:43.72, start: 0.540000, bitrate: 2593 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x576 [PAR 16:15 DAR 4:3], 9000 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, stereo, s16, 448 kb/s

O tamanho do arquivo é 908843008 bytes, portanto os 2593 kb / s estão corretos. Mas por que diz que a taxa de bits do fluxo de vídeo é 9000 kb / s?

    
por Prateek 28.12.2013 / 09:43

2 respostas

3

Os fluxos MPEG normalmente usam codificação de taxa de bits variável para economizar espaço em seções do vídeo que são fáceis de codificar, permitindo assim o aumento da qualidade. FFMpeg está relatando a taxa de bits armazenada no cabeçalho de sequência do fluxo de vídeo, que é a taxa de bits máxima no arquivo inteiro (ou, em muitos casos, a taxa de bits máxima que o codificador foi configurado para permitir - o arquivo real pode não ter seções que usam tão alta quanto uma taxa de bits). O valor 9000kbps é típico de fluxos MPEG2 de (ou destinados a) DVDs: os DVDs têm um máximo de vídeo combinado & taxa de bits de áudio de 9800kbps, portanto, isso permite ~ 500kbps para áudio e alguns sobressalentes para pacotes de navegação & outra sobrecarga.

    
por 28.12.2013 / 11:14
1

Em geral, ffmpeg usa cabeçalhos de arquivo para obter informações onde pode (quando reconhece os formatos de cabeçalho) e, por outro lado, volta a calculá-los a partir da duração e do tamanho do arquivo.

Os formatos de wrapper (por exemplo, mov, mp4) não possuem uma taxa de bits própria - a taxa de bits é uma característica dos fluxos individuais - mas teria uma duração. ffmpeg pode então calcular a taxa de bits do tamanho do arquivo e duração.

Os próprios fluxos, no entanto, terão uma taxa de bits especificada nos cabeçalhos de fluxo, para que possam ser lidos diretamente dos metadados. Isso significa que a taxa de bits pode ser especificada incorretamente no cabeçalho, ou pode ser 9000kb / s no início e diminuir para uma taxa de bits menor, ou o fluxo pode ser truncado para que o arquivo não seja concluído, portanto, as contas não funcionam como esperado.

Se você extrair o componente de vídeo (por exemplo: ffmpeg -i myfile.mov -vcodec copy -an testfile.m2v , o uso varia de acordo com as versões do software), você poderá investigar mais e descobrir de onde vem a taxa de bits mostrada.

    
por 28.12.2013 / 10:03