如何在ffmpeg视频过滤器的字幕中添加字体大小

时间:2014-01-26 12:29:50

标签: ffmpeg video-processing

我使用此命令裁剪,缩放,然后将字幕添加为叠加

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

我们如何设置字幕的字体大小/颜色?

3 个答案:

答案 0 :(得分:27)

使用字幕有两种方法:hardsubs和softsubs。

Hardsubs

subtitles视频过滤器可用于硬拷贝或老化字幕。这需要重新编码,字幕成为视频本身的一部分。

force_style选项

要自定义字幕,您可以使用force_style过滤器中的subtitles选项。使用字幕文件subs.srt并使用红色字体颜色制作字体大小为24的示例。

ffmpeg -i video.mp4 -vf "subtitles=subs.srt:force_style='Fontsize=24,PrimaryColour=&H0000ff&'" -c:a copy output.mp4
  • force_style使用SubStation Alpha (ASS) style fields

  • PrimaryColour为蓝绿红色顺序的十六进制。请注意,这与HTML颜色代码的顺序相反。颜色代码必须始终以&H开头,并以&结尾。

Aegisub

或者,您可以使用Aegisub创建字幕并设置样式。保存为SubStation Alpha(ASS)格式,因为它可以支持字体大小,字体颜色,阴影,轮廓,缩放,角度等。


Softsubs

这些是文件中的其他流。播放器只需在播放时呈现它们。比hardsubbing更灵活,因为:

  • 您无需重新编码视频。
  • 您可以拥有多个字幕(各种语言)并在它们之间切换。
  • 您可以在播放期间打开/关闭它们。
  • 任何值得使用的玩家都可以调整它们的大小。

当然,如果设备或播放器无法使用softsub,有时需要使用hardsubs。

使用stream copy模式将字幕复制到视频文件中:

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

没有重新编码,因此整个过程将很快,质量和格式将得到保留。

使用SubStation Alpha(ASS)字幕可以让您根据自己的喜好格式化字幕。这些可以用Aegisub创建/转换。


另见

答案 1 :(得分:6)

从文档中,您可以使用srt字幕文件并通过将ASS样式格式KEY=VALUE对分隔为,来更改字体大小。所以,

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的字幕,同时保持视频的质量。我已经尝试过了,但它确实有效。

答案 2 :(得分:0)

FFmpeg有时很好,但有些视频可能会变得模糊。我建议与VLC播放器进行比较。

media> Convert/Save

我发现配置文件Video for iPad HD/iPhone/PSP的默认设置非常好。或者,我可以将Biters的数量从700kb/s减少到350kb/s来缩小。