ffmpeg 恢复默认字幕字体
ffmpeg reverts to default subtitle font
我正在使用 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
消息)。
我正在使用 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
消息)。