教你一个快速视频处理的神器:Python moviepy
摘要:python 中的视频处理模块,有一个叫做 moviepy,今天我们就来唠唠它。
本文分享自华为云社区《python moviepy 的用法,看这篇就能入门》,作者: 梦想橡皮擦。
python 中的视频处理模块,有一个叫做 moviepy,今天我们就来唠唠它。
模块安装使用如下命令即可
pip install moviepy
接下来完成第一个 Demo,为后续学习提高信心,截取视频中的一段。
截取视频
下述代码重点使用的是 subclip 方法,但需要提前声明一个 VideoFileClip 对象, VideoFileClip 类的构造函数在代码后进行说明。
from moviepy.editor import *
import time
clip = VideoFileClip('./1644974996.mp4').subclip(10, 20)
new_file = str(int(time.time())) + '_subclip.mp4'
clip.write_videofile(new_file)
代码运行结果如下所示:
subclip(t_start,t_end) 方法中的时间参数可以用 (t_start=10) ,以秒的时间来表示,也可以用 (t_start=(1,20)) ,以1分20秒的形式来表示,还可以 (t_start=(0,1,20)) 或者 (t_start=(00:01:20)) , 以小时: 分钟: 秒的形式表示, t_end 的默认值就是视频的长度
VideoFileClip 类的构造函数如下所示:
__init__(self, filename, has_mask=False,audio=True, audio_buffersize=200000,target_resolution=None, resize_algorithm='bicubic',audio_fps=44100, audio_nbytes=2, verbose=False,fps_source='tbr')
其中只有 filename 为必填项,其余都为选填内容。
- filename:视频文件名,一般常见格式都支持;
- has_mask:是否包含遮罩;
- audio:是否加载音频;
- audio_buffersize:音频缓冲区大小;
- target_resolution:加载后需要变换到的分辨率;
- resize_algorithm:调整分辨率的算法,默认是 bicubic,可以设置为 bilinear,fast_bilinear;
- audio_fps:声音的采样频率;
- audio_nbytes:采样的位数;
- verbose:是否输出处理信息。
subclip(t1,t2) 方法的含义为截取t1到t2时间段内的片段。
write_videofile() 方法用于视频输出。
提取A视频的音频,注入到B视频中
from moviepy.editor import *# 读取2个视频文件
videoclip_a = VideoFileClip("1644974996.mp4")
videoclip_b = VideoFileClip("1644974998.mp4")# 提取A视频文件的音频部分
audio_a = videoclip_a.audio# 给B设置音频,注意视频最终合成的大小会依据长的为准
videoclip_c = videoclip_b.set_audio(audio_a)# 输出新的视频文件
videoclip_c.write_videofile("videoclip_c.mp4")
使用 VideoFileClip 对象的 audio 属性,可以获取视频的音频部分,然后调用 set_audio() 方法对文件进行音频设置,这里要注意一点,合成的音频和视频等于长度长的。
去掉视频声音
from moviepy.editor import *video = VideoFileClip('1644974996.mp4')
video = video.without_audio()
video.write_videofile('cc.mp4')
without_audio() 方法见名知意 - 去除声音。
获取视频信息
视频的分辨率和时间可以直接通过属性读取
from moviepy.editor import *video = VideoFileClip('1644974996.mp4')
print(dir(video))
print(video.size) # 获取分辨率
print(video.duration) # 获取视频总时长
获取文件大小就比较简单了,使用 os 模块的 os.path.getsize() 方法即可,得到的是字节大小。
from moviepy.editor import *video = VideoFileClip('1644974996.mp4')
size = os.path.getsize('1644974996.mp4')
print(size)
设置视频倍速播放
读取视频,调用 speedx() 方法,其中设置要加速到的倍数。
from moviepy.editor import *
clip = VideoFileClip('./1644974996.mp4')video_1 = clip.speedx(2)
video_1.write_videofile('sss.mp4')
截取视频封面
很多时候我们需要生成视频的封面,直接使用下述几行代码,即可实现。
from moviepy.editor import *clip = VideoFileClip('./1644974996.mp4')clip.save_frame("frame.jpg") # 保存第1帧
clip.save_frame("frame.png", t=2) # 保存2s时刻的那1帧
提取视频中的音频内容
如果想要把目标视频中的某段音频截取出来,可以使用如下代码
from moviepy.editor import *clip = VideoFileClip('./1644974996.mp4').subclip(10, 20)audioclip1 = clip.audio # 从视频对象中提取音频
audioclip1.write_audiofile('a.mp3') # 写入音频文件
截取视频中的一段,将其保存为 gif
from moviepy.editor import *clip = VideoFileClip('./1644974996.mp4').subclip(10, 20)# clip.write_gif('demo.gif',fps=15) # 生成之后的文件大
clip.write_gif('demo.gif',fps=5) # 生成之后的文件小
点击关注,第一时间了解华为云新鲜技术~
教你一个快速视频处理的神器:Python moviepy相关推荐
- Python 一个快速视频剪辑编辑神器 — Moviepy
你知道吗,用moviepy一行代码就能够快速剪辑视频中某个区间的片段: clip = VideoFileClip("videoplayback.mp4").subclip(50,6 ...
- python自动剪视频_Pythonmoviepy一个快速视频剪辑编辑神器
你知道吗,用moviepy一行代码就能够快速剪辑视频中某个区间的片段:clip = VideoFileClip("videoplayback.mp4").subclip(50,60 ...
- Python moviepy 一个快速视频剪辑编辑神器
你知道吗,用moviepy一行代码就能够快速剪辑视频中某个区间的片段: clip = VideoFileClip("videoplayback.mp4").subclip(50,6 ...
- 一个快速视频剪辑编辑神器 — Moviepy
你知道吗,用moviepy一行代码就能够快速剪辑视频中某个区间的片段: # 这一段代码,能够在3秒内将videoplayback.mp4的50秒-60秒的视频片段提取出来,非常方便. clip = V ...
- 不写脚本,也可以拍摄、剪辑好视频,教你一个快速有效的方法
今天大周来教你一个快速有效的方法,不用写脚本也能拍摄.剪辑好视频. 不写脚本怎么拍摄剪辑视频?大家都知道写脚本是一件非常麻烦.痛苦的事情. 当我们刷视频刷到类似故事情节:美满爱情故事.美满和睦的家庭. ...
- Python moviepy 快速视频剪辑编辑神器
# 你知道吗,用moviepy一行代码就能够快速剪辑视频中某个区间的片段: # clip = VideoFileClip("videoplayback.mp4").subclip( ...
- 做自媒体、短视频,不用自己拍视频,大周教你一个快速起号的方法
新手不会做视频?不知道怎么拍摄?不知道怎么剪辑? 今天大周就来告诉你如何快速起号,只分享这一次,记得先点赞收藏起来. 其实并不需要你自己拍摄视频也能做好,怎么做呢? 1.找一些与你想做或正在做的相同领 ...
- 视频怎么做gif表情包?教你一个快速生成的方法
视频怎么做gif表情包?在日常生活中,我们拍摄或者看到一些好看好玩的视频,总是想要分享给身边的人.但是往往有的时候视频太长,朋友根本get不到好玩的点.这个时候如果我们能将好玩的部分单独拎出来,那么传 ...
- 教你一个快速掌握知识的学习方法
编者按:面对技术的不断升级迭代,作为技术同学需要不断的自我学习和迭代.费曼是一个有趣且博学的科学家,他的学习技术是可以复制的. 费曼学习技巧是掌握大量知识的极佳方式,希望对您有所启发. Feynman ...
最新文章
- 零基础入门学习Python(2)
- Swift编程语言学习10—— 枚举属性监视器
- 笔记本电脑投屏到电视_Thinkpad笔记本PC无线连接电视或投影机,性能稳定的商用投屏解决方案...
- webdriver --API--(java版) the second part
- css命名规范和书写规范
- model.fit() 参数详解【TensorFlow2入门手册】
- hdu5384(AC自动机+纪录重复单词出现的次数)
- django05:ORM示例--person 增删改查
- spad 探测器_从光到光子—“单光子”探测器
- linux查看wifi信号命令_使用Nmcli命令从Linux终端连接WiFi
- 【C语言】无参函数调用实例
- 程序员最想要十八般武艺俱全的“保姆型”项目经理!
- ArcGis——资源三号卫星的DSM提取流程
- phpstorm2017破解方法
- bzoj千题计划176:bzoj1199: [HNOI2005]汤姆的游戏
- DVWA教程实践之Brute Force
- python中取绝对值简单方法总结
- 关于matlab运行的一些报错迷惑
- 又是一年深秋时--西湖枫叶随拍
- 我和谷歌共同成长----Andriod(安卓)开发(持续更新)
热门文章
- SecureDrop 0.3,LibreOffice Online和更多新闻
- (19)脚手架工具Yeoman
- (41)css 三大隐藏属性
- 分布式ID | 这六种分布式ID生成方法,总有一款适合你
- CSS3 多列布局列的填充方式column-fill属性
- 视觉SLAM笔记(45) 搭建 VO 框架
- 万有引力的意思_万有引力和引力有什么不同?四种基本性质力中电磁力最多
- matlab圆形器件,计算围绕点+ Matlab的圆形箱
- java链表集合_Java底层基于链表实现集合和映射--集合Set操作详解
- matlab贝塞尔函数的根,matlab画贝塞尔函数根分布的曲线图.doc