摘要: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相关推荐

  1. Python 一个快速视频剪辑编辑神器 — Moviepy

    你知道吗,用moviepy一行代码就能够快速剪辑视频中某个区间的片段: clip = VideoFileClip("videoplayback.mp4").subclip(50,6 ...

  2. python自动剪视频_Pythonmoviepy一个快速视频剪辑编辑神器

    你知道吗,用moviepy一行代码就能够快速剪辑视频中某个区间的片段:clip = VideoFileClip("videoplayback.mp4").subclip(50,60 ...

  3. Python moviepy 一个快速视频剪辑编辑神器

    你知道吗,用moviepy一行代码就能够快速剪辑视频中某个区间的片段: clip = VideoFileClip("videoplayback.mp4").subclip(50,6 ...

  4. 一个快速视频剪辑编辑神器 — Moviepy

    你知道吗,用moviepy一行代码就能够快速剪辑视频中某个区间的片段: # 这一段代码,能够在3秒内将videoplayback.mp4的50秒-60秒的视频片段提取出来,非常方便. clip = V ...

  5. 不写脚本,也可以拍摄、剪辑好视频,教你一个快速有效的方法

    今天大周来教你一个快速有效的方法,不用写脚本也能拍摄.剪辑好视频. 不写脚本怎么拍摄剪辑视频?大家都知道写脚本是一件非常麻烦.痛苦的事情. 当我们刷视频刷到类似故事情节:美满爱情故事.美满和睦的家庭. ...

  6. Python moviepy 快速视频剪辑编辑神器

    # 你知道吗,用moviepy一行代码就能够快速剪辑视频中某个区间的片段: # clip = VideoFileClip("videoplayback.mp4").subclip( ...

  7. 做自媒体、短视频,不用自己拍视频,大周教你一个快速起号的方法

    新手不会做视频?不知道怎么拍摄?不知道怎么剪辑? 今天大周就来告诉你如何快速起号,只分享这一次,记得先点赞收藏起来. 其实并不需要你自己拍摄视频也能做好,怎么做呢? 1.找一些与你想做或正在做的相同领 ...

  8. 视频怎么做gif表情包?教你一个快速生成的方法

    视频怎么做gif表情包?在日常生活中,我们拍摄或者看到一些好看好玩的视频,总是想要分享给身边的人.但是往往有的时候视频太长,朋友根本get不到好玩的点.这个时候如果我们能将好玩的部分单独拎出来,那么传 ...

  9. 教你一个快速掌握知识的学习方法

    编者按:面对技术的不断升级迭代,作为技术同学需要不断的自我学习和迭代.费曼是一个有趣且博学的科学家,他的学习技术是可以复制的. 费曼学习技巧是掌握大量知识的极佳方式,希望对您有所启发. Feynman ...

最新文章

  1. 零基础入门学习Python(2)
  2. Swift编程语言学习10—— 枚举属性监视器
  3. 笔记本电脑投屏到电视_Thinkpad笔记本PC无线连接电视或投影机,性能稳定的商用投屏解决方案...
  4. webdriver --API--(java版) the second part
  5. css命名规范和书写规范
  6. model.fit() 参数详解【TensorFlow2入门手册】
  7. hdu5384(AC自动机+纪录重复单词出现的次数)
  8. django05:ORM示例--person 增删改查
  9. spad 探测器_从光到光子—“单光子”探测器
  10. linux查看wifi信号命令_使用Nmcli命令从Linux终端连接WiFi
  11. 【C语言】无参函数调用实例
  12. 程序员最想要十八般武艺俱全的“保姆型”项目经理!
  13. ArcGis——资源三号卫星的DSM提取流程
  14. phpstorm2017破解方法
  15. bzoj千题计划176:bzoj1199: [HNOI2005]汤姆的游戏
  16. DVWA教程实践之Brute Force
  17. python中取绝对值简单方法总结
  18. 关于matlab运行的一些报错迷惑
  19. 又是一年深秋时--西湖枫叶随拍
  20. 我和谷歌共同成长----Andriod(安卓)开发(持续更新)

热门文章

  1. SecureDrop 0.3,LibreOffice Online和更多新闻
  2. (19)脚手架工具Yeoman
  3. (41)css 三大隐藏属性
  4. 分布式ID | 这六种分布式ID生成方法,总有一款适合你
  5. CSS3 多列布局列的填充方式column-fill属性
  6. 视觉SLAM笔记(45) 搭建 VO 框架
  7. 万有引力的意思_万有引力和引力有什么不同?四种基本性质力中电磁力最多
  8. matlab圆形器件,计算围绕点+ Matlab的圆形箱
  9. java链表集合_Java底层基于链表实现集合和映射--集合Set操作详解
  10. matlab贝塞尔函数的根,matlab画贝塞尔函数根分布的曲线图.doc