pu369com

Python实现给视频添加字幕

主要思路:

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)

 7.视频去除声音,并重新添加声音

主要代码:

 video = VideoFileClip(local+“demo.mp4”) #加载原视频
video_without_audio = video.without_audio() #原视频去声
video_without_audio.write_videofile(local+“output_video.mp4”) #保存无声视频
audio = AudioFileClip(local+“demo.mp3”) #新的声音
if audio.duration>video.duration: #对齐音视频
      audio = audio.subclip(0,video.duration)
video = video.set_audio(audio) #视频中加声音
video.write_videofile(local+“new_video.mp4”)#保存新视频

 8.做一个可用于学习唐诗的视频吧

from moviepy.editor import * 

#生成空白视频
size = (300, 300)
color=(0,20,00)
duration = 6
fps=25
output='color.mp4'
video = ColorClip(size, color, duration=duration)
# 添加文字
text1 = TextClip("静夜思\n唐\n李白", fontsize=30,font="simhei.ttf",color='white')
text1 = text1.set_position('center').set_start(0).set_duration(2)
text2 = TextClip("床前明月光,\n疑是地上霜。\n举头望明月,\n低头思故乡。", fontsize=30,font="simhei.ttf",color='white')
text2 = text2.set_position('center').set_start(2).set_duration(4)
# 将文字和音乐添加到视频中
final_video = CompositeVideoClip([video, text1,text2])
final_video.write_videofile(output, fps=fps)

 

 

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

https://www.cnblogs.com/lfri/p/11601211.html

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

https://blog.csdn.net/weixin_38093452/article/details/129927125

https://www.zhihu.com/question/572101159/answer/2799739961?utm_id=0

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

https://www.5axxw.com/questions/simple/1v758i

posted on 2024-02-04 15:46  pu369com  阅读(194)  评论(0编辑  收藏  举报

导航