1

Я знаю, как установить задержку с помощью флага -itsoffset ffmpeg, но я хочу знать, как получить и установить точное время задержки.

1 ответ1

4

Если между видео и аудиопотоком есть внутренняя задержка, то нет простого способа выяснить это. Предположим, вы создаете аудиовизуальный файл, в котором аудиопоток был преднамеренно смещен с помощью его itsoffset . Это приведет к изменению временных меток аудиопрезентации относительно видео.

Скажем, это оригинал, предполагающий три аудиокадра на видеокадр (что на практике слишком мало):

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 ...

Здесь первые три пустых выборки будут иметь временные метки 0, 1 и 2, а у A1 будет 3. Для игрока это означает, что V2 и A1 принадлежат друг другу, и в этом нет ничего плохого.

Если вы хотите оценить начальное смещение, вам нужно будет проверить аудиопоток вручную или использовать silencedetect чтобы определить период между началом потока и первым аудиосэмплом, который содержит информацию, но это работает только в том случае, если аудиопоток начинается непосредственно с сигнала. Если это какое-то постепенное появление или начинается с -∞ dBFS, вам не повезло.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .