Команда смещения потока ffmpeg (-itsoffset)не работает

Я был бы очень признателен, если бы кто-нибудь мог дать несколько советов относительно использования itsoffset с ffmpeg. Я читал несколько сообщений на эту тему, некоторые из них очень четко объясняют, как повторно-синхронизировать аудио и видео с -смещением, но мне не удалось заставить это работать. Мой avi-файл закодирован с помощью ffmpeg в два прохода, с использованием следующей команды для второго прохода:

ffmpeg -i whole-vts_01.avs -pass 2 -y -vcodec libxvid -vtag XVID -b:v 1300K -g 240 -trellis 2 -mbd rd -flags +mv4+aic -acodec ac3 -ac 2 -ar 48000 -b:a 128k output.avi

По какой-то причине я получаю задержку в 1 секунду в видео (или звук на 1 секунду раньше). Это случается не слишком часто, но я вижу это время от времени. Среди других попыток я пробовал следующее:

(1) ffmpeg -i output.avi -itsoffset 00:00:01.0 -i output.avi -vcodec copy -acodec copy -map 0:0 -map 1:1 output-resynched.avi
(2) ffmpeg -i output.avi -itsoffset 00:00:01.0 -i output.ac3 -vcodec copy -acodec copy -map 0:0 -map 1:0 output-resynched2.avi
(3) ffmpeg -itsoffset -00:00:01.00 -i output.avi output-resynched8.avi
(4) ffmpeg -i output.avi -itsoffset -1.0 -i output.avi -vcodec copy -acodec copy -map 0:1 -map 1:0 output-resynched13.avi

Вот результаты:

  1. Звук искажен и длится всего 5 м 35 с против 1 ч 41 м.
  2. (Output.ac3 — аудио компонент output.avi)Видео и аудио идентичен оригиналу, смещение не сработало
  3. Аудио сместилось, но исходные параметры кодирования заменены параметрами по умолчанию (, как и ожидалось).
  4. Звук искажен и длится всего 9 минут 56 секунд против 1 часа 41 минуты.

Я вижу, что многие люди объясняют и, по-видимому, используют описанный выше процесс, но мне кажется, что он не работает. Я упускаю что-то очевидное? Я бы очень хотел иметь возможность использовать -его смещение, так как это чище, чем мое обходное решение.

FWIW, вот другой и более длинный способ получения желаемого результата:

Сначала создайте файл со смещенным видео, используя -ss:

ffmpeg -i output.avi -ss 1.0 -vcodec copy -an oupput_videoshifted.avi

Затем извлеките аудио:

ffmpeg -i output.avi -vn -acodec copy outputaudioonly.ac3

И, наконец, повторно соедините оба компонента:

ffmpeg -i output_videoshifted.avi -i output_audioonly.ac3 -vcodec copy -acodec copy -map 0:0 -map 1:0 output-resynched14.avi

] Процесс работает, достаточно быстр, но я действительно предпочел бы использовать однопроходное решение -его смещения.

9
задан jen 11 April 2012 в 14:57
поделиться