[Python脚本]Pydub + FFmpeg 实现视频提取音频保存,以及Pydub API的简单使用介绍
  • 分类:Python
  • 发表:2019-05-12
  • 围观(1,120)
  • 评论(0)

动机

生活总是不尽人意,今天也是一样。总是从网上下载了许多好听的Live视频,真是太有感觉了好吧。但是我想听歌我不想看视频呐,一锁屏就暂停这怎么能忍?想想办法把视频中的音轨提取出来呗。搜索引擎启动:在线MP4提取MP3。一个小小的功能竟然许要下载安装这么大的软件,这怎么能忍啊。我感觉这应该不难啊,自己生撸一个不是更好😝?当然这是不存在的,一个成熟的程序员懂得在网上找现成的轮子,俺也一样

果然说Github是程序员的天堂,过真还给我找到了。Pydub - 超过3000stars项目。我们先看看他的介绍:Pydub lets you do stuff to audio in a way that isn't stupid。划重点,Pydub让你可以让你通过不是很傻逼方式处理音频。事实证明这个库对新手是极其友好的。为什么这么说呢?因为它的API Documentation我竟然可以不借助翻译看的半懂,并且他的代码确实十分简洁易懂。

脚本介绍

Pydub:前面已经介绍了,这个库可以让我们通过不是那么傻逼的方式处理音频文件。但是Pydub只支持原生的wav格式的文件处理。所以如果你想处理其他格式的音频,或者说你想处理媒体文件中的音频那你需要在你本地安装FFmpeg支持。但是好像这个支持库蛮大的,与之前的要简单纯粹的说法相悖了,但是whatever啦,最重要的是开心啊。

FFmpeg:“FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。”,引自百度百科。

所以下文会有一个简单的教程讲解Pydub和FFmpeg的安装及其使用。相信我,Pydub的简单的强大会让你大呼牛逼。下文实现的仅仅是从视频文件保存音轨,好像只要两行代码就完成了呢。


环境搭建

Python版本: Python 3.6.5
支持库: Pydub-0.23.1  //Anaconda base环境

安装Pydub

在虚拟环境Terminal下执行命令:pip install pudub,这个应该都会啊。

安装FFmpeg

Ⅰ.下载FFmpeg

  1. FFmpeg官网:https://ffmpeg.org/,找到对应的系统版本下载。
  2. 将压缩包解压到指定的目录。(eg:D:\ffmpeg)。
  3. 将安装安装目录下的bin文件夹添加到系统的Path环境变量中。
Terminal输入"ffmpeg -version",查看是否安装成功

完整代码

相信我,Pydub的文档简单又纯粹,只需要简单的英语基础你就能看懂每个API的使用方法。所以API介绍?不存在的。文档地址(点击跳转),自己看看不是很好么?觉得好用的话可以给开发者点一个小小的star,star数是最让开发者自豪的谈资。这里仅仅实现一个小功能,更多使用场景需要需求的支持,现在只要满足我的一个小目的即可。代码很生疏,见谅。

from pydub import AudioSegment
import os
import sys

path = os.getcwd()

def file_exists(file_path):
    if os.path.isfile(os.path.join(path,file_path)):
        return os.path.join(path,file_path)
    elif os.path.isfile(file_path):
        return file_path
    else:
        return False

def convert_video(file_path):
    mp3_filename = os.path.splitext(os.path.basename(file_path))[0] + '.mp3'
    AudioSegment.from_file(file_path).export(mp3_filename, format='mp3')

if __name__ == '__main__':
    file_path = file_exists(sys.argv[1])
    if file_path:
        convert_video(file_path)
        print("文件转换成功")
    else:
        print("文件路径错误!")
    input("按任意键退出\n")

在Terminal输入:python convert.py "文件路径或当前路径下文件名",完成之后就可以在目录下看到输出的MP3文件。

运行效果图

写在最后

从这个小小的例程就足以看出Python的强大,除去路径处理的代码核心代码只有一行。这要感谢Pydub作者轮子写的好,让我这个菜鸡也能写出这么优雅的代码,感谢感谢。

当然写这个目的并不主要是介绍这个小脚本。我的想法是记录一下这个Pydub这个强大的支持库,不然以后忘记了就损失惨重了。这么强大的东西以后肯定用得上,大项目不敢说,小工具真是秒出效果。

最后附上这个工具的源动力:来自河北师范大学合唱团的一首《睡在我上铺的兄弟》送给大家,希望能够喜欢。如果觉得声音不大的话可以试着用Pydub的API将音源分贝调高哦😜!


共有 0 条评论

Top