Como posso obter o atraso exato entre áudio e vídeo com o ffmpeg?

1

Eu sei como definir um atraso com% flag -itsoffset do ffmpeg, mas eu quero saber como obter e definir o tempo de atraso exato.

    
por mitli 11.03.2015 / 16:05

1 resposta

4

Se houver um atraso intrínseco entre o fluxo de vídeo e áudio, não há uma maneira fácil de descobrir. Suponha que você esteja criando um arquivo audiovisual em que o fluxo de áudio foi propositadamente compensado usando itsoffset . Isso resultará na alteração da data e da hora de apresentação do áudio em relação ao vídeo.

Digamos que este seja o original, assumindo três quadros de áudio por quadro de vídeo (o que é muito pouco na prática):

V1       V2          V3    ...
A1 A2 A3 A4 A5 A6 A7 A8 A9 ...

Os quadros de áudio terão os timestamps A1 = 0, A2 = 1, A3 = 2, etc.

Agora você atrasa o fluxo de áudio:

V1       V2          V3    ...
xx xx xx A1 A2 A3 A4 A5 A6 ...

Aqui, as primeiras três amostras vazias terão os timestamps 0, 1 e 2, e A1 terá 3. Para o jogador, isto significa que V2 e A1 pertencem juntos, e não há nada de errado com isso.

Se você quiser estimar um deslocamento inicial, precisará inspecionar o fluxo de áudio manualmente ou usar silencedetect para detectar o período entre o início do fluxo e o primeiro exemplo de áudio que contém informações, mas isso só funciona se o fluxo de áudio iniciar diretamente com um sinal. Se é um fade-in de algum tipo, ou começa em -∞ dBFS, você está sem sorte.

    
por 11.03.2015 / 16:53