python moviepy 的用法入门篇

 更新时间:2022年02月22日 10:10:11   作者:梦想橡皮擦  
MoviePy(全套文件)是一个用于视频编辑Python库:切割、拼接、标题插入,视频合成(即非线性编辑),视频处理和自定义效果的创造,本文给大家介绍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,可以设置为 bilinearfast_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) # 生成之后的文件小

写在后面

到这里,相信你能顺着这个思路去学习 moviepy 更多的高级用法啦。

到此这篇关于python moviepy 的用法入门篇的文章就介绍到这了,更多相关python moviepy用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python之django母板页面的使用

    python之django母板页面的使用

    这篇文章主要介绍了python之django母板页面的使用,母版页用于处理html页面相同部分内容,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • python获取对象信息的实例详解

    python获取对象信息的实例详解

    在本篇文章和里小编给大家整理的是一篇关于python获取对象信息的实例详解内容,有兴趣的朋友们可以学习参考下。
    2021-07-07
  • 用Python代码来解图片迷宫的方法整理

    用Python代码来解图片迷宫的方法整理

    这篇文章主要介绍了用Python代码来解图片迷宫的方法整理,本文精选了StackOverflow相关人气问题上的几个回答,需要的朋友可以参考下
    2015-04-04
  • Python如何实用File文件的实现

    Python如何实用File文件的实现

    本文主要介绍了Python如何实用File文件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 从运行效率与开发效率比较Python和C++

    从运行效率与开发效率比较Python和C++

    今天小编就为大家分享一篇关于从运行效率与开发效率比较Python和C++,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • python词云库wordCloud使用方法详解(解决中文乱码)

    python词云库wordCloud使用方法详解(解决中文乱码)

    这篇文章主要介绍了python词云库wordCloud使用方法详解(解决中文乱码),需要的朋友可以参考下
    2020-02-02
  • 利用python生成照片墙的示例代码

    利用python生成照片墙的示例代码

    这篇文章主要介绍了利用python生成照片墙的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Python 列表排序详解

    Python 列表排序详解

    这篇文章主要介绍了Python中对列表排序实例,本文给出了9个List的排序实例,需要的朋友可以参考下,希望能够给你带来帮助
    2021-10-10
  • python中的decorator的作用详解

    python中的decorator的作用详解

    这篇文章主要介绍了python中的decorator的作用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • python如何发送xml格式请求数据

    python如何发送xml格式请求数据

    这篇文章主要介绍了python如何发送xml格式请求数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06

最新评论