web-dev-qa-db-ja.com

ffmpegカット、MKVをMP4にエンコード、字幕を書き込む

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にエンコードしたときに、字幕を正常にハードコーディングし、後でカットすることができます。しかし、これは大きなソースファイルでははるかに時間がかかります:(

    • テスト3(成功)
      ffmpeg -i konosuba.mkv -vf subtitles=konosuba.mkv test.mp4
      ffmpeg -i test.mp4 -ss 180 -t 30 test2.mp4

ログに違いがあるようです:テスト1 vs テスト

私はここで何か間違ったことをしていますか?元の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

enter image description here

1
Ketho

Test3の2つのコマンドを組み合わせるだけです。

ffmpeg -i konosuba.mkv -ss 180 -t 30 -vf subtitles=konosuba.mkv test.mp4
2
Gyan