mp3与wav格式的互转

mp3与wav格式的互转,第1张

mp3与wav格式的互转

一、准备工作
在使用转换时,可以直接使用python中的模块进行调用,还有一种直接使用ffmpeg程序在命令窗下执行的方法,暂时没有实现。
1.1 模块的安装
1)AudioSegment的模块在pydub中调用,安装pydub。
安装方式
https://github.com/jiaaro/pydub#installation

2)安装wave模块用来读取wav格式文件

   pip install wave

1.2 工具的安装
数据的转换主要是使用ffmpeg程序,下载地址

https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z

下载后将ffmpeg.exe文件加载到环境变量中,也可以将该文件放到运行目录下。# 将文件放入目录下比较方便。

二、python的转换代码

from pydub import AudioSegment
impot wave


class Trans():

    def mp3_to_wav(self, mp3_name, wav_name):
        """
        mp3格式转wav格式
        :param mp3_name: mp3的文件名
        :param wav_name: 保存wav的文件名
        :return:
        """
        try:
            # 转换
            song = AudioSegment.from_mp3(mp3_name)
            # 输出
            wave_file = song.export(wav_name, format="wav")
            # wav_data 是wav的数据
            wav_data = wave_file.read()
        except Exception as e:
            print("mp3转换为wav过程出错{}".format(e))

    def wav_to_mp3(self, wav_name, mp3_name):
        """
        wav格式转换为
        :param wav_name:
        :param mp3_name:
        :return:
        """
        try:
            # 打开wav文件
            wav_data = wave.open(wav_name)
            # 获取文件参数
            wav_params = wav_data.getparams()
            # 将参数赋值
            channels, sample_width, frame_rate, n_frames = wav_params[:4]
            # 读取音频数据
            bytes_data = wav_data.readframs(n_frames)
            # 加载数据
            sound = AudioSegment(
                bytes_data,
                sample_width=sample_width,
                frame_rate=frame_rate,
                channels=channels)
            # 输出MP3格式数据
            mp3_data = sound.export(mp3_name, format="mp3")
            # mp3的数据
            mp3_data = mp3_data.read()
            return mp3_data
        except Exception as e:
            print("wav转换成MP3格式错误,{}".format(e))
            return b""

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4677663.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存