今天忽然有需要从视频中提取出音频来,外事不决问百度,在度娘上找了找得出来的结果就是使用某某音频转换器,后者是AE、PR或者是会声会影之类的操作。Ab全家桶买不起,只好想想还有没其他路子,所以就有了本篇文章。在进行相关编程前需要将相关依赖库给安装好:

pip install ffmpeg moviepy

  完成这项操作所需要的依赖库分别为:ffmpeg、moviepy。ffmpeg这个的话大家肯定很耳熟,在进行音视频相关的编程以及操作时是必不可跳过的一个库,在多媒体相关的开发中其更是当仁不让的扛把子。此外,另一个使用到的库moviepy,关看名称就大概知道了这是用来干什么的一个module,其官方的介绍为:“MoviePy是一个用于视频编辑的Python模块,它可被用于一些基本操作(如剪切、拼接、插入标题)、视频合成(即非线性编辑)、视频处理和创建高级特效。它可对大多数常见视频格式进行读写,包括GIF”。更多详情请查阅MoviePy中文手册。MoviePy使用ffmpeg软件来读取和导出视频和音频文件。也使用(可选)ImageMagick来生成文字和制作GIF文件。不同媒体的处理依靠Python的快速的数学库Numpy。高级效果和增强功能使用一些Python的图片处理库(PIL,Scikit-image,scipy等)。其工作原理如下图所示:

python moviepy获取音频时长 python 视频提取音频_Python

三步完成音频提取:

  1. Step 1: Import MoviePy;
  2. Step 2: Define the Video Clip;
  3. Step 3: Extracting the Audio;
import moviepy.editor as mp

my_clip = mp.VideoFileClip(r"E:\Downloads\V626.flv")
my_clip.audio.write_audiofile(r"V626.mp3")

print("audio extra successfully!")

python moviepy获取音频时长 python 视频提取音频_ci_02

优势与局限性

1)优势:

  1. 易于上手:一行即可完成一项基本操作。对于新手来说,代码易学易懂。
  2. 灵活:视频和音频的每一帧都尽在掌握,创作属于自己的特效就像Python一样简单。
  3. 便携:代码使用十分常见的软件(Numpy和FFMPEG),而且可以在几乎所有版本的Python和几乎所有的机器上运行。

2)局限性:
  MoviePy目前还无法对流媒体进行处理(从摄像头或者远程设备获取视频),并且MoviePy并不是被设计成用来对电影的连续帧进行处理(例如视频去抖,你需要寻找另外的软件)。如果你同时处理大量视频,音频以及图片序列(数量大于100)可能会出现内存问题,但是这个问题会在将来的版本当中进行修复。

参考文章: