ffmpeg를 사용하여 오디오와 비디오 사이의 정확한 지연을 어떻게 얻을 수 있습니까?

ffmpeg를 사용하여 오디오와 비디오 사이의 정확한 지연을 어떻게 얻을 수 있습니까?

ffmpeg의 플래그로 지연을 설정하는 방법을 알고 있지만 -itsoffset정확한 지연 시간을 가져오고 설정하는 방법을 알고 싶습니다.

답변1

비디오와 오디오 스트림 사이에 본질적인 지연이 있는 경우 이를 알아내는 쉬운 방법이 없습니다. . itsoffset​이로 인해 비디오에 따라 오디오 프레젠테이션 타임스탬프가 변경됩니다.

비디오 프레임당 3개의 오디오 프레임을 가정한 원본은 다음과 같습니다(실제로는 너무 적습니다).

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

오디오 프레임에는 타임스탬프 A1 = 0, A2 = 1, A3 = 2 등이 있습니다.

이제 오디오 스트림을 지연시킵니다.

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

여기서 처음 3개의 빈 샘플에는 타임스탬프 0, 1, 2가 있고 A1에는 3개가 있습니다. 플레이어에게 이는 V2와 A1이 함께 속한다는 의미이며 여기에는 아무런 문제가 없습니다.

초기 오프셋을 추정하려면 오디오 스트림을 수동으로 검사하거나 다음을 사용해야 합니다.silencedetect스트림 시작과 정보가 포함된 첫 번째 오디오 샘플 사이의 기간을 감지하지만 이는 오디오 스트림이 신호로 직접 시작하는 경우에만 작동합니다. 일종의 페이드인이거나 -무한대 dBFS에서 시작한다면 운이 없는 것입니다.

관련 정보