1

Я преобразовал файл mkv (matroska) в avi, используя ffmpeg:

ffmpeg -i input.mkv -f mp4 -vcodec mpeg4 -sameq -r 29.97 -b 512kb -acodec ac3 -ab 128kb -vol 512  output.avi

Выходной файл воспроизводится нормально, используя mplayer. После этого я использовал mencoder для вставки субтитров:

mencoder output.avi -o new.avi -oac pcm -ovc lavc -subfont-text-scale 3 -sub subtitle.srt

После воспроизведения видео «new.avi» видео и аудио не синхронизированы. Какие параметры я могу ввести в mencoder для синхронизации A/V?

Я также попробовал параметр ffmpeg -newsubtitle но не могу заставить его работать. Будем весьма благодарны за любые примеры использования -newsubtitle .

2 ответа2

1

Как упоминал Дероберт, вы можете сделать все это в mencoder, который использует библиотеки ffmpeg и гораздо более мощный, это позволит избежать транскодирования, которое вы делаете в настоящее время. Опция -audio-delay в mencoder устанавливает смещение для аудио относительно видео, если разница смещений является абсолютной. Вы также можете попробовать разные настройки -autosync (значение по умолчанию 0, в руководстве указано до 30).

1

Если вы действительно не нуждаетесь в AVI, вы можете попробовать использовать mkvmerge из набора Mkvtoolnix сделать это (вместо MEncoder). MKV могут содержать "мягкие" дорожки субтитров, что означает, что вам не нужно перекодировать видеопоток, чтобы включить их. (Это также означает, что при желании игроки могут отключить дорожки субтитров во время воспроизведения.)

Добавить файл SRT в MKV так же просто, как

$ mkvmerge -o with-subtitles.mkv without-subtitles.mkv mymovie.srt

or to specify a language for the subtitle track:
$ mkvmerge -o with-lang-codes.mkv without-lang-codes.mkv --language 0:eng english.srt --default-track 0

(адаптировано из раздела примеров на странице руководства mkvmerge, указанной выше).

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