web-dev-qa-db-ja.com

Mencoderを使用した非同期オーディオビデオ

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の使用例をいただければ幸いです。

1
1ch1g0

Derobertが述べたように、ffmpegライブラリ自体を使用するmencoderですべてを実行でき、はるかに強力です。これにより、現在実行しているトランスコーディングが回避されます。 mencoderの-audio-delayオプションは、オフセットの差が絶対的な場合、ビデオに対するオーディオのオフセットを設定します。さまざまな-autosync設定を試すこともできます(デフォルト値は0で、マニュアルには最大30が記載されています)。

1
Justin Smith

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マンページの例セクションから採用)。

1
quack quixote