magick: unable to read font异常解决方法

解决MoviePy视频剪辑,不支持中文字幕问题

在Linux服务器上,默认是没有中文字体,导致MoviePy的TextClip编辑视频字幕中异常:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/moviepy/video/VideoClip.py", line 1137, in __init__
    subprocess_call(cmd, logger=None)
  File "/usr/local/lib/python3.10/dist-packages/moviepy/tools.py", line 54, in subprocess_call
    raise IOError(err.decode('utf8'))
OSError: magick: unable to read font `SimHei' @ warning/annotate.c/RenderType/1024.
magick: delegate library support not built-in '/usr/share/fonts/type1/gsfonts/n019003l.pfb' (Freetype) @ warning/annotate.c/RenderFreetype/2108.
magick: no decode delegate for this image format `' @ error/constitute.c/ReadImage/746.
magick: no images for write '-write' 'PNG32:/tmp/tmp0s0dn2ch.png' at CLI arg 18 @ error/operation.c/CLINoImageOperator/4981.

原因:

MoviePy使用ImageMagick工具生产字幕,该工具使用操作系统字体,如果操作系统没有中文字体,MoviePy在编辑视频字幕时会出现异常。

解决:

1.确认linux系统是否安装了中文字体

   在终端窗口,输入fc-list命令,确认是否包含中文字体。

/usr/share/fonts/vista/msyhbd.ttc: Microsoft YaHei,微软雅黑:style=Bold,Negreta,tučné,fed,Fett,Έντονα,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,Полужирный,Fet,Kalın,Krepko,Lodia
/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: DejaVu Serif:style=Bold
/usr/share/fonts/opentype/urw-base35/URWBookman-LightItalic.otf: URW Bookman:style=Light Italic
/usr/share/fonts/opentype/urw-base35/URWBookman-Light.otf: URW Bookman:style=Light
/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf: DejaVu Sans Mono:style=Book
/usr/share/fonts/opentype/urw-base35/NimbusMonoPS-Italic.otf: Nimbus Mono PS:style=Italic
/usr/share/fonts/truetype/noto/NotoSansMono-Regular.ttf: Noto Sans Mono:style=Regular

常用的中文字体

楷体 simkai.ttf

隶书 SIMLI.TTF

黑体 simhei.ttf

仿宋 simfang.ttf

幼圆 SIMYOU.TTF

宋体 SIMSUN.TTF

新宋体 NSIMSUN.TTF

Linux其他管理字体命令:

#fc-list:上面已经提到过,它可以列出所有可用的字体

#fc-match:该命令以字符串搜索的方式,查找与所提供字体最相似的字体

#fc-cache:该命令会刷新字体缓存文件,并更新系统字体信息。这通常在安装新字体后应该执行

#fc-query:该命令可以查询字体信息,如文件名、字体格式、字符集、颜色等。

2.在linux的/usr/share/fonts目录下,新建vista目录(自己命名),在windows的C:\Windows\Fonts目录下,拷贝相关中文字体,并上传到vista目录下

3.在linux上执行安装命令
  #sudo mkfontscale && sudo mkfontdir
  #sudo fc-cache -f -v

4.重装ImageMagick,目的是出发imagick_type_gen脚本更新type.xml,添加支持中文字体

下载ImageMagick

sudo wget http://www.imagemagick.org/download/ImageMagick.tar.gz

解压

sudo tar xzvf ImageMagick.tar.gz

进入ImageMagick目录,依次执行命令安装

./configure

sudo make

sudo make install 

ldconfig /usr/local/lib

验证

使用convert命令测试ImageMagick是否已经支持中文字体:

convert -list font | grep Font

列表:

出现的列表中有中文字体,说明ImageMagick已经支持中文,MoviePy可以使用中文编辑中文字幕了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值