MoviePy - 中文文档2-快速上手-如何高效率使用MoviePy

回到目录

如何高效率使用MoviePy

接下来,这一节将会介绍许多全世界MoviePy开发者总结的开发经验。

开始学习使用MoviePy最好的方式是使用IPython Notebook:它可以让预览clip变得简单,有自动补全的功能,而且可以显示函数库中不同方法的文档。

我们是不是应该使用moviepy.editor

这个文档中的大部分例子都会用到子模块moviepy.editor,但是这个子模块并不适用于所有需求。所以,我们应该使用他吗?

简短回答:如果我们是使用moviepy手动地编辑视频,那就使用他。但是,如果我们使用的是MoviePy内置的庞大的库、程序、或者网络服务,最好还是避免它,只需要加载我们需要的方法就够了。

moviepy.editor模块可以通过下列的3种导入方法的任意一中导入

from moviepy.editor import *    #全部导入,快速,但是不干净   
import moviepy.editor as mpy    #干净,使用示例:mpy.VideoClip
from moviepy.editor import VideoFileClip    #只导入需要的

无论使用上面哪一种导入方式,moviepy.editor模块事实上都会在幕后做大量的工作:加载很多moviepy常用的类、方法、还有子包、以及如果安装了PyGame的话还会加载PyGame session,这样,才可以预览vedio clips,实现很多简便的调用(比如:将一个clip用resize变化)。这样,我们可以使用clip.resize(width=240)而不是更长的写法clip.fx(resize, width=240)。简短说,moviepy.editor提供给我们在各处播放和编辑所需要的所有的东西,但是这也会消耗一部分时间用于加载(大于1秒钟)。所以,如果我们需要的仅仅是library中一两个特性的话,最好使用的导入方法是:只导入自己需要的,像下面这样

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

很多预览clip的方式

当我们使用MoviePy编辑视频或者实现一个效果的时候,我们会进行一些试验、和错误的过程。通常情况我没每一次的试验都会话费相对较长的时间,这一节,会告诉大家很多的小窍门,让这些尝试的过程变得快一点。

clip.save_frame

大多情况下,我们只需要得到一帧画面就可以知道程序有没有正确执行,这样,我们只需要保存一帧画面到一个文件,就可以去验证,像下面这样:

my_clip.save_frame("frame.jpeg")        #保存第一帧
my_clip.save_frame("frame.png", t=2)    #保存2s时刻的那一帧

clip.show and clip.preview

clip.showclip.preview这两个方法可以在Pygame 的窗口中展示。这是最快的预览方式,clip的生成和显示几乎是同时发生的,而且对于获取一个像素点的颜色和坐标也有用。完成后按Esc键退出。

一个clip可以按照下面的方式来预览

my_clip.preview() # 默认fps=15 预览
my_clip.preview(fps=25)
my_clip.preview(fps=15, audio=False) # 不 生成/播放 音频
my_audio_clip.preview(fps=22000)

假如你在预览的画面中点击了某些地方,将会输出被点击像素的位置坐标和颜色。按Esc可以终端预览。

如果当clip十分复杂而且电脑配置很渣,运行很慢的时候,预览一般会出现比真实画面速度慢的情况,这个时候,我没可以尝试降低帧率,或者使用clip.resize减小clip的尺寸。

ipython_display

如果不使用clip.show()或者clip.preview(),使用IPython Notebook显示clip也是一个不错的选择.使用的画面一般是这样的。

../_images/demo_preview.jpeg

通过ipython_display,我们可以将图片、视频、音频等嵌入,既可以来自于一个文件,也可以来自于一个clip

ipython_display(my_video_clip)
ipython_display(my_image_clip)
ipython_display(my_audio_clip)

ipython_display("my_picture.jpeg")
ipython_display("my_video.mp4")
ipython_display("my_sound.mp3")

只有当rendering在notebook的最后一行时才有效。我们也可以把ipython_display作为一个clip方法调用

my_video_clip.ipython_display()

如果我们的clip需要一个帧率,我们可以指定ipython_display的fps=25。

如果我们仅仅需要显示一下视频clip的快照,那么,我们直接指定time就行

my_video_clip.ipython_display(t=15)    #将会显示15s处的快照

我们也可以提供任何的HTML5选项作为关键词参数,例如:当一个clip特别大的时候,我们一般会这么写

ipython_display(my_clip, width=400) # HTML5 将会把他的尺寸变成400像素

当我们编辑一个GIF格式的动画,并且确保他有完好的循环。我们可以让视频自动开始,并且循环播放。

ipython_display(my_clip, autoplay=1, loop=1)

注意:事实上,ipython_display是将clip完全地入我们的notebook。这样做的优点是无论我们移动nootbook还是放到线上,视频都会正常的播放。缺点在于,nootbook文件的大小将会变得很大。取决于你的浏览器,多次重新计算和显示视频不光是花费很多的时间,也会占用特别多的内存(RAM),重新启动浏览器会解决这个问题。

一起交流,一起进步,群内提问答疑

QQ群:MoviePy中文 :819718037

回到目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ucsheep

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值