Python实现给视频添加字幕

pu369com / 2024-02-04 / 原文

主要思路:

1.用moviepy库处理视频文件;用 pysrt库处理字幕。

2.由于moviepy依赖名为ImageMagick免费开源图片编辑软件,所以要先安装ImageMagick

开始:

1.安装ImageMagick

到官网 https://www.imagemagick.org/script/download.php#windows 下载

我这里选择 ImageMagick-7.1.1-27-Q16-HDRI-x64-dll.exe

下载还是较快,但运行时被Microsoft Defender SmartScreen 阻止了,不管了,选择仍要运行,直到安装完毕。

重新打开cmd命令行窗口,用where  Magick 命令,证明安装成功并可找到了

2.安装moviepy和pysrt库

pip install moviepy pysrt

3.修改moviepy的设置

在python的  Lib\site-packages\moviepy 目录中,修改config_defaults.py,在最后一行添加:

IMAGEMAGICK_BINARY = r"这里是你的安装目录,如 C:\Program Files\ImageMagick-7.1.1-Q16-HDRI\magick.exe"

4.以下为示例代码

from moviepy.editor import *

# 加载视频文件
video = VideoFileClip("input.mp4")

# 定义剪辑的起始和结束时间(以秒为单位)
start_time = 10
end_time = 15

# 对视频进行剪辑
clipped_video = video.subclip(start_time, end_time)

# 添加文字
text = TextClip("Hello, World!", fontsize=30, color='white')
text = text.set_position('center').set_duration(5)

# 添加音乐
#audio = AudioFileClip("music.mp3").subclip(0, 5)

# 将文字和音乐添加到视频中
final_video = CompositeVideoClip([clipped_video, text])
#final_video = final_video.set_audio(audio)

# 导出视频
final_video.write_videofile("output.mp4")

大概是我电脑不行,截取5秒钟的视频添加字幕就耗时超过2分钟。

 5.添加中文

首先从C:\Windows\Fonts找一个中文字体,复制到项目中,确保复制到项目中的字体名称是英文的。

然后用如下代码:

from moviepy.editor import *

# 加载视频文件
video = VideoFileClip("input.mp4")

# 定义剪辑的起始和结束时间(以秒为单位)
start_time = 10
end_time = 15

# 对视频进行剪辑
clipped_video = video.subclip(start_time, end_time)

# 添加文字
text = TextClip("hello 你好!", fontsize=30,font="simhei.ttf",color='white')
text = text.set_position('center').set_duration(3)

# 添加音乐
#audio = AudioFileClip("music.mp3").subclip(0, 5)

# 将文字和音乐添加到视频中
final_video = CompositeVideoClip([clipped_video, text])
#final_video = final_video.set_audio(audio)

# 导出视频
final_video.write_videofile("output.mp4")

 6.生成空视频并添加中文

from moviepy.editor import * 

def color_clip(size, duration, fps=25, color=(0,0,255), output='color.mp4'):
    #生成空白视频
    color_video = ColorClip(size, color, duration=duration)
    # 添加文字
    text = TextClip("hello 你好!", fontsize=30,font="simhei.ttf",color='white')
    text = text.set_position('center').set_duration(3)
    # 将文字和音乐添加到视频中
    final_video = CompositeVideoClip([color_video, text])
    final_video.write_videofile(output, fps=fps)

if __name__ == '__main__':
    size = (200, 100)    
    duration = 5    
    color_clip(size, duration)

 

 

 

 

参考:https://blog.51cto.com/u_16213450/7057470

https://blog.csdn.net/meridian002/article/details/131365025

https://jingyan.baidu.com/article/5553fa82025ae624a3393461.html

https://blog.csdn.net/wenxingchen/article/details/122965983

https://blog.csdn.net/hihell/article/details/128833357

https://www.cnpython.com/qa/354026

https://blog.csdn.net/JBY2020/article/details/128819587