1. 混合播放

1.1 顺序播放

from moviepy.editor import VideoFileClip, concatenate_videoclips
clip1 = VideoFileClip("myvideo.mp4")
clip2 = VideoFileClip("myvideo2.mp4").subclip(50,60)
clip3 = VideoFileClip("myvideo3.mp4")
final_clip = concatenate_videoclips([clip1,clip2,clip3])
final_clip.write_videofile("my_concatenation.mp4")

依次播放,视频的大小以第一个视频为准,视频的大小为最大的剪辑的大小,小于该大小的剪辑可以选择填充颜色,也可以设置过度效果transaction=myclip

1.2 Stack播放

就是使用clips_array将剪辑堆叠到窗口中一起进行播放

from moviepy.editor import VideoFileClip, clips_array, vfx
clip1 = VideoFileClip("myvideo.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")

stacked

1.3 CompositeVideoClips

将剪辑以图层的形式一起进行播放

video = CompositeVideoClip([clip1,clip2,clip3])

clip3在最上层,依次clip2,clip1。 重叠的部分会被遮挡,除非顶层会有mask遮罩层。组合的剪辑的大小默认为clip1的大小,即最底层的剪辑的大小。也可以自己指定大小

video = CompositeVideoClip([clip1,clip2,clip3], size=(720,460))

1.3.1 设置剪辑的start时间和进入特效

video = CompositeVideoClip([clip1, # starts at t=0clip2.set_start(5).crossfadein(1),clip3.set_start(9).crossfadein(1.5)])

1.3.2 设置位置

video = CompositeVideoClip([clip1,clip2.set_pos((45,150)),clip3.set_pos((90,100))])clip2.set_pos((45,150)) # x=45, y=150 , in pixelsclip2.set_pos("center") # automatically centered# clip2 is horizontally centered, and at the top of the picture
clip2.set_pos(("center","top"))# clip2 is vertically centered, at the left of the picture
clip2.set_pos(("left","center"))# clip2 is at 40% of the width, 70% of the height of the screen:
clip2.set_pos((0.4,0.7), relative=True)# clip2's position is horizontally centered, and moving down !
clip2.set_pos(lambda t: ('center', 50+t) )

1.3.3 混合音频剪辑

MoviePy会自动把你组合的音轨加到最终的 video clip 中,不需要手动组合

from moviepy.editor import *
# ... make some audio clips aclip1, aclip2, aclip3
concat = concatenate_audioclips([aclip1, aclip2, aclip3])
compo = CompositeAudioClip([aclip1.volumex(1.2),aclip2.set_start(5), # start at t=5saclip3.set_start(9)])

2.剪辑的变换和效果

2.1 特效

moviepy.video.fx 和 moviepy.audio.fx 中有很多已经实现的效果,但是这些方法都不会在原来的剪辑上进行修改,而是生成一个新的剪辑

from moviepy.editor import *
clip = (VideoFileClip("myvideo.avi").fx( vfx.resize, width=460) # resize (keep aspect ratio).fx( vfx.speedx, 2) # double the speed.fx( vfx.colorx, 0.5)) # darken the picture

常用的特效可以使用一些一般化的方法而不是使用.fx(),比如resize(),使用.fx( vfx.resize, width)就显得比较复杂,可以使用clip.resize()

设置起始时间的方式

clip.subclip(t_start,t_end)t_start=230.54
t_start=(3,50.54)  #(minutes, seconds)
t_start=(0,3,50.54) #(hour, min, sec)
t_start='00:03:50.54'
clip.subclip(-20, -10)    #倒数20秒和倒数10秒

2.2 创建自己的特效

2.2.1 修改时间线

modifiedClip1 = my_clip.fl_time(lambda t: 3*t)
modifiedClip2 = my_clip.fl_time(lambda t: 1+sin(t))

modifiedClip1:以3倍的速度进行播放
modifiedClip2:在0到2秒之间进行摆动,这是一个不会停止的剪辑

2.2.2 反转颜色

def invert_green_blue(image):return image[:,:,[0,2,1]]modifiedClip = my_clip.fl_image( invert_green_blue )

2.2.3 通过frame

def scroll(get_frame, t):"""This function returns a 'region' of the current frame.The position of this region depends on the time."""frame = get_frame(t)frame_region = frame[int(t):int(t)+360,:]return frame_regionmodifiedClip = my_clip.fl( scroll )

2.2.4 推荐

能使用fl_time、fl_image实现效果就用fl_time或者fl_image,这样渲染的速度会很快

3 如何有效的利用moviepy?

3.1 我是否应该使用moviepy.editor?

  • 如果你使用moviepy手工编辑视频,使用它
  • 如果你在大型库或者webserver中使用,则不需要使用它

3.2 加载moviepy.editor

三种方式

from moviepy.editor import * # imports everything, quick and dirty
import moviepy.editor as mpy # Clean. Then use mpy.VideoClip, etc.
from moviepy.editor import VideoFileClip # just import what you need

这样可以导入所有的类,但是要花费大约1秒的时间,如果你想更快可以直接导入你需要的东西
比如

from moviepy.video.io.VideoFileClip import VideoFileClip
from moviepy.video.fx.resize import resize

3.3 预览clip的方法

3.3.1 存储某一帧的图像

my_clip.save_frame("frame.jpeg") # saves the first frame
my_clip.save_frame("frame.png", t=2) # saves the frame a t=2s

3.3.2 通过PyGame Window

需要先安装pygame
显示某一帧

my_clip.show() # shows the first frame of the clip
my_clip.show(10.5) # shows the frame of the clip at t=10.5s
my_clip.show(10.5, interactive = True)

interactive=True 代表你可以在画面上点击以显示位置和像素的颜色,按esc可以退出

预览

my_clip.preview() # preview with default fps=15
my_clip.preview(fps=25)
my_clip.preview(fps=15, audio=False) # don't generate/play the audio.
my_audio_clip.preview(fps=22000)

3.4 ipython预览

通过ipython_display方法来预览一个clip或者图片,或者MP4

ipython_display(my_video_clip) # embeds a video
ipython_display(my_imageclip) # embeds an image
ipython_display(my_audio_clip) # embeds a soundipython_display("my_picture.jpeg") # embeds an image
ipython_display("my_video.mp4") # embeds a video
ipython_display("my_sound.mp3") # embeds a sound

直接调用clip的方法

my_video_clip.ipython_display()

调整预览窗口的大小

ipython_display(my_clip, width=400) # HTML5 will resize to 400 pixels

3.5 音频 MoviePy

3.5.1 获取AudioClip

从文件中获取

from moviepy.editor import *
audioclip = AudioFileClip("some_audiofile.mp3")
audioclip = AudioFileClip("some_video.avi")

从clip中获取

videoclip = VideoFileClip("some_video.avi")
audioclip = videoclip.audio

3.5.2 为clip设置音轨

videoclip2 = videoclip.set_audio(my_audioclip)

moviepy-用python编辑视频剪辑相关推荐

  1. MoviePy - 使用 Python 编辑视频

    MoviePy 是一个用于编辑视频的 Python 模块,可用于视频剪切.视频合并.标题插入.视频旋转变换等一些基本的视频操作.MoviePy 可以读写很多常见的视频格式,包含 GIF. 本文介绍如何 ...

  2. Python 实现视频剪辑

    尝试python实现视频剪辑的程序,可以使用 Python 的 moviepy 库来剪辑视频. 首先,需要安装 moviepy 库.你可以使用以下命令在终端中安装: pip install movie ...

  3. python做视频剪辑_用python进行视频剪辑

    这篇文章主要介绍了如何用python进行视频剪辑,帮助大家更好的利用python处理视频,感兴趣的朋友可以了解下 一.目标 python,利用moviepy和pydub将一段视频进行区间切割 二.源码 ...

  4. python剪辑视频 裁剪_用python进行视频剪辑

    一.目标 python,利用moviepy和pydub将一段视频进行区间切割 二.源码 import os from moviepy.video.io.VideoFileClip import Vid ...

  5. python自动剪视频_用python进行视频剪辑

    一.目标 python,利用moviepy和pydub将一段视频进行区间切割 二.源码 import os from moviepy.video.io.VideoFileClip import Vid ...

  6. python 编辑视频_python也能玩视频剪辑!moviepy操作记录总结

    moviepy库安装 今天咱们需要使用的第三方是moviepy,moviepy是用于视频编辑的Python模块,可用于基本操作(例如剪切,串联,标题插入),视频合成(也称为非线性编辑),视频处理或创建 ...

  7. Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载

    ☞ ░ 前往老猿Python博文目录 ░ 一.简介 MoviePy是一个用于视频编辑的Python模块,可用于进行视频的基本操作(如剪切.拼接.标题插入).视频合成(也称非线性编辑).视频处理或创建高 ...

  8. 用 Python 玩视频剪辑 让生活简易化

    Python 剪辑 自动化剪辑 单视频剪辑 多视频混剪拼接 自动拼接 自定义拼接 视频生成 GIF 动画 自动化剪辑   平时会遇到一些需要保存视频里的部分片段,而不会使用剪辑软件的朋友或者觉得视频软 ...

  9. python编程视频剪辑_专治爱剪辑的片头片尾的脚本(Python)

    起因 最近看到很多由爱剪辑做的视频,片头和片尾的展示实在影响视频的美观性,所以想着.如何用Python去实现.于是写了这个脚本. 依赖 这里需要一个Python的库叫moviepy,专门用来处理视频的 ...

  10. python实现视频剪辑_MoviePy常用剪辑类及Python视频剪辑自动化

    视频地址:https://www.bilibili.com/video/BV1mv411k7Qv?p=4 导入方式 所有的剪辑类都可以从moviepy.editor模块中导入 Clip 所有剪辑类的基 ...

最新文章

  1. adf盖怎么打开_打印机墨盒怎么更换,看我这篇文章就够了
  2. 面性对象中栈内存和堆内存的理解
  3. C/S框架-发布和部署WebService
  4. 33、Power Query-统计员工完成业绩的记录
  5. springcloud(十一):服务网关Zuul高级篇
  6. vue中 裁剪,预览,上传图片 的插件
  7. 关于Spring容器管理Bean的过程以及加载模式
  8. C++内存分配方式-堆、栈、自由存储区、全局/静态存储区和常量存储区
  9. Select查询之通配符
  10. 剑指offer之替换空格
  11. 初识计算机操作系统与进程
  12. 数据库原理与应用 基于SQL Server 2005pdf
  13. 前端实现很哇塞的浏览器端扫码功能
  14. Gsensor/Gyro数据滤波算法思考
  15. 【智能优化算法-白鲸优化算法】基于白鲸优化算法求解单目标优化问题附matlab代码
  16. iPhone8 和 iPhoneX 买哪个?听我的
  17. 在OC项目下实现SwiftMonkey
  18. 基于风光储能和需求响应的微电网日前经济调度(Python代码实现)
  19. 【Shell】awk命令--输出某列,列求和,列求平均值,列最大值,列去重复,取倒列,过滤行,匹配,不匹配,内置变量|定义分隔符|多个分隔符...
  20. 浅谈阳明学和佛学的异同

热门文章

  1. 1092 To Buy or Not to Buy
  2. 关于kindle上传电子书以及无法显示图标问题的解决方法
  3. 用纯Java代码根据IP获取windows和linux的MAC物理地址
  4. java面试宝典下部
  5. html5、canvas核型技术阅读(1)
  6. 【M33】将非尾端类设计为抽象类
  7. 2022-11-23 Rockchip i2c切换到另外一个控制口i2c3m2_xfer /I2C3_SCL_M4 方法
  8. linux shell 鼠标事件,Bash Shellshock事件:CVE-2014-6271资料汇总
  9. 执行 tensorboard --logdir logs遇到的浏览器中输入http://localhost:6006 网址打不开的问题
  10. P3338 [ZJOI2014]力 [FFT]