web-dev-qa-db-ja.com

ffmpegビデオフィルターの字幕にフォントサイズを追加する方法

このコマンドを使用してトリミング、拡大縮小し、字幕をオーバーレイとして追加しています

ffmpeg -i input.avi  -vf "[in]crop=in_w:in_h-20:0:0 [crop]; [crop]scale=320:240 [scale];[scale]subtitles=srt.srt" -aspect 16:9 -vcodec libx264  -crf 23 oq.mp4

どうすれば字幕のフォントサイズ/色を設定できますか?

11
khizar ansari

字幕を使用するには、hardsubsとsoftsubsの2つの方法があります。

Hardsubs

subtitles ビデオフィルターを使用して、字幕をハードサブまたはバーンインできます。これには再エンコードが必要で、字幕はビデオ自体の一部になります。

force_styleオプション

字幕をカスタマイズするには、subtitlesフィルターのforce_styleオプションを使用できます。字幕ファイルsubs.srtを使用して、フォントサイズを24にし、フォントの色を赤にします。

ffmpeg -i video.mp4 -vf "subtitles=subs.srt:force_style='Fontsize=24,PrimaryColour=&H0000ff&'" -c:a copy output.mp4
  • force_styleSubStation Alpha(ASS)スタイルのフィールド を使用します。

  • PrimaryColourは16進数で、青、緑、赤の順です。これは、HTMLカラーコードとは逆の順序であることに注意してください。カラーコードは常に&Hで始まり、&で終わる必要があります。

Aegisub

または、 Aegisub を使用して字幕を作成し、スタイルを設定することもできます。名前を付けて保存 SubStation Alpha (ASS)形式は、フォントサイズ、フォントの色、影、輪郭、スケーリング、角度などをサポートできるため、.


Softsubs

これらは、ファイル内の追加のストリームです。プレーヤーは、再生時にそれらをレンダリングするだけです。次の理由により、ハードスバッビングよりも柔軟性があります。

  • ビデオを再エンコードする必要はありません。
  • 複数の字幕(さまざまな言語)を用意して、それらを切り替えることができます。
  • 再生中にオン/オフを切り替えることができます。
  • それらは、使用する価値のある任意のプレーヤーでサイズ変更できます。

もちろん、デバイスやプレーヤーがソフトサブを利用できない場合は、ハードサブが必要になることがあります。

ストリームコピー モードを使用して字幕をビデオファイルに多重化するには:

ffmpeg -i input.mkv -i subtitles.ass -codec copy -map 0 -map 1 output.mkv

何も再エンコードされないため、プロセス全体が迅速になり、品質とフォーマットが維持されます。

SubStation Alpha(ASS)字幕を使用すると、字幕を好きなようにフォーマットできます。これらはAegisubで作成/変換できます。


また見なさい

32
llogan

ドキュメントから、srt字幕ファイルを使用し、KEY=VALUEで区切られたASSスタイル形式,のペアを配置することでフォントのサイズを変更できます。そう、

ffmpeg -i input.mp4 -vf subtitles=sub.srt:force_style='FontName=DejaVu Serif,FontSize=24' -vcodec libx264 -acodec copy -q:v 0 -q:a 0 output.mp4

ビデオの品質を維持しながら、DejaVuフォントとサイズ24の字幕を配置します。私は自分で試してみましたが、うまくいきました。

6
Jorge Catumba