Eu sei como definir um atraso com -itsoffset
o sinalizador do ffmpeg, mas quero saber como obter e definir o tempo de atraso exato.
Responder1
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 onde o fluxo de áudio foi deslocado propositalmente usando itsoffset
. Isso resultará na alteração dos carimbos de data/hora da apresentação de á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 frames 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 três primeiras amostras vazias terão os carimbos de data e hora 0, 1 e 2, e A1 terá 3. Para o jogador, isso significa que V2 e A1 pertencem um ao outro, e não há nada de errado com isso.
Se quiser estimar um deslocamento inicial, você terá que inspecionar o fluxo de áudio manualmente ou usarsilencedetect
para detectar o período entre o início do fluxo e a primeira amostra de áudio que contém informações, mas isso só funciona se o fluxo de áudio começar diretamente com um sinal. Se for algum tipo de fade-in ou começar em -∞ dBFS, você está sem sorte.