利用Python小工具实现3秒钟将视频转换为音频

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

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

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

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

安装导入

用 pip 命令快速安装。

pip install ffmpy3 

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

import os
from 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]

总结

以上所述是小编给大家介绍的利用Python 3秒钟将视频转换为音频,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • python编写暴力破解FTP密码小工具

    python具体强大的库文件,很多功能都有相应的库文件,所以很有必要进行学习一下,其中有一个ftp相应的库文件ftplib,我们只需要其中的登录功能,然后利用多线程调用相应字典里面的字段进行登录,还能根据自己的需要,根据自身的情况编写需要的程序,让程序代替我们去做一些枯燥的重复工作. 下面直接上代码,下面是主文件 复制代码 代码如下: import os import time import threading class mythread(threading.Thread): def __in

  • python实现m3u8格式转换为mp4视频格式

    开发动机:最近用手机QQ浏览器下载了一些视频,视频越来越多,占用了手机内存,于是想把下载的视频传到电脑上保存,可后来发现这些视频都是m3u8格式的,且这个格式的视频都切成了碎片,存在电脑里不方便查看,于是想把它转换为其他可以直接打开播放的完整视频,到网上找了一些工具,都不怎么好用,后来发现一个手机端的"缓冲合并工具",倒是可以用,但是合并的视频顺序是乱的,碎片的视频顺序还需要用户手动调整,感觉太耽误时间了,于是自己打算写一个转换工具. 直接上代码:(程序的文件名为:convert_m3

  • python将字符串转换成json的方法小结

    最近在工作中遇到了一个小问题,如果要将字符串型的数据转换成dict类型,我第一时间就想到了使用json函数.但是里面出现了一些问题 1.通过json来转换: In [1]: import json In [2]: mes = '{"InsId": 2, "name": "lege-happy", "CreationTime": "2019-04-23T03:18:02Z"}' In [3]: mes_to_

  • 使用Python opencv实现视频与图片的相互转换

    因为最近要经常转换数据集进行实验,因此记录一下. 1.视频转图片 即为将视频解析为一帧一帧的图片: import cv2 vc=cv2.VideoCapture("/home/hqd/PycharmProjects/1/1/19.MOV") c=1 if vc.isOpened(): rval,frame=vc.read() else: rval=False while rval: rval,frame=vc.read() cv2.imwrite('/home/hqd/PycharmP

  • python将视频转换为全字符视频

    简介 如何简单的使用python来实现将一部视频转换为字符画视频的效果. 其实,大家都知道视频就是一帧一帧的图片构成的. 那么如今我们想要实现,将视频转换为字符视频,那么是不是可以认为只要将一部视频全部逐帧拆解成图片,然后采取和以前相同的将图片转换为字符画的算法即可.然后在将这些图片按照原先的视频的格式封装起来就可以了. 既然有了想法,那接下来,自然是开始实际开发了. 代码 以下是相关部分的代码: #-*- coding:utf-8 -*- import argparse import os i

  • Python3实现的腾讯微博自动发帖小工具

    复制代码 代码如下: # -*- coding: UTF-8 -*-import mysql.connector as dbimport client.tWeiboimport time if __name__ == '__main__': connect = db.connect(user='root',db='collection',password='',host="127.0.0.1") cursor = connect.cursor() cursor.execute(&quo

  • 利用Python小工具实现3秒钟将视频转换为音频

    最近,有读者微信上私聊我,想让我写一篇视频批量转换成音频的文章,我答应了,周末宅家里把这个小工具做出来了. 这样,对于有些视频学习文件,我们可以批量转换成音频文件,学习方式更多样化了. 之前也用过 ffmpeg 处理视频文件.ffmpeg 这个程序处理视频是好用,但是有没有更轻便的呢?可以不下载这个程序吗?还真有,Python 里有 ffmpeg 相关的库:ffmpy3. ffmpy3 是 ffmpy 的一个分支,它是一个简单的 FFmpeg 命令行包装程序.ffmpy 实现了一个 Python

  • Python小工具之消耗系统指定大小内存的方法

    工作中需要根据某个应用程序具体吃了多少内存来决定执行某些操作,所以需要写个小工具来模拟应用程序使用内存情况,下面是我写的一个Python脚本的实现. #!/usr/bin/python # -*- coding: utf-8 -*- import sys import re import time def print_help(): print 'Usage: ' print ' python mem.py 100MB' print ' python mem.py 1GB' if __name_

  • xshell会话批量迁移到mobaxterm的工具(python小工具)

    自己写了一个Python小工具:xshell2mobaxterm,可以将xshell的session转换成mobaxterm的数据文件以导入到mobaxterm中. exe版的编译好了,博客园不支持附件,所以没法上传,需要的话可以评论留下邮箱,我发送给你. Python代码: #!/usr/bin/env python3 # -*- coding: utf-8 -*- # xshell session to mobaxterm session file # Support: TELNET, se

  • Python开发.exe小工具的详细步骤

    v1.0.0 完成基础框架.初始功能 背景:为了提高日常工作效率.学习界面工具开发,可以将一些常用的功能集成到一个小的测试工具中,供大家使用. 一.环境 Python3,pyinstall pyinstall安装: pip install pyinstaller   (会自动下载future,pywin32,pyinstaller) 或者采用国内镜像 pip install -i https://pypi.douban.com/simple/ pyinstaller(豆瓣源) 二.代码准备,直接

  • 利用Python实现自制文件搜索小工具

    目录 前言 环境准备 完整代码 前言 嗨嗨,大家晚上好 ~ 当自己电脑文件很多还有点乱,不记得自己文件放哪里的时候,用电脑自带的搜索文件,这个等待时间可慢了 对我们这种敲代码的,这能忍吗,所以我们不如自己用python做一个搜索工具!犄角旮旯的文件都能一秒钟搜索出来的那种! 一不小心还能把你们男(女)朋友那些藏的很深的不可告人的文件分分钟找出来~ 话不多说,赶紧开始吧 环境准备 解释器: Python 3.8.8 | Anaconda, Inc. 编辑器: pycharm 专业版 完整代码 就不

  • 利用python实时刷新基金估值(摸鱼小工具)

    摸鱼小工具_利用python实时刷新基金估值 效果预览 上源码 import requests import json import os from prettytable import PrettyTable import time fundlist = ['163817','161017','003860'] def GetFundJsonInfo(fundcode): url = "http://fundgz.1234567.com.cn/js/"+fundcode+"

  • 利用python实时刷新基金估值效果(摸鱼小工具)

    摸鱼小工具_利用python实时刷新基金估值 效果预览 上源码 import requests import json import os from prettytable import PrettyTable import time fundlist = ['163817','161017','003860'] def GetFundJsonInfo(fundcode): url = "http://fundgz.1234567.com.cn/js/"+fundcode+"

  • Python利用PaddleOCR制作个搜题小工具

    目录 介绍 安装 安装PaddlePaddle飞桨框架 安装PaddleOCR 代码使用 搜题小工具 安装ADB 截图并保存题目区域图片 OCR识别,获取题目 打开浏览器搜索 完整代码 介绍 PaddleOCR 是一个基于百度飞桨的OCR工具库,包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别.竖排文本识别.长文本识别.同时支持多种文本检测.文本识别的训练算法. 本教程将介绍PaddleOCR的基本使用方法以及如何使用它开发一个自动搜题的小工具. 项目地址 OR 安装 虽然

  • 利用Python编写简易的录制屏幕小工具

    目录 1.准备 2.代码 由于最近测试需要录制系统界面的操作过程,因为都是全屏的操作,所以用python做一个简单的录屏小工具. 实现过程也是比较简单,就是通过对屏幕操作进行不断的截图,最后将截图合成一个操作视频的过程.由于我们只是做简单的截屏功能,并没有加入音频效果. 1.准备 开始之前我们还是按照以往的方式介绍一下使用到的第三方的python模块. from PIL import ImageGrab import numpy as np import cv2 import datetime

  • Python利用pangu模块实现文本格式化小工具

    其实使用pangu做文本格式标准化的业务代码在之前就实现了,主要能够将中文文本文档中的文字.标点符号等进行标准化. 但是为了方便起来我们这里使用了Qt5将其做成了一个可以操作的页面应用,这样不熟悉python的朋友就可以不用写代码直接双击运行使用就OK了. 为了使文本格式的美化过程不影响主线程的使用,特地采用QThread子线程来专门的运行文本文档美化的业务过程,接下来还是采用pip的方式将所有需要的非标准模块安装一下. pip install -i https://pypi.tuna.tsin

随机推荐