Python竟然能剪辑视频
作者:Python研究者 发布时间:2021-09-03 08:12:54
大家好,我是辰哥。
辰哥之前就想着Python可不可以剪辑视频(提取视频的音频,视频截取等等),然后辰哥在网上一搜,还真找到了Python的一个处理音频的库-MoivePy
MoivePy能干嘛呢,下面辰哥来给大家简单介绍一下。
提取音频
视频截取
视频合并
视频叠加
添加字幕
追踪人脸,打马赛克
炫酷的特效
阴影效果
.......
01提取音频
平时我们在刷短视频或者看到一些视频的时候(视频里才有,网上搜不到这种剪辑的音频时),希望能够把视频里面的音频提取出来当背景音乐或者想平时听听但是不想打开视频时。
那么辰哥就用python教大家如何去提取一个视频里面的音频。
在开始之前,先把Moivepy库安装一下,通过下面的命令即可安装
pip install moviepy
安装好之后,接着咱们就开始对视频进行处理了。
from moviepy.editor import *
video = VideoFileClip('七次人口普查.mp4')
audio = video.audio
audio.write_audiofile('七次人口普查.mp3')
这里以视频:七次人口普查.mp4为例,这个视频是辰哥之前录制的一个视频
提取好的音频保存为:七次人口普查.mp3
打开音频,音质和视频中的音质一模一样(完美提取成功)
02截取视频
此外还可以将视频进行截取。截图的视频不仅可以是保存成视频,还可以将截取的视频保存为gif格式
1.截取后保存为视频
同样还是以视频:七次人口普查.mp4为例(视频一共是38秒),咱们从截取其中的一段(第5s~第25s)20秒。
video = VideoFileClip('七次人口普查.mp4')
# 剪辑这个clip 的5s-25s,保存mp4
video2 = video.subclip(5, 25)
video2.write_videofile("七次人口普查5_25.mp4")
截取后的视频保存为:七次人口普查5_25.mp4
运行结束之后,视频就已经保存到本地(同时视频中的音频也对应的保存过来)
最终效果:
打开之后,没问题,成功截取。
2.截取后保存为gif
接着将截取的视频保存成gif格式
video = VideoFileClip('七次人口普查.mp4')
# 剪辑这个clip 的5s-25s,保存mp4
video2 = video.subclip(5, 25)
video2.write_gif("七次人口普查5_25.gif",fps=16)
代码中的fps是帧率,这里设置为16,fps越大,gif越清晰,同时gif也会越大。(这里设置了16,已经较为清晰了)
截取后的视频保存gif:七次人口普查5_25.gif
打开后如下:
03视频合并
除了对视频截取外,还可以将多个视频进行合并。
video1 = VideoFileClip('七次人口普查.mp4')
video2 = VideoFileClip("七次人口普查5_25.mp4")
video3 = concatenate_videoclips([video1, video2])
video3.write_videofile("七次人口普查_合并.mp4")
视频:七次人口普查.mp4原视频(38秒),视频:七次人口普查5_25.mp4上面案例截取的视频(20秒),最后合并成:七次人口普查_合并.mp4。
ps:上面代码只是演示合并两个视频,实际是可以合并多个的
原视频:
最终合并视频:
04视频叠加
通常在电影中都可以看到视频中分块的部分不同的画面。这用了视频叠加的效果。接下来辰哥教大家如何用Python去实现。
video1 = VideoFileClip("七次人口普查.mp4").margin(10)
video2 = video1.fx(vfx.mirror_x) # x轴镜像
video3 = video1.fx(vfx.mirror_y) # y轴镜像
video4 = video1.resize(0.8) # 尺寸等比缩放0.8
newvideo = clips_array([
[video1, video2],
[video3, video4]
])
newvideo.resize(width=480).write_videofile("七次人口普查_叠加.mp4")
这里主要是以视频:七次人口普查.mp4为例,弄成四方块的样式进行叠加。最候保存成:七次人口普查_叠加.mp4。
最终效果:
05小结
ok,辰哥就介绍以上这四种剪辑视频的方法,此外还有很多方法。比如:
添加字幕
追踪人脸,打马赛克
炫酷的特效
阴影效果
............
这里辰哥就不一一演示了,感兴趣的小伙伴可以去搜索moviepy的文档教程进行学习。
来源:https://blog.csdn.net/lyc2016012170/article/details/117203864


猜你喜欢
- 程序比较大,运行时间又长的时候,不想等着结果,只要先确保程序功能正确无误,可以把需要的结果print然后保存到TXT文件中,超级方便# 创建
- 一. 开发前的准备1. 必须了解的知识 SDK:软件开发工具包,可以为开发者提供快速开发的工具沙箱环境:也就是测试环境支付宝支付金额的精度:
- 目录楔子使用方法创建一个文件创建一个目录重命名将文件1.txt移动到子目录test_child, 所以此时会伴随一个创建、一个删除以及一个修
- 平时每逢alexa排名更新时,我都需要将所有相关的同类网站的排名整理一下,看一下这些对手网站的排名更新情况。做的多了,也就烦了,虽然也才30
- 前几天学习了Yolov5,当我想实际将Yolov5实际运用的时候却不知道怎么办了然后我决定对Yolov5的detect.py修改为可以直接调
- 如下所示:# 计算0到100之间的之间所有的数字累计求和结果# 定义最终结果的变量result = 0# 定义一个整数的变量来记录循环次数i
- 在Bootstrap fileinput中移除预览文件时可以通过配置initialPreviewConfig: [ { url:'d
- 分页浏览功能是常见的Web应用功能,对于MySQL数据库来说可以很轻松的使用limit语句实现分页,而对于SQL Server数据库来说,常
- 数据库隔离级别有四种,应用《高性能mysql》一书中的说明:然后说说修改事务隔离级别的方法:1.全局修改,修改mysql.ini配置文件,在
- 使用步骤:1、安装:npm i jquery-contextmenu --save-dev2、在main.js文件中引包 im
- 一、前期准备1、安装好python3,可以在anaconda中安装python3。2、一个合适的双目摄像头。3、一台可以运行Matlab的电
- 需求分析现在是 "图片为王"的时代,在浏览一些网站时,经常会看到类似于这种满屏都是图片。图片大小不一,却按空间排列,就这
- 最近尝试了mysql的最新版本5.5.581.最新发布的mysql 5.5.8没有适合solaris 9的版本;这个在安装时需要注意2.它发
- 1.python中列表list的拷贝,会有什么需要注意的呢? python变量名相当于标签名。list2=list1 ,直接赋值,实质上指向
- 场景:按下按钮,将左边的下拉选框内容发送给后端,后端再将返回的结果传给前端显示。按下按钮之前:按下按钮之后:代码结构这是flask默认的框架
- 安装tf2onnx以及onnxruntimepip install onnxruntimepip install tf2onnxtf 转为o
- 如何调用多个不同的ip接口灵感来源:项目的登录登出权限是调A的ip下面的接口,其他的功能调的接口是B的ip下面的接口思路:其实就是多写几个r
- 在前面的DRF系列教程中,我们以博客为例介绍了序列化器, 使用基于类的视图APIView和ModelViewSet开发了针对文章资源进行增删
- 来自某个nb招聘的题目:请给Array本地对象增加一个原型方法,它的用途是删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重
- 前言requests是Python发送接口请求非常好用的一个三方库,由K神编写,简单,方便上手快。但是requests发送请求是串行的,即阻