Moviepy简介

Moviepy是一个用于视频编辑的Python模块,它可被用于一些基本操作(如剪切、拼接、插入标题)、视频合成(即非线性编辑)、视频处理和创建高级特效。它可对大多数常见视频格式进行读写,包括GIF。

安装方式

Pip安装方式:pip install moviepy

MoviePy依赖 Numpy 、 imageio 、 Decorator 和 tqdm ,他们将在安装MoviePy的同时自动安装。运行平台为Windows/Mac/Linux,并使用Python2.7以上的版本和Python3。

MoviePy依赖FFMPEG软件对视频进行读写。不用对此担心,在你第一次使用MoviePy的时候,FFMPEG将会自动由ImageIO下载和安装(不过需要花一些时间)。如果你想使用FFMPEG的特定版本,你可以设置FFMPEG_BINARY环境变量。详见moviepy/config_defaults.py

基本功能模块

moviepy的功能:

 

python 安裝 pil python安装pillow moviepy_学习

    在Moviepy中,核心对象是剪辑,可以使用AudioClips或VideoClips来处理,它有六个直接子类(VideofileClip、ImageSequenceClip、CompositeVideoClip、ImageClip、DataVideoClip、UpdatedVideoClip)和两个间接子类(ColorClip,TextClip)

视频合成

     相应的模块有:VideoClip,CompositeVideoClip,VideoFileClip,Concatenate_videoclips

     基本功能介绍及使用方式:

            VideoClip:这个模块是专门用于处理视频文件剪辑的,其能实现的功能主要有视频文件剪辑,拼接,混编其中:

             剪辑功能:主要通过VideoFileClip模块实现

             拼接功能:主要通过Concatenate_videoclips模块实现

             混编功能:主要通过CompositeVideoClip模块实现

    

VideoFileClip

videofile = "new_video.mp4"
videoinfo = VideoFileClip(videofile).subclip(3, 10)
videoinfo.write_videofile("new_video_1.mp4")

以上代码就是把new_video.mp4的第3秒到第10秒剪裁下载生成在new_video_1.mp4中

Concatenate_videoclips

F_col_new = ['video1.mp4','video2.mp4','video3.mp4']
  S_column = "video_out.mp4"
  size_1 = (1024,1024)
  for j in F_column:
      clip2 = VideoFileClip(j).resize(size_1).set_position((0, 0))
      video.append(clip2)

  concatenate_videoclips(video, method="chain").write_videofile(S_column)

以上代码就是把video1.mp4(1分钟时长),video2.mp4(2分钟时长),video3.mp4(1分钟时长)按照先后循序拼接在一起,然后经过加工生成一个video_out.mp4(4分钟时长,video1,video2,video3的合成循序)。

CompositeVideoClip

screen_video_filename = 'Movie1.mp4'
name = "input.mp4"
size = (300, 300)
clip1 = VideoFileClip(screen_video_filename)
clip2 = VideoFileClip(name).resize(size).set_position((0, 0))
video = CompositeVideoClip([clip1,clip2])
video.write_videofile("output.mp4")

以上代码是以Movie1.mp4(2分钟)作为背景,将input.mp4(1分50秒)同步混编成一个以Movie1.mp4为背景展示input.mp4的混编视频output.mp4(2分钟).

音频合成

       相应的模块有:AudioClip,AudioFileClip,CompositeAudioClip,Concatenate_audioclips

        基本功能介绍及使用方式:

          AudioClip:这个模块是专门用于音频文件处理的,其能实现的功能主要有音频文件剪辑,拼接,混编其中:

             剪辑功能:主要通过AudioFileClip模块实现

             拼接功能:主要通过Concatenate_audioclips模块实现

             混编功能:主要通过CompositeAudioClip模块实现

AudioFileClip

audio1 = AudioFileClip('Teeth.mp3').subclip(35,75)
audio1.write_audiofile("Teeth2.mp3")

以上代码就是把Teeth.mp3的第35秒到第75秒剪裁下载生成在Teeth2.mp3中

Concatenate_audioclips

audio1 = AudioFileClip('Teeth.mp3').subclip(35,75)
audio2 = AudioFileClip('Teeth.mp3').subclip(131,172)
audio3 = AudioFileClip('Teeth.mp3').subclip(102,130)

audio4 = concatenate_audioclips([audio1,audio2,audio3]).write_audiofile(r"Teeth2.mp3")

以上代码就是把audio1(40秒),audio2(41秒),audio3(28秒)按照先后循序拼接在一起,然后经过加工生成一个Teeth2.mp3(109秒,audio1,audio2,audio3的合成循序)。

CompositeAudioClip

audio1 = AudioFileClip('Teeth.mp3').subclip(35,75)
audio2 = AudioFileClip('Teeth.mp3').subclip(131,172)
audio_input = CompositeAudioClip([audio1, audio2]).write_audiofile(r"Teeth2.mp3")

以上代码是将Teeth.mp3的35秒到75秒(audio1 40秒)与131秒到172秒(audio2 41秒)混音成一个新的音频文件Teeth2.mp3(41秒).

图片文字处理

        相应的模块有:ImageClip,TextClip,ImageSequenceClip

        基本功能介绍及使用方式:

                  ImageClip:这个模块是专门用于图片,文字,颜色处理的,其能实现的功能主要有贴图,贴文字,图片时序合成其中:

             贴图功能:主要通过 ImageClip模块实现

             贴文字功能:主要通过TextClip模块实现

             图片时序功能:主要通过ImageSequenceClip模块实现

TextClip,ImageClip

name = "videofile.mp4"

clip1 = VideoFileClip(name)

size = (int(clip1.size[0]),int(clip1.size[1]))

y = 200

clip2 = VideoFileClip(name).resize(size).set_position((0,0))

logo =(mp.ImageClip("test.jpg").set_duration(clip2.duration).
resize(height=y,width=int(clip1.size[0])).set_pos((0, 0)))

video_info = [clip2,logo]

video_info.append(TextClip("吉尔伽美什", font='simsun.ttc', fontsize=60, color='white').
set_position((50,50)).set_duration(clip2.duration))

video_info.append(TextClip("乌鲁克神殿", font='simsun.ttc', fontsize=60, color='white').
set_position((50,150)).set_duration(clip2.duration))

video_info.append(TextClip("贤王的战前演讲", font='simsun.ttc', fontsize=60, color='white').
set_position((50,250)).set_duration(clip2.duration))

CompositeVideoClip(video_info).write_videofile(r'pip3.mp4')

     Textclip和ImageClip是一个添加在视频剪辑中的文字添加和图片添加功能,所以主要是设置在视频当中的出现时长,出现位置,字体,内容一系列属性,

     在以上代码中logo就是ImageClip功能将图片test.jpg添加视频的一个(0,0,200,int(clip1.size[1]))的方位,

     之后video_info.append的就是TextClip功能将三段文本按照一定的格式,设定在(50,50),(50,150),(50,250)方位,设定时长为videofile.mp4播放时长

      TextClip和ImageClip最好结合CompositeVideoClip功能一起生成pip3.mp4视频文件。

ImageSequenceClip

fps = 1
  pic_info = ['pic1.jpg','pic2.jpg','pic3.jpg','pic4.jpg','pic5.jpg']
  clip = moviepy.video.io.ImageSequenceClip.ImageSequenceClip(pic_info, fps=fps)
  clip.write_videofile('pic_movie.mp4')

以上代码是使用ImageSequenceClip功能,以1秒1张图片的方式将pic1.jpg至pic5.jpg这5张图片合成一个5秒的pic_movie.mp4图片展示视频。