【问题标题】:How to Add Font size in subtitles in ffmpeg video filter如何在 ffmpeg 视频过滤器的字幕中添加字体大小
【发布时间】:2023-04-10 13:57:02
【问题描述】:

我正在使用此命令进行裁剪、缩放,然后将字幕添加为叠加层

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

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

【问题讨论】:

    标签: ffmpeg video-processing subtitle


    【解决方案1】:

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

    media>Convert/Save

    我发现 Profile Video for iPad HD/iPhone/PSP 的默认设置非常好。或者我可以将 Biterates 从 700kb/s 减少到 350kb/s 以使其更小。

    【讨论】:

      【解决方案2】:

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

      硬分叉

      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_style 使用SubStation Alpha (ASS) style fields

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

      神盾局

      或者,您可以使用Aegisub 来创建和风格化您的字幕。另存为SubStation Alpha(ASS)格式,支持字体大小、字体颜色、阴影、轮廓、缩放、角度等。


      软潜艇

      这些是文件中的附加流。播放器只是在播放时渲染它们。比硬包更灵活,因为:

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

      当然,如果设备或播放器无法使用软潜艇,则有时需要硬潜艇。

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

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

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

      使用 SubStation Alpha (ASS) 字幕可以让您随意设置字幕格式。这些可以使用 Aegisub 创建/转换。


      另见

      【讨论】:

      • 如何更改字体大小的问题没有得到解答,请提供语法正确的示例
      • @RolandSeuhs 答案表明使用 SRT 是不可能的(据我所知)。至于 ASS,实际的 ASS 文件决定了字体大小;正如您在示例文件中看到的那样。
      • 这个可以,但是要确保你已经创建了FC_CONFIG_DIR、FONTCONFIG_FILE和FONTCONFIG_PATH环境变量并且文件fonts.conf存在,否则它不会工作。
      【解决方案3】:

      从文档中,您可以使用 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 放置字幕。我自己试过了,效果很好。

      【讨论】:

      • 感谢此命令,但前提是我用双引号将参数括在-vf 中。
      • 这个硬编码子命令有效,但就像@GabrielDevillers 所说,只有在 -vf 参数周围加上双引号。
      猜你喜欢
      • 1970-01-01
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 2021-06-23
      • 2014-01-29
      • 2016-02-03
      • 2017-09-25
      相关资源
      最近更新 更多