MKVの一部を切り取って、字幕を焼き付けながらMP4にエンコードしたい。
しかし、1パスですべてを行う方法がわからないので( 関連する質問 )、段階的に試してみました。
最初にMKVをカットしてから、MP4にエンコードすると、字幕がハードコーディングされません。カットされたMKVコンテナはまだ字幕を保持していました。内部字幕と外部字幕の両方を試しました。
テスト1(失敗):MKVから直接字幕ffmpeg -i konosuba.mkv -ss 180 -t 30 test.mkv
ffmpeg -i test.mkv -vf subtitles=test.mkv test2.mp4
テスト2(失敗):外部字幕ffmpeg -i konosuba.mkv -ss 180 -t 30 test.mkv
ffmpeg -i test.mkv -map 0:s:0 subs.ass
ffmpeg -i test.mkv -vf subtitles=subs.ass test2.mp4
最初にMKV全体をMP4にエンコードしたときに、字幕を正常にハードコーディングし、後でカットすることができます。しかし、これは大きなソースファイルでははるかに時間がかかります:(
ffmpeg -i konosuba.mkv -vf subtitles=konosuba.mkv test.mp4
ffmpeg -i test.mp4 -ss 180 -t 30 test2.mp4
私はここで何か間違ったことをしていますか?元のMKVコンテナをカットせずにエンコードしない限り、字幕を焼き込めない理由がよくわかりません。
編集:字幕を単独で焼こうとしてもうまくいかないようです (log)ffmpeg -i test2.mp4 -vf subtitles=subs.ass test3.mp4
ログ:https://Gist.github.com/anonymous/d2eb6f09fabba88afe86bd4607b048a4
ビルド: https://ffmpeg.zeranoe.com/builds/
OS:Windows 10 v1607
https://trac.ffmpeg.org/wiki/HowToBurnSubtitlesIntoVideo
https://ffmpeg.org/ffmpeg-filters.html#subtitles-1
Test3の2つのコマンドを組み合わせるだけです。
ffmpeg -i konosuba.mkv -ss 180 -t 30 -vf subtitles=konosuba.mkv test.mp4