分享

用python批量提取视频中的音频「遇到了一个有点坑人的坑」

 只怕想不到 2019-08-12

写在前面,听说要想学好英语就得先听,所以我找了一些英语听力素材,但是这是视频格式的,想处理成音频格式的,方便重复听,既然学习了python,正好可以用它来批量提取视频中的音频。

网上查教程

刚开始,我肯定不会,毕竟我没有处理过,所以先上网查了一下教程:

果然不出所料,这中事网上绝对用教程,看了一下,主要有使用:ffmpeg + python 或者使用python的开源模块moviepy。但是我最后还是选择了:ffmpeg + python + pydub。

ffmpeg + python教程有点笼统,看不明白,很迷。moviepy看名字就知道主要是用来剪辑视频的,提取音频只是它的一个小模块,所以刚开始的时候,我尝试使用了它,但是在最后批量提取视频的时候,它会落下一些没有处理或者说处理失败。pydub 是主要用来处理音频,比如wav转mp3格式等等,但是它也是可以用来提取视频中的音频。

安装 ffmpeg

首先还是得安装ffmpeg,因为pydub有使用到它。

它的官网下载地址(windows版):https://ffmpeg./builds/。

打开后选择符合自己的电脑的版本:

下载完,解压就可以用了,重要的是要把解压后中的 bin 文件夹添加到环境变量,win10操作系统非常方便就可以添加系统环境变量:

验证是否配置成功:

如果输入ffmpeg提示不能执行,就说明环境变量配置错了。

安装 pydub

这个很简单,只需用 pip 就可以了,因为我的电脑用pip安装比较慢,所以临时用了国内镜像源安装:

就这样就安装好 pydub 了。

开始编码

上面的解决了,编码就非常简单了:

简单解释一下(相信你也看懂的):

path_video:是当前目录下存放要提取音频的视频的文件夹。

path_audio:是用来放提取完的音频文件夹。

file_list:是获取全部视频文件名。

enumerate:是使用python内置枚举功能,就是在遍历的时候放回遍历次数,这个在这里我仅仅只是用来看看最后处理完总数是否和我视频文件总数相同而已,无关紧要的,你可以直接使用普通的遍历,如果想了解一下enumerate,可以去看看我写过的文章:

编写高质量的python代码第10条:尽量用 enumerate 取代 range

剩下的就是读取视频,导出音频,就不做过多解释了。

开始执行

如果你习惯使用Pycharm IDE,那么恭喜你,掉进了一个有点坑的坑,因为你一用pycharm执行就会出现这样错误:

起初我以为只是简单的坑,网上查了一下国内教程:

虽然有人成功了,但是执行后,没有用,在我这还是会出错。

既然国内解决不了,去国内看看,果然这个坑有点坑:

就是说,只要你用pycharm执行这个脚本就出错,其他地方都不会,我立马用在cmd下执行,确实没有出错。

写在后面,这里就不放最后截图,因为这是昨天晚上的事情了,我一不小心关闭了cmd窗口,不在执行一次了。对了,如果你也想每天早上听点纯正的英语听力,可以关注我,我基本上有时间就会把素材放到头条上,视频 + 音频 + 逐句翻译。

著作权归作者所有

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多