python中的视频编辑与合成

vidp的Python项目详细描述


https://api.travis-ci.org/antiboredom/vidpy.svg

基于MLT Multimedia Framework的python视频编辑器和合成器。

维迪现在在阿尔法-可能有很多虫子,而且 api可能会改变。如果你对测试感兴趣, 请这样做,并在issue tracker中留下评论/建议/问题。

在这里阅读完整的文档:https://antiboredom.github.io/vidpy

安装/依赖项

vidpy需要熔化,这可能很难在mac和 窗户。最简单的选择是安装shotcut(一个开源视频 编辑器)它附带了一个预先构建的熔融二进制文件。

Mac/Windows

  1. Install Shotcut(在装有brew的Mac上:brew cask install shotcut
  2. 使用pip install vidpy
  3. 安装vidpy

ubuntu/debian

  1. 安装熔体:sudo apt-get install melt
  2. 安装vidpy:pip install vidpy

设置

Vidpy将尝试定位熔融二元体,首先搜索 在Mac/Windows上安装Shotcut。你也可以将vidpy指向 特定二进制,如so:

fromvidpyimportconfigconfig.MELT_BINARY='/path/to/melt'

概述

使用Clip类创建和操作视频剪辑,以及 Composition类来组合剪辑。

Composition()将剪辑列表作为输入,然后允许您 使用save()保存输出视频,或使用preview()预览。

默认情况下,构图会将每个剪辑视为单独的曲目, 同时播放它们。

fromvidpyimportClip,Compositionclip1=Clip('video.mp4')clip2=Clip('anothervideo.mp4')# play videos on top of each othercomposition=Composition([clip1,clip2])composition.save('output.mp4')

您可以告诉剪辑何时开始播放offset参数, 或者在实例化后使用set_offset()。所有时间都以秒为单位。

# start playing clip one after 1.5 secondsclip1=Clip('video.mp4',offset=1.5)clip2=Clip('anothervideo.mp4')clip2.set_offset(5)# start clip2 after 5 secondscomposition=Composition([clip1,clip2])composition.save('output.mp4')

使用startend参数或使用^{tt14}参数修剪剪辑$ 方法。

# only use the first second of the clipclip1=Clip('video.mp4',start=0,end=1)clip2=Clip('anothervideo.mp4')clip2.cut(start=2,end=4)# use clip2 from 2 to 4 seconds

你也可以一个接一个地播放片段(而不是同时播放 通过将singletrack=True作为参数添加到合成中。

composition=Composition([clip1,clip2],singletrack=True)composition.save('output.mp4')

Composition还允许您设置维度、fps和背景 颜色。

# create a 1280x720 composition at 30 fps with a red backgroundcomposition=Composition(clips,bgcolor="#ff0000",width=1280,height=720,fps=30)# preview itcomposition.preview()

最后,可以将合成转换为剪辑以重用。

comp=Composition([clip1,clip2,clip3],singletrack=True)clip=Clip(comp)# do stuff with the entire compositionclip.cut(0,1)

过滤和效果

vidpy内置了许多效果:

clip.fadein(1)# fade the clip in over 1 secondclip.fadeout(0.5)# fade the clip over 0.5 secondsclip.glow()# add a glow effectclip.spin(2)# make the clip spin around. (Why would you do this? I don't know!)clip.chroma()# attempt to automatically remove the background colorclip.volume(0)# mute a video# set clip's positionclip.position(x=100,y=20)# resize a clipclip.position(w='50%',h='20%'')# start the clip scaled to 200% at coordinates (0, 0)# then move it to (200, 200) and scale it to 90% over 5 secondsclip.zoompan([0,0,'200%','200%'],[200,200,'90%','90%'],start=0,end=5)

有关完整列表,请参阅筛选器文档:(链接到come)

您还可以将any filter supported by mltfx方法。第一个参数应该是过滤器的名称,并且 第二本是选项词典。

例如,要添加cartoon effect

# use the full filter name as the first parameter# and then a dictionary of options, based on the mlt documentationclip.fx('frei0r.cartoon',{'0':0.999})

或者,play with colors

clip.fx('avfilter.colorchannelmixer',{'av.rr':2,'av.br':2})

记住查看mlt文档,找出要传递的参数 在。

文本

使用Text类添加文本剪辑

fromvidpyimportTexttext_clip=Text("A spectre is haunting Europe.",font="Comic Sans Ms",size=100,color="#ff0000")

文本剪辑的一些可选参数是:

font系统上的任何字体名

color文本颜色

weight介于100和1000之间

style普通或斜体

olcolor轮廓颜色

outline外形尺寸

halign水平对齐(左、中、右)

valign垂直对齐(上、中、下)

bbox将文本放入(x,y,width,height)的边框

学分

维迪是靠Sam Lavigne,从 MoviePy by Zulko

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java应该考虑使用DTO来代替Spring控制器层吗?   java为什么要将Maven与Git结合起来?   java试图将CSV转换为XLSX,但使用了错误的逗号拆分列   mysql Spring 3+Hibernate:java。sql。BatchUpdateException:无法添加或更新子行(ManyToMany)   java基本字符串反转器   java无法使用RestControllerAdvice为身份验证失败生成自定义错误消息   java当只允许SQLException时,如何抛出EOFEException?   java如何创建播放模块?   Android中匿名类的java实例化异常问题   java两个停靠组件,其中第二个组件填充剩余空间   java如何在按钮延迟时启用它   Java中正在运行的应用程序中的后台进程   java我正试图从一个字符串打印出这个字符输出   如何使用java socket通过两个不同的wifi连接两台电脑?   javaapachecamel:如何将分层数据从数据库转换为pojo   java Webrtc:OniconConnectionChange和onConnectionChange之间有什么区别   java如何重写已经创建的JTable方法   爪哇扫雷机堆垛机   雅加达ee Java ee EJB 3.0 Glassfish