You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MoviePy使用Pango方法生成TextClip显示异常问题求助

MoviePy Pango模式文本乱码问题排查与解决

问题概述

  • 不使用method=pango时,TextClip文本显示正常;启用该模式后文本出现乱码
  • 核心需求:为文本中{key}变量对应的单词单独设置颜色与背景样式,剩余文本保留默认样式
  • 运行环境:Google Colab,已安装MoviePy基础依赖

代码对比

正常运行的非Pango代码

(
TextClip(text_line.strip().upper(), font="URW-Bookman-Demi", fontsize=100, color='yellow')
                    .set_position(('center', 'center'))
                    .set_duration(end-start)
                    .set_start(start)
)

出现乱码的Pango代码

(
TextClip(f'{text_line}<span foreground="#FF4567" background="black"><tt>{key}</tt></span>', 
           font="DejaVu Mono Sans", fontsize=100, color='yellow', method="pango")
           .set_position(('center', 'center'))
           .set_duration(end-start)
           .set_start(start)
)

可能原因及修复方案

1. Pango依赖不完整

Colab默认环境可能缺失Pango的核心依赖库,执行以下命令补全:

!apt-get update && apt-get install -y libpango1.0-dev libcairo2-dev libgirepository1.0-dev
!pip install pycairo pygobject

2. 字体识别异常

Pango对字体的识别逻辑与普通模式不同,DejaVu Mono Sans可能未在Colab中正确安装或无法被识别:

  • 先检查字体是否存在:
import matplotlib.font_manager as fm
[f.name for f in fm.fontManager.ttflist if 'DejaVu' in f.name]
  • 若字体缺失,执行安装命令:
!apt-get install -y fonts-dejavu-core
  • 可临时替换为Colab预装的DejaVu Sans测试效果。

3. Pango标记语法冲突

<tt>标签可能与字体设置冲突,先简化标记测试基础功能:

TextClip(f'{text_line}<span foreground="#FF4567" background="black">{key}</span>', 
           font="DejaVu Sans", fontsize=100, color='yellow', method="pango")

同时需确保text_line和key中无未转义的特殊字符(如<、>),需替换为HTML实体(<→&lt;)。

4. 字符串编码问题

确保文本为UTF-8编码,避免非ASCII字符异常:

text_line = text_line.encode('utf-8').decode('utf-8')
key = key.encode('utf-8').decode('utf-8')

内容的提问来源于stack exchange,提问作者Yadnesh Salvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:05:27