获取视频切片
clip = VideoFileClip("myHolidays.mp4").subclip(50,60)#切片视频文件,subclip截取时间
txt_clip = TextClip("My Holidays 2013",fontsize=70,color='white')# 生成字幕切片
- VideoFileClip 视频文件剪辑
- ImageClip 图片剪辑
- ColorClip 颜色剪辑
- TextClip 文字剪辑
设置字幕切片的位置,设置视频前10秒
txt_clip = txt_clip.set_pos('center').set_duration(10)
把视频切片合成
video = CompositeVideoClip([clip, txt_clip],site=(720,460))多个切片合成
final_clip = concatenate_videoclips([clip1,clip2,clip3]),多个切片首尾连接起来合成
final_clip = clips_array([[clip1, clip2],
[clip3, clip4]]) 对剪辑切片进行堆叠合成
clip = ImageSequenceClip(images_list, fps=25)一系列图片组合成剪辑切片,images_list为列表图片地址
输出视频
video.write_videofile("myHolidays_edited.webm")
animation.write_gif("my_animation.gif", fps=24) # usually slower保存成动态图片输出
my_clip.save_frame("frame.png", t=2)保存第2秒时候一帧
clip.get_frame()方法输出一个HxWx3的numpy数组来表示剪辑在时间t时的一帧
预览视频,需安装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 展示10.5s时候的一帧消失
my_clip.show(10.5, interactive = True)展示10.5s时候的一帧不消失,esc按键取消点击可获取位置和颜色
my_clip.preview() # 预览一直显示
my_clip.preview(fps=25) #帧率25设置预览一直显示
my_clip.preview(fps=15, audio=False) # don't generate/play the audio.
my_audio_clip.preview(fps=22000) 一直显示esc按键取消,点击可获取位置和颜色
实时预览,需要在Jupyter Notebook中运行
my_video_clip.ipython_display()
my_video_clip.ipython_display(t=15) 只预览15s的快照
ipython_display(my_clip, width=400) 预览设置长度
ipython_display(my_clip, autoplay=1, loop=1)一直循环预览
切片控制
clip = clip.volumex(0.8)#设置切片声音0.8倍
.subclip(50,60)切片截取时间段
clip.resize(width="360")更改切片的长度
.margin(10)增加切片的边框10像素
clip2 = clip1.fx( vfx.mirror_x),左右翻转
clip3 = clip1.fx( vfx.mirror_y),上下翻转
.set_duration(10)设置切片出现的时间段,前10秒
clip1 = clip1.set_start(5)从第5秒开始播放
clip2.set_start(5).crossfadein(1)视频合成时候,两个视频衔接设置一秒淡入
.set_pos('center')设置切片位置,中间
clip2.set_pos((45,150)设置切片的位置,如果clip2,都比clip1小的话
clip2.set_pos(("center","top"))clip2水平居中,位于图片顶部
clip2.set_pos(("left","center"))clip2垂直居中,位于图片左侧
clip2.set_pos((0.4,0.7), relative=True)#clip2是屏幕宽度的40%,高度的70%:
clip2.set_pos(lambda t: ('center', 50+t) )clip2的位置水平居中,向下移动!
音频合成
concat = concatenate_audioclips([aclip1, aclip2, aclip3])
compo = CompositeAudioClip([aclip1.volumex(1.2),
aclip2.set_start(5), # start at t=5s
aclip3.set_start(9)])
提取音频从音频和视频中提取
audioclip = AudioFileClip("some_audiofile.mp3")从音频中获取
audioclip = AudioFileClip("some_video.avi")从视频文件中获取
videoclip = VideoFileClip("some_video.avi")从一个视频切片中获取音频
audioclip = videoclip.audio
从数据和函数中获取音频切片
clip = AudioArrayClip(numpy_array, fps=44100) # from a numerical array
clip = AudioClip(make_frame, duration=3) # uses a function make_frame(t)
导出音频
videoclip2 = videoclip.set_audio(my_audioclip)
音频控制
.audio_fadein(1)音频淡入
.audio_fadeout(1)音频淡出
其他:
自定义动画,感觉不实用
matplotlib
clip = mpy.VideoClip(make_frame, duration=2) # 2 seconds通过函数生成切片
你需要做的只是定义一个make_frame(t)函数,使它返回一个HxWx3的numpy数组(8位整数)来代表时间t时的帧。