新しい動画に字幕をハードコードしようとしています。元のビデオには、字幕ストリーム、つまりビデオ全体、オーディオ、および字幕(他のストリームのうち)が含まれています。
...
Stream #0:0(eng): Video: h264 (High 10), yuv420p10le(progressive), 1280x720, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 4534142.86 tbc (default)
Stream #0:1(jpn): Audio: aac (HE-AAC), 48000 Hz, stereo, fltp
Metadata:
title : 2.0 AAC
Stream #0:2(eng): Subtitle: ass (default)
Metadata:
title : FFF
Stream #0:3: Attachment: ttf
Metadata:
filename : DFKanTeiRyu-XB.ttf
mimetype : application/x-truetype-font
...
次のコマンドを使用しました。
ffmpeg -i input.mkv -c:v libx264 -c:a libmp3lame -c:s mov_text -map 0:0 -map 0:1 -map 0:2 output.mp4
出力ファイルを生成しますが、字幕はハードコードされません(だから、愚かなテレビはそれを表示/認識できません)。
字幕付きビデオを変換するには?
答え1
「字幕」フィルタを使用して、mkvから直接字幕を書き込むことができます。
ただ追加してください-vf "subtitles='$PATH_TO_MKV':stream_index=$SUBTITLE_ID"
はい
ffmpeg -i input.mkv -c:v libx264 -vf "subtitles=input.mkv:stream_index=0" output.mkv
stream_index
パラメーターはオプションです。 0 から始まるので、stream_index=1
コンテナの 2 番目の字幕ストリームが選択されます。
詳細については、ここで「字幕」フィルタのドキュメントを参照してください。http://ffmpeg.org/ffmpeg-filters.html#subtitles
このリンクの一般的なフィルタリングガイドラインhttps://trac.ffmpeg.org/wiki/FilteringGuide
答え2
方法は、まずヒップ字幕を抽出することです。
ffmpeg -i input.mkv -c:s copy subtitle.ass
その後、説明したようにビデオに「焼く」。ここ:
ffmpeg -i video.avi -vf "ass=subtitle.ass" out.avi