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
猜你喜欢
- 一、CSRF:保护机制Django预防CSRF攻击的方法是在用户提交的表单中加入一个csrftoken的隐含值,这个值和服务器中保存的csr
- 关于substr、substring和slice方法区别的文章,网上搜到了许多,文章内容也基本一致。而后,我将其中一篇文章中的代码挪到本地进
- 转PDF初始代码从文件夹中读取图片数据,然后将他们保存为PDF格式。不长,大概10行代码。from PIL import Imagefrom
- 呃,看到这个标题,我们可以首先将IE系浏览器无视了。我承认,我是有极简主义倾向的,我希望能够使用最少的代码和图片做更多的事情。虽然CSS3仅
- 01.简介当我们使用的鱼眼镜头视角大于160°时,OpenCV中用于校准镜头“经典”方法的效果可能就不是和理想了。即使我们仔细遵循OpenC
- LOAD DATA INFILE '文件地址' INTO TABLE 表名 FIELDS TERMINATED BY
- 问题:我想上传文件时后改名,下载时又将名改回来。 如:我上传一张“我的照片.jpg”上传后改为系统数名“20040302001.jpg”下载
- 知识点图像模块 (Image.Image)Image模块的功能Image模块的方法ImageChops模块ImageColor模块基础使用图
- 解包在英文里叫做 Unpacking,就是将容器里面的元素逐个取出来放在其它地方,好比你父母去菜市场买了一袋苹果回来分别发给家里的每个成员,
- 本文实例讲述了PHP获取当前相对于域名目录的方法。分享给大家供大家参考。具体如下:http://127.0.0.1/dev/classd/i
- 【译者的话】 作为一家非盈利性的防止青少年 * 的机构, Five Alive 希望拥有一个独特的标志来配合机构的宣传。他们决定在网站上通过竞
- 首先你要明白24bit的bmp图片的基本信息:1像素占3个字节,头部占54个字节。好了,现在开始做验证码了,这里以4位验证码(大小为20(高
- 在 Python 中,函数可以通过以下语法定义和使用:def function_name(parameter1, parameter2, .
- 1.什么是并发编程并发编程是实现多任务协同处理,改善系统性能的方式。Python中实现并发编程主要依靠进程(Process):进程是计算机中
- 上次在blueidea上看到一个元素圆角的实现方法,但是那个太复杂了。于是就自己写了一个函数,可以将元素自动圆角,如div层,表格等。共有四
- 先给大家介绍下Python读取文件夹按数字排序的代码,内容如下所示:python中 os.listdir()方法用于返回指定的文件夹包含的文
- Real Numbers实数实数是具有小数部分的数字, 当然, 实数不是专门用来表示小数的, 也可以用DECIMAL来存储那些无法用INTE
- 这篇文章主要介绍了基于python3抓取pinpoint应用信息入库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- asp.net的dropdownlist控件为我们的web应用提供了许多用处,但有一点我总感觉不爽的就是在使用dropdownlist的事件
- 前言在一个分布式环境中,每台机器上可能需要启动和停止多个进程,使用命令行方式一个一个手动启动和停止非常麻烦,而且查看每个进程的状态也很不方便