2

Вот аналогичный вопрос для Windows:

Инструмент для исправления видео, которое не синхронизировано со звуком?

Я надеюсь решить эту проблему на Mac.

Я пробовал Handbrake и Avidemux (у последнего, кажется, есть опция - "shift" - исправить это, но он вообще не воспроизводит звук, поэтому я не могу сказать, что он делает!).

1 ответ1

5

Получить себе копию FFmpeg. Смотрите в нижней части этого поста о том, как это сделать.

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

ffmpeg -i in.flv -itsoffset offset -i in.flv -map 1:0 -map 0:1 -c copy out.flv

Здесь offset - это задержка в секундах, например, 1.5 или 0.35 . Это значение должно быть положительным, поэтому, если ваш звук отстает от видео, нам придется сместить видео. Это показано в приведенном выше примере. Точно так же, если видео отстает от звука, нам придется компенсировать звук.

Итак, как вы выбираете, задерживать ли аудио или видео? Ну, так как мы задержали весь in.flv , мы просто выберем аудио или видео потоки и объединим их с оригинальными аудио или видео потоками. Это делается в опциях -map .

По сути, map имеет два номера. Один перед двоеточием указывает номер входного файла (начиная с 0), а второй номер указывает поток входного файла (также начиная с 0).

Итак, чтобы задержать звук, используйте следующие две опции:

  • -map 1:0 означает: взять первый поток из второго входного файла (видео из исходного файла)
  • -map 0:1 означает: взять второй поток из первого входного файла (аудио из файла с задержкой)

Переверните его, если вам нужно отложить видео:

  • -map 0:0 означает: взять первый поток из первого входного файла (видео из файла с задержкой)
  • -map 1:1 означает: взять второй поток из второго входного файла (аудио из исходного файла)

Наконец, -c copy просто скажет FFmpeg скопировать видео и аудио битовые потоки. Это означает, что не будет никакого процесса кодирования. Это делает команду сверхбыстрой, и вы даже не потеряете качество в процессе. Однако, если вы столкнулись с ошибками синхронизации, вы должны оставить out -c copy и позволить FFmpeg перекодировать ввод.


Вы можете получить последнюю стабильную версию FFmpeg через Homebrew.

  • Откройте терминал и введите:

    ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
    
  • Смотрите также требования к установке . Вы должны установить инструменты командной строки для XCode, если у вас нет. Для этого вам понадобится Apple ID.

  • После установки Homebrew установите FFmpeg:

    brew install ffmpeg
    
  • Как только это будет сделано, мы можем использовать FFmpeg для исправления вашего видео.

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