Ffmpegを使用してmkv(matroska)ファイルをaviに変換しました:
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」を再生した後、ビデオとオーディオが同期していません。 A/Vを同期するためにmencoderにどのようなオプションを入れることができますか?
ffmpeg -newsubtitle
オプションも試しましたが、機能しません。 -newsubtitle
の使用例をいただければ幸いです。
Derobertが述べたように、ffmpegライブラリ自体を使用するmencoderですべてを実行でき、はるかに強力です。これにより、現在実行しているトランスコーディングが回避されます。 mencoderの-audio-delayオプションは、オフセットの差が絶対的な場合、ビデオに対するオーディオのオフセットを設定します。さまざまな-autosync設定を試すこともできます(デフォルト値は0で、マニュアルには最大30が記載されています)。
AVIが本当に必要ない場合は、 mkvmerge from MkvToolnix suite を使用してみてください。 =これを行う(mencoderの代わりに)。 MKVには「ソフト」字幕トラックを含めることができます。つまり、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マンページの例セクションから採用)。