字幕ファイルを動画に焼き付ける(ハードサブ)subtitles
フィルタの使い方。字幕ファイルのスタイルを書き換えて字幕ファイルを出力するフィルタではない。似たフィルタにass
フィルタがあるが、subtitles
フィルタはass
フィルタよりも複雑な設定ができる。このフィルタを使うには–enable-libassとlibavcodec、libavformatが必要。
ass の字幕ファイルを動画に焼き付ける ass
基本コマンド
input.ass ファイルを表示する。
ffmpeg -i input -vf subtitles=sub.ass output
ffplay -i input -vf subtitles=sub.ass
映像の最初をカット(開始25分から26分時点まで)して同時に字幕時間の最初もカットする。参照元。
ffmpeg -ss 25:00 -to 26:00 -copyts -i video -ss 25:00 -vf subtitles=sub.srt -c:a copy output.mp4
webm 形式にエンコードするときは-output_ts_offsetをつける。参照元。
ffmpeg -ss 25:00 -to 26:00 -copyts -i video -vf subtitles=sub.srt -c:v libvpx-vp9 -crf 30 -b:v 0 -qmin 3 -qmax 40 -c:a copy -output_ts_offset 25:00 output.webm
ffmpeg で指定時間でカットするまとめ
シークバーが意図したものより長くなっているときは-avoid_negative_ts make_zeroを出力オプションにつける
ffmpeg -ss 23:10 -copyts -i input.mp4 -vf subtitles=input.mp4 -avoid_negative_ts make_zero output.mp4
FFmpeg: How can I burn subs and clip a video with only one line? – Super User
subtitles
フィルタで動画ファイルから字幕を選んだときはBT.601のカラースペースらしいので、BT.709素材の時はBT.601に変換しsubtitles
フィルタを当てて、BT.709に戻す。おそらく字幕ファイル単体で読み込んだときはカラースペースの変換は不要。
ffmpeg -y -i input.mkv -filter_complex scale=in_color_matrix=bt709:out_color_matrix=bt601,subtitles=input.mkv:si=0,scale=in_color_matrix=bt601:out_color_matrix=bt709 -pix_fmt yuv420p output.mp4
video – FFmpeg incorrect colourspace with hardcoded subtitles – Super User
動画にカラーマトリックスが指定してあれば、それを読むように、なければBT.601で読むように修正された。
avfilter/vf_subtitles: Respect YCbCr Matrix header · FFmpeg/FFmpeg@72e5381 · GitHub
テキスト字幕のストリームをコピーしてフォントサイズが変わるときは-map 0:t?も追加する。
Copied .ass Subtitle Changes Font Size : ffmpeg
公式ドキュメント:FFmpeg Filters Documentation : subtitles
Continue reading “字幕ファイルを動画に焼き付ける subtitles”