python - MoviePy 无法正确显示非英文文本

标签 python imagemagick moviepy

我使用 MoviePy 从图像创建视频,并在图像底部添加一些注释。问题是我要添加的文本是越南语(不是英语),因此 MoviePy 无法正确显示它。

具体来说,下面是我的代码

# -*- coding: utf-8 -*-
from moviepy.editor import *

# create clip from image
clip = ImageClip('img/1.jpg').on_color((1920, 1080))
clip = clip.set_duration(2)

# add annotation to clip
txtclip = TextClip('Truyện Kiều Nguyễn Du', fontsize=50, color='red')
cvc = CompositeVideoClip([ clip, txtclip.set_pos(('center', 'bottom'))])
cvc = cvc.set_duration(2)

# write video to file
cvc.write_videofile("text.mp4", fps=24)

它不显示 Truyện Kiều Nguyễn Du,而是显示 Truy?n Ki?u Nguy?n Du

我认为主要问题来自 ImageMagick 因为当我使用命令时

convert -size 400x200 xc:khaki -gravity Center -pointsize 30 -annotate 0 "Truyện Kiều Nguyễn Du"u8_an.png

ImageMagick 也创建了具有相同问题的图像。如果您能帮我解决这个问题,请告诉我。

更新:我也尝试将字符串转换为 utf-8 但它不起作用

t = u'Truyện Kiều Nguyễn Du'.encode('utf-8') txtclip = TextClip(t, 字体大小=50, 颜色='红色')

最佳答案

根据@Gloin的建议,我将我的解决方案作为答案发布。

通过对 TextClip 使用不同的字体来修复此问题。具体来说,这就是解决方案

# -*- coding: utf-8 -*-
from moviepy.editor import *

# create clip from image
clip = ImageClip('img/1.jpg').on_color((1920, 1080))
clip = clip.set_duration(2)

# add annotation to clip
t = u'Truyện Kiều Nguyễn Du'.encode('utf-8')
txtclip = TextClip(t, fontsize=50, color='red', font='FreeMono')
cvc = CompositeVideoClip([ clip, txtclip.set_pos(('center', 'bottom'))])
cvc = cvc.set_duration(2)

# write video to file
cvc.write_videofile("text.mp4", fps=24)

我认为问题是我们需要考虑(1)使用utf-8对字符串进行编码(2)使用合适的字体推送到ImageMagick(在我的例子中FreeMono是合适的一)

关于python - MoviePy 无法正确显示非英文文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42053326/

相关文章:

python - 从 matplotlib.backends 导入 _tkagg ImportError : cannot import name _tkagg

python - 比较 list 类型的 python 字典值以查看它们是否按该顺序匹配

ImageMagick:将图像转换为 A4 页面大小的 PDF,图像适合页面

python - 如何在 Python 中调整视频剪辑的大小

python - 使 matplotlib 图中的点可以通过鼠标选择

python - 如何在数据集中找到没有分类列和数值列

python - MoviePy:连接视频剪辑会导致最终视频出现奇怪的故障

python - 如何使用 moviepy 从 mkv 中提取单声道 wav?

ruby-on-rails-3 - rmagick gem install "Can' t 找到 Magick-config”

python linux - 以文件名显示图像作为查看器窗口标题