阅读文本大概需要 5 分钟。

作者 | pk 哥来源公众号 | Python知识圈

最近,有读者微信上私聊我,想让我写一篇视频批量转换成音频的文章,我答应了,周末宅家里把这个小工具做出来了。

这样,对于有些视频学习文件,我们可以批量转换成音频文件,学习方式更多样化了。

之前也用过 ffmpeg 处理视频文件。ffmpeg 这个程序处理视频是好用,但是有没有更轻便的呢?可以不下载这个程序吗?还真有,Python 里有 ffmpeg 相关的库:ffmpy3。

ffmpy3 是 ffmpy 的一个分支,它是一个简单的 FFmpeg 命令行包装程序。ffmpy 实现了一个 Pythonic 接口,用于通过命令行执行 FFmpeg,并使用 Python 的子进程模块进行同步执行。使用 Python 的 asyncio.subprocess 模块也支持异步执行。

安装导入

用 pip 命令快速安装。

pip install ffmpy3 

导入刚才安装好的 ffmpy3 库,等下需要读取视频存放的目录和音频存放的目录,所以我们需要导入 os 模块。

import osfrom ffmpy3 import FFmpeg

创建保存音频的目录

我们需要把转换后的音频文件存放在指定的文件夹里,为了更智能,我们做一个判断,如果不存在这个目录,我们就创建,存在的话就保持不变。

def mkdir_output(output_dir):    existence = os.path.exists(output_dir)    if not existence:        print('创建音频存放目录')        os.makedirs(output_dir)    # 创建目录        os.chdir(output_dir)       # 切换到创建的文件夹        return True    else:        print('目录已存在,即将保存!')        return False

存放路径我们作为参数,等下调用时给出存放路径即可。

文件格式处理

我们把需要转换为音频的视频文件放在一个文件夹下面,用 os 模块把视频的文件名称读取出来,放在列表中。

filepath = r"/Users/brucepk/test"   # 待转换视频存放的路径os.chdir(filepath)                  # 切换到改路径下filename = os.listdir(filepath)  # 得到文件夹下的所有文件名称

然后我们把所有视频文件后缀替换成音频的格式,视频文件格式较多,我把常见的基本都列出来了。


把相应目录下所有视频文件转换成 wav 音频文件储存在指定目录下。

音频文件属性

只改文件后缀当然是不行,文件属性没有转变,这样的文件是无法读取的,我们需要用 FFmpeg 方法对转换后的音频文件赋予它音频的属性。

ff = FFmpeg(            inputs={changefile: None},            outputs={outputfile: '-vn -ar 44100 -ac 2 -ab 192 -f wav'}            )        print(ff.cmd)        ff.run()

效果

我在 test 目录下放在两个视频文件,一个是我用手机拍摄的 mp4 格式的视频,为了测试出效果,录了一段语音,另一个视频是 mkv 格式的一部电影。


运行代码后,会自动创建一个 output 文件夹,里面就是转换好的音频文件。


用支持音频的软件打开,可以清晰听到音频。

运行报错处理

1、当你运行代码时,Windows 系统可能会出现 ffmpeg 无法找到之类的报错,如下图所示。


这时,我们需要下载 FFmpeg,访问下面的地址,根据自身电脑版本下载相应安装包。

https://ffmpeg.zeranoe.com/builds/

解压 ffmpeg 文件,打开 ffmpy3.py 文件(按住Ctrl键,点击ffmpy3,快速跳转到该模块),将下面代码中参数 executable 的值改为 ffmpeg.exe 可执行文件的绝对路径。

__init__(self, executable='ffmpeg', global_options=None, inputs=None, outputs=None)

解压后的 ffmpeg.exe 文件在 bin 目录下,把路径替换掉。


修改后,再次运行,就可以顺利转换了。

2、路径拼接的问题
我的代码是在 Mac 系统中完成的,Mac 中路径是用 / 隔开,而 Windows 中是用 \,为了防止收到转义字符的影响,路径前面最好加上 r。

filepath = r"/Users/brucepk/test"

所以在路径拼接时,Windows 电脑记得 "/" 换成 "\"。

changefile = filepath+"/"+filename[i]

以上时 Mac 系统的写法,Windows 中改成:

changefile = filepath+"\\"+filename[i]

源码放在 GitHub 上了,下方【Python知识圈】公众号后台回复「视频转换」获取源码地址,觉得不错,GitHub 上给个 star

python q切换指定目录_Python小工具:3秒钟将视频转换为音频相关推荐

  1. python实现视频格式转换_Python小工具:利用ffmpy3库3秒钟将视频转换为音频

    作者 | pk 哥 来源公众号 | Python知识圈(ID:PythonCircle) 最近,有读者微信上私聊我,想让我写一篇视频批量转换成音频的文章,我答应了,周末宅家里把这个小工具做出来了. 这 ...

  2. python win32选取文件夹_python小工具 | Excel的xls和xlsx格式文件转换

    众所周知Excel文件格式转换可以通过"另存为"的方式转换格式,可以说是简单方便,但是对于大量文件转换或者经常重复进行转换操作时,这种方法就很不方便. 显然利用程序对xls和xls ...

  3. python代码300行程序_python小工具,15行代码秒出工资条

    公司工资条经常使用Excel制作,但是每个月都要做一遍,能不能用python写个程序自动化完成这想工作?当然可以,而且只是分分钟的事! 先来看看原始数据是什么样子: 最后做成的效果: 使用Excel每 ...

  4. python爬ppt和风景_Python小工具爬取PPT模板

    报错,求楼主解决,谢谢 D:\pptdown目录已存在 Traceback (most recent call last): File "site-packages\urllib3\conn ...

  5. python自动引流软件_python小工具-流量转发器

    [Python] 纯文本查看 复制代码# -*- encoding: utf-8 -*- ''' @Author: Voyage ''' from IPy import IP from socket ...

  6. 使用Python批量替换指定目录所有文件中的指定文本

    使用Python批量替换指定目录所有文件中的指定文本 # -*- coding: utf-8 -*- import os from = "aaa" #替换为什么内容,可以是多行 t ...

  7. python图像处理——图片区域颜色替换小工具

    python图像处理--图片区域颜色替换小工具 使用场景 图片区域颜色替换小工具使用python开发,可用于选取图片相同颜色的区域,可设定选择精度,可自由选择颜色,将区域的颜色进行替换.可使用橡皮擦工 ...

  8. 用Python做了一个法律查询小工具,非常好用

    用Python做了一个法律查询小工具,非常好用 效果展示 准备工作 主要代码 哈喽兄弟,今天给大家分享一个Python tkinter制作法律查询小工具. 光爬虫大家也只能自己用用,就算打包了exe, ...

  9. 在 Linux 中使用avconv工具录制计算机桌面视频和音频

    在 Linux 中使用"avconv"工具录制计算机桌面视频和音频 Libav是一款跨平台的工具库,能够用来处理多媒体文件.流和协议.它最初是源自ffmpeg.Libav带有一些工 ...

最新文章

  1. 人工智能助力资深内容营销人员
  2. BZOJ 4514 费用流
  3. 好的Java编程习惯
  4. 《影响力》6个使人顺从的武器之一互惠原理深入剖析
  5. (12)System Verilog 数组查找常数
  6. swing获取文本框内容_营销管理培训课件,大客服销售策略和技巧,全内容PPT拿来就用...
  7. jmeter安装 java,Windows下安装jmeter图文教程
  8. 【TDA4系列】硬件分析与刷写程序的几种方式
  9. 芯片介绍:CC2530
  10. 三星s8 android版本,三星S8+官方国行版安卓9完整固件系统升级包:CHC-G9550ZCU3DSF2...
  11. 虚拟服务器搭建棋牌,棋牌开源游戏服务器框架
  12. 下载Python OpenCV相关资料方法整理
  13. 【Circulation love恋爱循环】MMD镜头+动作打包下载.zip
  14. ignite安装与启动
  15. 中国天气网天气城市ID
  16. 运放放大倍数计算公式_16个问题讲透了运算放大器基础的知识点
  17. LTM系统并联接入方式数据包交互分析
  18. 精彩正定 激情古城——2008中国.正定摄影艺术大展盛大开幕
  19. 官方:2056名广西考生未按规定上传“软考报考材料”,逾期将取消资格
  20. 从PE制作到恢复win引导

热门文章

  1. Flink 在小红书推荐系统中的应用
  2. Kafka的常见错误分析
  3. leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal | 106. 从中序后序遍历序列构造二叉树(Java)
  4. Ubuntu常用服务器环境搭建——MySQL篇
  5. 为什么要低温保存_超低温冰柜需求缺口加大,海尔海信长虹迎来利好
  6. springMVC注解中@RequestMapping中常用参数value params 以及@RequestParam 详解
  7. 操作系统中的同步和异步
  8. 02.elasticsearch_read_write模型基础
  9. elasticsearch_script_01
  10. 【最常用】两种java中的占位符的使用