批量将MP3或者m4a转为wav格式

1 准备条件

需要安装ffmpeg,安装教程[https://blog.csdn.net/liupeng19970119/article/details/110433807]

2 python代码

转换后会删除原始文件,如果不需要删除,将cmd_command命令里面del删除再执行

'''
功能:读取指定文件夹下的所有mp3文件,转换为wav文件
用法:修改path路径 filter改为".m4a",就是遍历当前目录下的m4a文件,注释掉35行的cmd_command
转换其它的:最主要是用字符串拼接出cmd_command命令

'''

import os
path=r'D:\Desktop\照片'

filter=[".m4a"] #设置过滤后的文件类型 当然可以设置多个类型

def all_path(dirname):

    result = []#所有的文件

    for maindir, subdir, file_name_list in os.walk(dirname):

        for filename in file_name_list:
            apath = os.path.join(maindir, filename)#合并成一个完整路径
            ext = os.path.splitext(apath)[1]  # 获取文件后缀 [0]获取的是除了文件名以外的内容

            if ext in filter:
                result.append(apath)

    return result

filenames=all_path(path)

for filename in filenames:
    filename=str(filename)
    temp=filename.split('.')

    #将.m4a格式转为wav格式的命令
    cmd_command = "ffmpeg -i {0} -acodec pcm_s16le -ac 1 -ar 16000 -y {1}.wav && del {0}".format(filename,temp[0])
    # 将.mp3格式转为wav格式的命令
    #cmd_command = "ffmpeg -loglevel quiet -y -i {0} -ar 16000 -ac 1 {1}.wav && del {0}".format(filename, temp[0])

    #print(cmd_command)
    os.system(cmd_command)

3 单个转换命令

  • 转MP3为wav
ffmpeg -i input.mp3 -acodec pcm_s16le -ac 2 -ar 44100 output.wav
  • 转m4a为wav
ffmpeg -i input.m4a -acodec pcm_s16le -ac 2 -ar 44100 output.wav
  • wav与PCM的相互转换
ffmpeg -i input.wav -f s16le -ar 44100 -acodec pcm_s16le output.raw
  • PCM转wav
ffmpeg -f s16le -ar 44100 -ac 2 -acodec pcm_s16le -i input.raw output.wav
<think>好的,用户想用FFmpeg将M4A转换为WAV格式,但之前可能遇到问题,比如转换后的文件无法播放。首先,我需要回忆相关的引用内容。 引用[1]提供了一个基本命令:`ffmpeg -i input.m4a output.wav`,但引用[2]指出这样转换可能导致空文件。这说明默认参数可能有问题,比如编码器或采样率不匹配。引用[3]给出了更具体的命令,使用pcm_s16le编码器,单声道,8000Hz采样率。这可能解决了问题,但用户是否需要特定参数呢? 我需要解释为什么基本命令有时不可靠。可能M4A通常使用AAC编码,而WAV需要PCM,所以必须指定编码器。例如,使用`-acodec pcm_s16le`来确保正确的PCM格式。此外,采样率(-ar)和声道数(-ac)也可能影响播放兼容性,特别是某些系统需要特定的设置。 用户可能不知道参数的重要性,所以需要详细说明每个参数的作用。同时,提醒他们根据需求调整采样率和声道,比如常见的是44100Hz和双声道。还要提到检查FFmpeg版本,确保没有安装问题导致转换失败。 最后,要给出几个示例命令,涵盖不同情况,并建议验证输出文件是否正确。这样用户可以根据具体情况调整参数,避免出现空文件或无法播放的问题。</think>### FFmpeg M4A转WAV格式操作指南 #### 基础转换命令 引用[1]中给出的基础转换命令为: ```bash ffmpeg -i input.m4a output.wav ``` 但根据引用[2]的反馈,直接使用该命令可能产生空文件。这是因为WAV格式需要明确指定编码参数才能保证兼容性。 #### 推荐参数设置 引用[3]提供的命令解决了兼容性问题: ```bash ffmpeg -i record.m4a -acodec pcm_s16le -ac 1 -ar 8000 output_2.wav ``` 参数说明: 1. `-acodec pcm_s16le`:指定PCM有符号16位小端编码格式 2. `-ac 1`:设置单声道(可改为`2`表示立体声) 3. `-ar 8000`:设置采样率为8000Hz(常用值还有16000/44100等) #### 扩展参数建议 ```bash ffmpeg -i input.m4a -vn -acodec pcm_s16le -ac 2 -ar 44100 output.wav ``` 新增参数: - `-vn`:忽略视频流(防止文件含封面时产生干扰) - `-ac 2`:双声道立体声 - `-ar 44100`:CD级采样率 #### 验证转换结果 ```bash ffprobe output.wav ``` 通过该命令可检查文件元数据,确认采样率、时长、编码格式是否正常[^3]。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐维康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值