python使用ffmpeg来制作音频格式转换工具(优化版)

这篇具有很好参考价值的文章主要介绍了python使用ffmpeg来制作音频格式转换工具(优化版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介:一个使用python加上ffmpeg模块来进行音频格式转换的工具。
日志:

20231030:第一版,设置了简单的UI布局和配色,实现音频转为Mp3、AAC、wav、flac四种格式。可解析音频并显示信息,可设置转换后的保存路径

UI界面:
python使用ffmpeg来制作音频格式转换工具(优化版),python,python,ffmpeg,开发语言
编程平台:visual studio code
python使用ffmpeg来制作音频格式转换工具(优化版),python,python,ffmpeg,开发语言
编程语言:python 3.12.0
模块:ffmpeg、PyQt5
其中ffmpeg是用来处理音频文件的主要模块,PyQt5是用来制作UI界面使用。

ffmpeg安装:
注意这里不要直接pip install ffmpeg

pip install ffmpeg-python

PyQt5安装:

pip install PyQt5

关于PyQt5的使用,本文中不做多介绍,因为pyqt5的使用相对来说是比较简单的。网上非常多的示例可以参考。

下面说一下代码:

音频导入

导入音频文件,使用pyqt5的qfiledialog类getopenfilename方法,如下

 def music_load(self):
        """文件载入"""
        self.filepth,_=QFileDialog.getOpenFileName(self,"选择音频","C:/","Allfile(*);;txt(*.txt)")
        if self.filepth:
            self.lbl2.setText(self.filepth)
            self.music_info_get(self.filepth)
            
        else:
            self.lbl2.setText("路径为空")
获取音频信息

获取音频信息,要用到ffmpeg中的probe功能,probe的参数就是音频文件的文件路径。如果音频文件是正确且存在的,ffmpeg会自动对音频进行分析,返回一个JSON格式的数据集。

   probe=ffmpeg.probe(file)

返回数据示例:

{‘streams’: [{‘index’: 0, ‘codec_name’: ‘wmav2’, ‘codec_long_name’: ‘Windows Media Audio 2’, ‘codec_type’: ‘audio’, ‘codec_tag_string’: ‘a[1][0][0]’, ‘codec_tag’: ‘0x0161’, ‘sample_fmt’: ‘fltp’, ‘sample_rate’: ‘44100’, ‘channels’: 2, ‘bits_per_sample’: 0, ‘initial_padding’: 0, ‘r_frame_rate’: ‘0/0’, ‘avg_frame_rate’: ‘0/0’, ‘time_base’: ‘1/1000’, ‘start_pts’: 0, ‘start_time’: ‘0.000000’, ‘duration_ts’: 280333, ‘duration’: ‘280.333000’, ‘bit_rate’: ‘96024’, ‘extradata_size’: 10, ‘disposition’: {‘default’: 0, ‘dub’: 0, ‘original’: 0, ‘comment’: 0, ‘lyrics’: 0, ‘karaoke’: 0, ‘forced’: 0, ‘hearing_impaired’: 0, ‘visual_impaired’: 0, ‘clean_effects’: 0, ‘attached_pic’: 0, ‘timed_thumbnails’: 0, ‘captions’: 0, ‘descriptions’: 0, ‘metadata’: 0, ‘dependent’: 0, ‘still_image’: 0}, ‘tags’: {‘language’: ‘chi’}}], ‘format’: {‘filename’: ‘F:/音乐/Celine Dion(席琳 迪翁)-My Heart Will Go On.wma’, ‘nb_streams’: 1, ‘nb_programs’: 0, ‘format_name’: ‘asf’, ‘format_long_name’: ‘ASF (Advanced / Active Streaming Format)’, ‘start_time’: ‘0.000000’, ‘duration’: ‘280.333000’, ‘size’: ‘3395127’, ‘bit_rate’: ‘96888’, ‘probe_score’: 100, ‘tags’: {‘DeviceConformanceTemplate’: ‘L1’, ‘artist’: ‘Celine Dion(席琳 迪翁)’, ‘WM/WMADRCAverageReference’: ‘7322’, ‘WM/WMADRCPeakReference’: ‘32767’, ‘title’: ‘My Heart Will Go On’, ‘IsVBR’: ‘0’, ‘album’: ‘泰坦尼克号电影音乐精选’, ‘WMFSDKNeeded’: ‘0.0.0.0000’, ‘WMFSDKVersion’: ‘10.00.00.3708’}}}

以上是probe返回的内容格式,可以看到包含了很多音频文件的信息,如音频名、音频格式、时间、比特率等等,probe实际上是一个字典数据。
所以,如果要想取其中的对应数据来用,只需要对照字典中的键来取值即可。

format=probe['format']
stream=probe['streams'][0]

format和stream又分别是字典类型,再次按照字典来取值:

 		video_time=format['duration']
        video_byte=str(int(format['size'])/1024/1024)
    
        video_rate=stream['bit_rate']
        video_rate2=float(video_rate)/1000
     
        music_name=format['filename']
        music_geshi=format['format_name']
音频格式转换

格式转换功能主要是ffmpeg来完成的,python只需要调用ffmpeg程序即可,因此使用了subprocess模块。

pp=subprocess.Popen(cmdtxt,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,encoding='utf-8',text=True)

关于subprocess的详细使用,大家可以自行搜索,此处不多介绍。
subprocess调用ffmpeg,而ffmpeg的指令格式如下:

ffmpeg指令示例:

ffmpeg -i input.mp3 -acodec pcm_s16le -ac 2 -ar 44100 output.wav

也可以很简单:

ffmpeg -i input.mp3 output.wav

本文中主要使用第二种指令,即简单化。subprocess模块调用ffmpeg程序,而ffmpeg根据传入的指令来对目标进行转换。

以上就是这个音频转换程序的基本逻辑,从使用来说,先载入音频,然后选择要转换的格式,以及转换后保存的路径,最后点击“格式转换”按钮,等待程序自动转换即可,转换完成后会有提示。
python使用ffmpeg来制作音频格式转换工具(优化版),python,python,ffmpeg,开发语言
整个操作是很简单的,下面会给出完整代码。

其中,UI界面的配色,是有qss来渲染的。

qss文件的读取,是一个单独的模块:
qss_read.py

class QssRead:
    @staticmethod
    def readQSS(style):
        with open(style, "r",encoding="utf-8") as f:
            return f.read()
 self.qssfile1="M03_musicconvert_pro2023\\qss_main_style.qss"
self.qss1=QssRead.readQSS(self.qssfile1)
self.setStyleSheet(self.qss1)

qss文件:
可以看到,qss文件主要是统一设置UI界面的样式,如颜色、形状、粗细等。文章来源地址https://www.toymoban.com/news/detail-739670.html

/*
*
窗体背景色为渐变色
*/
QWidget
{
   
    
    background-color:qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #d0f0e8,stop:0.2 #a5f8cc,stop:0.5 #99f56b stop:1 #8EF068);
    
    /*background-color:qradialgradient(cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 red, stop:1 blue)
    */
    /*background-color:qconicalgradient(cx:0.5, cy:0.5, angle:0, stop:0 blue, stop:0.2 yellow,stop:1 #4CF562)
    */
}
QMenuBar
{
   
    background-color:qlineargradient(x1:0, y1:0, 

到了这里,关于python使用ffmpeg来制作音频格式转换工具(优化版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【FFmpeg】ffmpeg 命令行参数 ⑦ ( 使用 FFmpeg 提取 PCM 音频数据 | PCM 音频格式 | 提取 PCM 音频格式常用参数 | 查询文档方法 )

    PCM 全称 \\\" Pulse Code Modulation \\\" , 脉冲编码调制 , 该 音频数据 是未经压缩的 采样裸数据 , 只有 知道该数据的 采样率 / 采样位数 / 通道数 才能将该音频数据播放出来 ; PCM 数据是 最原始的音频数据 , 音频内容完全无损 , 但是 PCM 数据体积庞大 , 对 PCM 音频数据压缩 分为 无损压缩

    2024年04月11日
    浏览(40)
  • Python音频和视频格式转换

    1.音频转换 使用Python中的一些库来进行音频格式转换。其中一个常用的库是pydub。首先,你需要安装pydub库。你可以使用以下命令来安装它: 安装完成后,你可以使用以下代码来进行音频格式转换: 2.视频格式转换 使用FFmpeg库。FFmpeg是一个开源的跨平台多媒体处理工具,可以

    2024年02月15日
    浏览(30)
  • 使用ffmpeg命令进行视频格式转换

    FFmpeg 是一个非常强大和灵活的开源工具集,用于处理音频和视频文件。它提供了一系列的工具和库,可以用于录制、转换、流式传输和播放音频和视频。 FFmpeg 主要特点如下: 格式支持广泛:FFmpeg 支持几乎所有的音频和视频格式,包括非常流行的格式如 MP4, AVI, MOV, MP3, AAC 等

    2024年02月04日
    浏览(31)
  • node使用fluent-ffmpeg把webm格式的音频转成mp3

    下载并安装ffmpeg http://ffmpeg.org/download.html?aemtn=tg-on https://www.gyan.dev/ffmpeg/builds/  配置环境变量:  查询版本 装包:    

    2024年02月16日
    浏览(32)
  • Java工程使用ffmpeg进行音视频格式转换(ws.schild)

    JAVE (Java Audio Video Encoder)是一个纯Java的音视频编码器和解码器库,它是基于FFmpeg。JAVE库提供了一些简单易用的API,用于音频和视频格式的转换、编码、解码等操作。它对于一些基本的音视频处理任务来说是一个不错的选择。 这些库都是基于FFmpeg的,并允许在Java中处理音频和

    2024年02月14日
    浏览(63)
  • 使用ffmpeg将m4a及wav等文件转换为MP3格式

    要使用ffmpeg将m4a及wav等文件转换为MP3格式,您可以按照以下步骤进行操作: 确保您已经安装了ffmpeg软件。如果没有安装,请访问ffmpeg的官方网站https://ffmpeg.org/ 并按照说明进行安装。 Win10 / Win11 可以通过 winget 命令安装 注意前提已经在微软应用商店安装了 应用安装程序 安装

    2024年02月13日
    浏览(23)
  • androidstudio ffmpeg 音频转换

    项目中的语音唤醒后的语音识别人声检测一直是一个很令我头痛的问题,之前因为对各种类型的工具包使用不熟练,以及时间问题,一直没有根治这个人声检测体验不好的问题,之前的解决方案是从帖子上别的大佬那里扒下来的有关vad的代码,拿来用的,其中有两个问题,一个就是人声

    2024年02月09日
    浏览(25)
  • FFmpeg 解码 AAC 格式的音频

    FFmpeg 默认是可以解码 AAC 格式的音频,但是如果需要获取 PCM16 此类数据则需要经过音频转码。首先要打开解码器,然后向解码器发送 AAC 音频帧(不带 ADTS),然后从解码器获取解码后的音频帧,数据是 float 类型的,如果需要则进行转码流程将 float 转成整型。 一、AAC 音频

    2024年02月11日
    浏览(38)
  • 电脑音频转换mp3格式怎么弄,教你音频怎么转换mp3格式

    mp3格式是目前几乎全兼容的格式了,在我们参加一些会议或讲座时,需要录制一些重要的信息,结束后再进行复盘或分享。然而,不同的录制工具录制的音频格式也不同,这时使用软件将音频统一成mp3格式的话,就会方便我们分享给他人了。那么大家知道电脑音频转换mp3格式

    2024年02月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包