gpt4 book ai didi

ffmpeg - 如何在ffmpeg中设置字幕背景?

转载 作者:行者123 更新时间:2023-12-01 18:06:38 38 4
gpt4 key购买 nike

描述here如何将 srt 文件刻录成视频。但是,我想为字幕添加半透明背景,以便更容易阅读文本。我怎样才能做到这一点?

最佳答案

Using ASS subtitles to create opaque text background

ASS 字幕可以有半透明的文本背景。

使用 aegisub

最简单的方法是使用 aegisub .

enter image description here

  1. 使用 aegisub 打开字幕文件。
  2. 点击字幕样式管理器
  3. 当前脚本下选择默认,然后按编辑按钮。
  4. 尝试使用OutlineShadow 值。选中不透明框
  5. 颜色下,单击轮廓阴影下的颜色。将出现一个窗口。调整 Alpha 框的值以更改透明度。
  6. 将字幕另存为 .ass 文件。

现在您可以使用 AAS 文件来制作 hardsubs or softsubs with ffmpeg .

没有 aegisub

如果您想要硬低音炮,您可以使用subtitles filter使用 force_style 选项添加透明背景。

ffmpeg -i input -filter_complex "subtitles=subs.ass:force_style='OutlineColour=&H80000000,BorderStyle=3,Outline=1,Shadow=0,MarginV=20'" output
  • 这适用于 FFmpeg 支持的任何基于文本的字幕,因为过滤器会自动将它们转换为 ASS。

  • 参见SubStation Alpha (ASS) style fields用于格式化选项。

多行问题

如果您的字幕包含多行,由于长行自动换行或故意换行,背景会重叠并可能看起来很难看,如下所示:

enter image description here

您可以通过以下方式避免这种情况:

  1. 轮廓阴影大小更改为0
  2. 阴影的 Alpha 设置将控制背景框的透明度。单击阴影颜色可将阴影颜色的 Alpha 调整为您所需的透明度级别。
  3. 在文本编辑器中编辑 ASS 文件。在 Style 行中,将 BorderStyle 对应的值更改为 4。这将填充每个字幕事件的边界框背景。示例 Style 行:

    Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H80000000,&H80000000,-1,0,0,0,100,100,0,0,4,0,0,2,10,10,10,1

示例:

enter image description here

请注意,BorderStyle=4 是一个非标准值,因此它可能无法在所有播放器中正常工作。

感谢 sup wm4 用于 BorderStyle 建议。

使用抽屉盒

drawbox filter可用于创建背景框。如果您希望框跨越宽度,这可能很有用。

enter image description here

ffmpeg -i input -filter_complex "drawbox=w=iw:h=24:y=ih-28:t=max:color=black@0.4,subtitles=subs.ass" output

缺点是您必须考虑长字幕的换行或自动换行。只需使框更高以进行补偿就足够了,但看起来会很难看,因为字幕基线保持静态:单行字幕顶部的填充量将比底部的填充量多。

关于ffmpeg - 如何在ffmpeg中设置字幕背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25870169/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com