moviepy制作视频时添加字幕失败

它也不报错,它就是不显示字幕,明明标题都能正常显示,仔细比对,标题和字幕的设置也并没有什么本质区别,疯狂测试时间轴、画布位置等还是一无所获。

直到……添加了一句英文字幕后,它显示出来了!

原来问题在这一句:

subtitle_clip = TextClip(text, fontsize='36', font='Arial', color='red', bg_color='black')

AI给出的解释是:

TextClip 使用的是 PIL(Python Imaging Library)进行文本渲染,而 PIL 在没有明确指定字体文件的情况下,默认使用系统内置的极简英文字体(如 DejaVu 或 Arial),这些字体通常不包含完整的中文字符集。
即使你设置了 font='Arial',但 Windows 上的 Arial 字体本身并不包含完整的中文字符,所以会静默失败。

于是,font='simhei' 就能显示中文了。

常见可用中文字体:
simhei.ttf:黑体
simsun.ttc:宋体
msyh.ttc:微软雅黑
KaiTi.ttf:楷体

以下是使用MoviePy视频添加字幕的步骤: 1. 安装MoviePy库。可以通过在命令行中运行以下命令来安装MoviePy: ``` pip install moviepy ``` 2. 导入MoviePy库和其他必要的库。以下是一个示例代码: ``` from moviepy.editor import * from moviepy.video.tools.subtitles import SubtitlesClip from moviepy.video.tools.subtitles import TextClip ``` 3. 创建一个SubtitlesClip对象。SubtitlesClip对象将会用于添加字幕。以下是一个示例代码: ``` subtitles = SubtitlesClip('path/to/subtitles.srt', fontsize=24) ``` 在这个代码中,我们创建了一个SubtitlesClip对象,并将字幕文件的路径传递给它。fontsize参数指定了字幕的字体大小。 4. 创建一个TextClip对象。TextClip对象将用于创建一个包含字幕视频。以下是一个示例代码: ``` text = TextClip('path/to/subtitles.srt', fontsize=24) ``` 在这个代码中,我们创建了一个TextClip对象,并将字幕文件的路径传递给它。fontsize参数指定了字幕的字体大小。 5. 将TextClip对象和SubtitlesClip对象合并成一个视频。以下是一个示例代码: ``` video = CompositeVideoClip([text, subtitles.set_pos(('center', 'bottom'))]) ``` 在这个代码中,我们使用CompositeVideoClip对象将TextClip对象和SubtitlesClip对象合并成一个视频。set_pos方法将SubtitlesClip对象放置在视频的底部中心。 6. 将字幕添加视频中。以下是一个示例代码: ``` video_with_subtitles = video.set_duration(10).subclip(0, 10).resize(0.5) original_video = VideoFileClip('path/to/video.mp4') final_video = CompositeVideoClip([original_video, video_with_subtitles]) final_video.write_videofile('path/to/final_video.mp4') ``` 在这个代码中,我们将原始视频加载到一个VideoFileClip对象中。然后,我们使用CompositeVideoClip对象将原始视频和包含字幕视频合并成一个最终视频。最后,我们使用write_videofile方法将最终视频保存到磁盘中。在这个示例代码中,我们将最终视频的持续间设置为10秒,并将其剪辑为从0秒到10秒。我们还将最终视频的大小缩小了一半。 完成以上步骤后,您应该能够使用MoviePy视频添加字幕
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值