moviepy

 

 

文档链接:

1git链接:https://github.com/Zulko/moviepy

2User Guide:https://zulko.github.io/moviepy/

3 中文文档:https://moviepy-cn.readthedocs.io/zh/latest/

 

moviepy

1 简单视频拼接

复制代码
#导入VideoFileclip和concatenate_videoclips
from moviepy.editor import VideoFileClip,concatenate_videoclips
#实例化视频1
clip1=VideoFileClip("video/1.mp4")
#实例化视频2
clip2=VideoFileClip("video/2.mp4")
#实例化视频3
clip3=VideoFileClip("video/3.mp4")

#连接视频对象
finalclip=concatenate_videoclips([clip1,clip2,clip3])
#输出拼接的视频到名为out_put.mp4的文件里
finalclip.write_videofile("out_put.mp4")
View Code
复制代码
复制代码
#!\Users\Local\Programs\Python37
# -*- coding: utf-8 -*-

def concatenate():
    #拼接(使它们变成一个更长的剪辑,一个接一个播放)
    from moviepy.editor import VideoFileClip, concatenate_videoclips
    clip1 = VideoFileClip("video/movie1.mp4")
    clip2 = VideoFileClip("video/movie2.mp4").subclip(0,3)
    clip3 = VideoFileClip("video/movie3.mp4")
    final_clip = concatenate_videoclips([clip1,clip2,clip3])
    final_clip.write_videofile("video/my_concatenation.mp4")
def clips_array():
    #堆起来(使他们并排组成画面更大的剪辑)
    from moviepy.editor import VideoFileClip, clips_array, vfx
    clip1 = VideoFileClip("video/movie1.mp4").margin(10) # add 10px contour
    clip2 = clip1.fx(vfx.mirror_x)
    clip3 = clip1.fx(vfx.mirror_y)
    clip4 = clip1.resize(0.60) # downsize 60%
    final_clip = clips_array([[clip1, clip2],
                              [clip3, clip4]])
    final_clip.resize(width=480).write_videofile("my_stack.mp4")
if __name__ == '__main__':
    # concatenate()
    clips_array()
拼接与堆叠
复制代码

 

2 音频处理

复制代码
from moviepy.editor import AudioFileClip,VideoFileClip

video1 =VideoFileClip("video/1.mp4") #获取视频1
audio1 = AudioFileClip("video/1.mp3") #获取音频1

video1.audio =audio1 #把音频赋值给视频

video1.write_videofile("output1.mp4")
1 音频添加给视频
复制代码
复制代码
from moviepy.editor import VideoFileClip,AudioFileClip

video1 =VideoFileClip("video/1.mp4")
audio =video1.audio #获取音频
audio.write_audiofile("提取音频1.mp3")
2 获取视频中的音频
复制代码
复制代码
from moviepy.editor import *

#读取两个视频文件
videoclip_1 =VideoFileClip("video/1.mp4")
videoclip_2 =VideoFileClip("video/2.mp4")

audio_1 =videoclip_1.audio #提取第一个视频的音频

videoclip_3 =videoclip_2.set_audio(audio_1) #将提取的音频和第二个视频合成

videoclip_3.write_videofile("output.mp4")
3 导出视频中的音频给另一个视频
复制代码

 

3 遮罩遮挡视频区域

复制代码
from moviepy.editor import VideoFileClip,ColorClip,CompositeVideoClip
video =VideoFileClip("video/2.mp4")

#设置一个颜色剪辑对象,当作遮罩
size =(130,60) #大小
position= (300,300)#位置
color=(0,0,0)#遮罩颜色
duration =video.duration #时长
mask=ColorClip(size,color)
mask =mask.set_position(position)
mask =mask.set_duration(duration)

clip_list =[video,mask] #视频列表,后面优先级更高,mask放到后面
final_clip =CompositeVideoClip(clip_list)
final_clip.write_videofile("mask.mp4")
1颜色遮罩
复制代码
复制代码
from moviepy.editor import VideoFileClip,ImageClip,CompositeVideoClip
video =VideoFileClip("video/2.mp4")

#设置一个图片对象
position= (300,300)#位置
duration =video.duration #时长
mask =ImageClip("video/Logo.png")
mask =mask.set_position(position)
mask =mask.set_duration(duration)

clip_list =[video,mask] #视频列表,后面优先级更高,mask放到后面
final_clip =CompositeVideoClip(clip_list)
final_clip.write_videofile("mask.mp4")
2 图片遮罩
复制代码

 

4 截取视频片段转为gif

复制代码
from moviepy.editor import VideoFileClip

video = VideoFileClip("video/2.mp4")
start_time =1.02
end_time =2.03

video =video.subclip(start_time,end_time)
video=video.resize((480,320)) #重新设置大小
video.write_gif("output.gif")
View Code
复制代码

 

5 视频添加水印文字

复制代码
from moviepy.editor import VideoFileClip

video = VideoFileClip("video/2.mp4")
start_time =1.02
end_time =2.03

video =video.subclip(start_time,end_time)
video=video.resize((480,320)) #重新设置大小
video.write_gif("output.gif")
View Code
复制代码

 

6 合并图片为视频

复制代码
import os

from moviepy.editor import ImageSequenceClip,AudioFileClip,ImageClip
from imageio import imread,imwrite
#取当前文件绝对路径,拼装图片路径
current_file_name=os.path.abspath(__file__)
current_dir=os.path.dirname(current_file_name)
images_dir=os.path.join(current_dir,"images")
#获取文件列表,以及音频对象,计算每一秒要多少图片
image_files=os.listdir(images_dir)
audio=AudioFileClip("extract.mp3")
fps=len(image_files)/audio.duration
#获取图片文件列表,并拼接图片文件夹,并追加到新列表中
image_file_list=[]
for i in image_files:
    image_file=os.path.join(images_dir,i)#拼接图片文件路径
    image_file_list.append(image_file)#追加文件到列表
    #改变大小以及形状
    image=imread(image_file)
    imwrite(image_file,image,size=(800,600),shape=(600,800,3))#形状的参数是高,宽,3彩色通道
#组成序列片段
clip = ImageSequenceClip(image_file_list,fps=fps)
clip.duration=audio.duration#视频的长度和音频一样
clip.audio=audio
#输出到output
clip.write_videofile("output.mp4")
View Code
复制代码

 

posted @   风hua  阅读(125)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示