moviepy学习使用笔记

1. moviepy安装

版本选择

moviepy有两个主流版本:
1.0.3 和 2.x
目前2.x版本称不上好用, 语法上有所改进,除此之外变动不算很大,但与1.x版本不兼容,
因此是否升级到2.x全看个人需求,本人先接触并学习使用了1.0.3版本,所以就用该版本展开。

安装命令

pip install moviepy==1.0.3
# 或者安装最新版2.x
pip install moviepy

2. 使用文档

1.0.3文档

https://zulko.github.io/moviepy/v1.0.3/index.html
除了快速入门指导外,还有一个画廊章节(Gallery)值得一看,可以提供一些剪辑的进阶思路

中文文档

https://moviepy-cn.readthedocs.io/zh/latest/index.html

写的比较好的学习博客

https://blog.51cto.com/u_11866025/8923754
可以作为1.0.3版本基础用法的速查表

2.x文档

https://zulko.github.io/moviepy/index.html

放弃升级到2.x的一个理由就是他的用户指南有代码跑不通。。。。

1.0.3到2.x快速上手

经过实际测试,1.0.3的代码,改动几个地方就可以在2.x的环境上跑通:

  1. 导入时去掉.editor
# 1.0.3的依赖导入
from moviepy.editor import *

# 2.x的依赖导入
from moviepy import *

  1. set_方法改成with_方法
# 示例

# 1.0.3
clip.set_duration()
# 2.x
clip.with_duration()

  1. vx特效调用方式本来就有多种,2.x统一了下
    增加了一个.with_effect()调用方式

3. 可能遇到的问题

3.1 依赖问题

使用TextClip渲染文本需要安装ImageMagick
可能会用到pygame

3.2 中文显示问题

如果中文文本没有出现,大概率是字体库的问题,换一个font即可。
查看moviepy支持的字体库:


from moviepy.editor import TextClip
print(TextClip.list("font"))

4. 特效示例中文显示的问题

移动的字母效果看上去非常不错,但实际复现时就会发现: 中文显示不全

即便用了正确的字体也会出现该问题

在这里插入图片描述

这是因为moviepy的findObject方法是基于像素级区域占比来识别独立对象的,

别说形状各异的汉字了,连字母里的i都识别不了。。。。

这个示例代码把文本改成white text就直接露馅儿了
在这里插入图片描述
整行文本只剩了Wh两个字母出镜,其他的隐身了(bishi)

所以实际上想要正常显示中文,就要自己重写分词逻辑
我的解决思路是根据字数和每个字的像素尺寸逐字创建textclip,然后组成列表,和findObject返回值保持一致,这样就可以只替换函数调用,后续代码不用变。

具体代码挖坑待填(目前写的太乱,正在增加自动换行的逻辑)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值