如何解决ffmpeg内置字幕显示错误的字体
尝试以GothamProBold字体将字幕刻录为FFMPEG格式的视频。不管我做什么,都不断恢复为Helvetica。从控制台中,我看到FFMPEG似乎可以正确加载字体。然后切换到字体提供程序“ coretext”
[Parsed_subtitles_0 @ 0x7fed054048c0] Loading font file '/Projects/Fonts/GothaProBol.otf'
[Parsed_subtitles_0 @ 0x7fed054048c0] Using font provider coretext
[Parsed_subtitles_0 @ 0x7fed054048c0] fontselect: (GothaProBol.otf,400,0) -> /System/Library/Fonts/Helvetica.ttc,-1,Helvetica
似乎已经加载了我的字体,然后加载了可能是Helvetica的系统默认设置。我的猜测是我选择的字体毕竟不是实际上正在加载。
FFMPEG命令(从python调用)如下:
ffmpeg_cmd = ["ffmpeg","-i",self.source_video_uri,"-y","-c:v","prores","-profile:v","1","-c:a","pcm_s16be","-vf",f"subtitles={srt_uri}:fontsdir=/Projects/Fonts:force_style='Fontname=GothaProBol.otf'",f"{self.source_video_uri}_render.mov"]
subprocess.call(ffmpeg_cmd)
有什么想法吗?
更新:在libass头文件“ ass.h”中找到此设置-ffmpeg在使用字幕过滤器时调用该设置。当ffmpeg调用libass时,不知道如何真正设置这个变量,但是就在这里。第182行:
* \brief Default Font provider to load fonts in libass' database
*
* NONE don't use any default font provider for font lookup
* AUTODETECT use the first available font provider
* CORETEXT force a CoreText based font provider (OS X only)
* FONTCONFIG force a Fontconfig based font provider
*
* libass uses the best shaper available by default.
*/
typedef enum {
ASS_FONTPROVIDER_NONE = 0,ASS_FONTPROVIDER_AUTODETECT = 1,ASS_FONTPROVIDER_CORETEXT,ASS_FONTPROVIDER_FONTCONFIG,ASS_FONTPROVIDER_DIRECTWRITE,} ASS_DefaultFontProvider;
RE:下答案:在大多数情况下,如果将字体安装在/ System / Fonts或/ Library / Fonts中,则CoreText可以找到它。尽管在某些情况下,命名约定可能非常特殊且不直观。似乎也不一定能找到所有字体。
例如:Gotham Pro Bold,在我系统的/ Library / Fonts文件夹中,正确地 名为“ GothaProBol.otf”的文件被传递为字体名:GothamPro-Bold或只是Gotham Pro。 Gotham Pro Bold,GothamPro,Gotham Pro-Bold,GothaProBol和GothaProBol.otf不起作用。
对于大多数字体,似乎首选的约定是{FontName}-{Style / Weight},如Mac OS的FontBook中显示的那样,而不是文件名。
也就是说,我在Gotham Pro的同一个文件夹中拥有一种新颖的'Game of Thrones.ttf'字体,在上述任何命名约定下,我都无法让CoreText连接到它。
解决方法
请勿将文件扩展名放在字体名称中:
force_style='fontname=GothamPro-Bold'
在我的情况下,我得到了一个名为GothamPro-Bold.otf
的文件,输出如下:
[Parsed_subtitles_0 @ 0x55c809fd73c0] Shaper: FriBidi 0.19.7 (SIMPLE) HarfBuzz-ng 2.6.4 (COMPLEX)
[Parsed_subtitles_0 @ 0x55c809fd73c0] Loading font file './fonts/GothamPro-Bold.otf'
[Parsed_subtitles_0 @ 0x55c809fd73c0] Using font provider fontconfig
[Parsed_subtitles_0 @ 0x55c809fd73c0] fontselect: (GothamPro-Bold,400,0) -> GothamPro-Bold,GothamPro-Bold
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。