ffmpeg恢复为默认字幕字体



我使用ffmpeg-python将SRT刻录成视频文件。我的代码看起来像这样:

caption_file = "captions.srt"
style = "FontName=Roboto-Regular,FontSize=8"
fonts_dir = "fonts-main/apache"
(
ffmpeg  
.concat(video.filter("subtitles", caption_file, fontsdir=fonts_dir, force_style=style), audio, v=1, a=1)
.output("my_video_w_subs.mp4")
.run()
)

当我运行代码时,SRT确实被烧毁了,但不是指定的字体(Roboto-Regular)。

以下是输出日志:

[Parsed_subtitles_0 @ 0x55adfd490e80] Loading font file 'fonts-main/apache/Roboto-Regular.ttf'
[Parsed_subtitles_0 @ 0x55adfd490e80] Using font provider fontconfig
[Parsed_subtitles_0 @ 0x55adfd490e80] fontselect: (Roboto-Regular, 400, 0) -> /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf, 0, DejaVuSans

似乎找到并加载了所需的字体,所以我不确定为什么没有使用它。

看起来fonts_dir应该包含字体文件名

代替fonts_dir = "fonts-main/apache",试试:

fonts_dir = "fonts-main/apache/Roboto-Regular.ttf"

注:fonts-main/apache/Roboto-Regular.ttf使用相对路径。
您可以尝试使用完整路径,如:/fonts-main/apache/Roboto-Regular.ttf


调试时添加参数.global_args('-report'),并检查日志文件

下面是完整的代码示例:

import ffmpeg
caption_file = "captions.srt"
style = "FontName=Roboto-Regular,FontSize=8"
fonts_dir = "/fonts-main/apache/Roboto-Regular.ttf"
input = ffmpeg.input('1.avi')
video = input.video
audio = input.audio
(
ffmpeg  
.concat(video.filter("subtitles", filename=caption_file, fontsdir=fonts_dir, force_style=style), audio, v=1, a=1)
.output("my_video_w_subs.mp4")
.global_args('-report')
.overwrite_output()
.run()
)

当使用fonts_dir = "/fonts-main/apache"时,我得到一个错误ass_read_file(/fonts-main/apache/����): fopen failed

注意:

  • 我正在使用Windows,我不确定fonts_dir值是真正的问题(我没有得到Loading font file消息)。

相关内容

  • 没有找到相关文章

最新更新