最近发现,公司在进行视频合成的时候,部分业务不是在客户端进行合成,而是在后端进行合成,让我有点惊讶,立马问开发要了代码,想要看看到底在后端如何处理的。
学习文档:https://blog.csdn.net/ucsheep/article/details/80999939
https://zulko.github.io/moviepy/install.html
1.下载pycharm和安装
https://blog.csdn.net/mumuwang1234/article/details/110679626
2.安装moviepy
终端执行:
pip install moviepy
提示如下:zsh: command not found: pip
尝试发现电脑已安装了pip3,但是一安装就报错如上,后执行如下命令pip3 install --upgrade pip
继续执行pip install moviepy即可。
3.安装imagemagick
终端执行:
brew install imagemagick
4.验证安装成功
终端执行:
convert --version
5.example
example1:拼接视频
from moviepy.editor import *# 从本地载入视频myHolidays.mp4并截取00:00:50 - 00:00:60部分
clip = VideoFileClip("/Users/user/Downloads/测试视频.mp4").subclip(3, 4)# 调低音频音量 (volume x 0.8)
clip = clip.volumex(0.8)# 做一个txt clip. 自定义样式,颜色.
txt_clip = TextClip("My Holidays 2013", fontsize=70, color='white')# 文本clip在屏幕正中显示持续10秒
txt_clip = txt_clip.set_pos('center').set_duration(3)# 把 text clip 的内容覆盖 video clip
video = CompositeVideoClip([clip, txt_clip])# 把最后生成的视频导出到文件内
video.write_videofile("/Users/user/Downloads/myHolidays_edited.webm")
效果展示图如下
example2:叠加视频
from moviepy.editor import VideoFileClip, clips_array, vfxclip1 = VideoFileClip("/Users/user/Downloads/测试视频.mp4").margin(20)
clip2 = clip1.fx(vfx.mirror_x) # x轴镜像
clip3 = clip1.fx(vfx.mirror_y) # y轴镜像
clip4 = clip1.resize(0.6) # 尺寸等比缩放0.6final_clip = clips_array([[clip1, clip2],[clip3, clip3]
])
final_clip.resize(width=480).write_videofile("/Users/user/Downloads/测试视频1.mp4")
效果展示图(易烊千玺yyds)
6.常用的功能
视频拼接我们使用concatenate_videoclips函数来完成。
视频叠加我们使用clip_array函数来完成。
合成音频的需求:CompositeAudioClip和concatenate_audioclips这俩类。