Bootstrap

python实现音频文件格式转换(mp3,m4a,wav,wma,aac...)

  1. 方法介绍:
    在日常生活中,很多的音乐播放器下载的音频文件是特殊加密文件,在其他设备上无法正常播放,给我们带来诸多不便,为了正常使用我们可能会通过各类格式转换工具进行音频格式转换,劳民伤财!
    今天我们通过python语言进行音频文件格式转换,既可以学到技术,又可以给我们的工作生活带来便利!一举多得的好事!现在开打开编译器学起来吧!
  2. 准备工作:
    在开始之前我们需要下载几个python所需的方法库,音频格式转换也是依托这几个库中的方法:
    1)“下载地址: https://www.gyan.dev/ffmpeg/builds/”
    注意:下载ffmpeg;下载后解压到C盘根目录下!!!;将C:\ffmpeg\bin 添加到系统环境变量!!!
    不会添加系统环境变量的看这里——>(https://blog.csdn.net/zhan9le/article/details/145133484?sharetype=blogdetail&sharerId=145133484&sharerefer=PC&sharesource=zhan9le&sharefrom=mp_from_link)
"""
音频文件格式转换工具
"""
import os
from pydub import AudioSegment
from pathlib import Path
  1. 现在开始:(按照第二步准备工作做好后,直接复制即可)
def setup_ffmpeg():
    """设置 ffmpeg 路径"""
    try:
        # 设置 ffmpeg 路径
        ffmpeg_path = r"C:\ffmpeg\bin"  # 请确保这是你的 ffmpeg 安装路径
        if os.path.exists(ffmpeg_path):
            os.environ["PATH"] += os.pathsep + ffmpeg_path
        else:
            print("警告: 未找到 ffmpeg,请安装 ffmpeg 并设置正确的路径")
            print("下载地址: https://www.gyan.dev/ffmpeg/builds/")
            print("1. 下载 ffmpeg")
            print("2. 解压到 C:\\ffmpeg")
            print("3. 将 C:\\ffmpeg\\bin 添加到系统环境变量")
            return False
        return True
    except Exception as e:
        print(f"设置 ffmpeg 失败: {e}")
        return False
  1. 转换代码:(直接复制即可)

def convert_m4a_to_mp3(input_folder: str, output_folder: str):
    """
    将文件夹中的所有m4a文件转换为mp3
    
    Args:
        input_folder: 输入文件夹路径
        output_folder: 输出文件夹路径
    """
    try:
        # 检查 ffmpeg
        if not setup_ffmpeg():
            return
            
        # 确保输出目录存在
        if not os.path.exists(output_folder):
            os.makedirs(output_folder)
            
        # 获取所有m4a文件
        m4a_files = list(Path(input_folder).glob('*.m4a'))
        total = len(m4a_files)
        
        print(f"找到 {total} 个m4a文件")
        
        # 转换每个文件
        for i, m4a_path in enumerate(m4a_files, 1):
            try:
                # 检查源文件是否存在
                if not os.path.exists(m4a_path):
                    print(f"[{i}/{total}] {m4a_path.name} -> 源文件不存在,跳过")
                    continue
                    
                # 构建输出文件路径
                mp3_path = os.path.join(output_folder, f"{m4a_path.stem}.mp3")
                
                # 如果mp3文件已存在,跳过转换
                if os.path.exists(mp3_path):
                    print(f"[{i}/{total}] {m4a_path.name} -> 已存在,跳过")
                    continue
                
                print(f"[{i}/{total}] 正在转换 {m4a_path.name}...")
                
                # 使用 ffmpeg 直接转换
                cmd = f'ffmpeg -i "{m4a_path}" -acodec libmp3lame -ab 320k "{mp3_path}"'
                result = os.system(cmd)
                
                if result == 0:
                    print(f"[{i}/{total}] {m4a_path.name} -> 转换成功")
                else:
                    print(f"[{i}/{total}] {m4a_path.name} -> 转换失败")
                
            except Exception as e:
                print(f"[{i}/{total}] {m4a_path.name} -> 转换失败: {e}")
                continue
                
        print("\n转换完成!")
        print(f"输出目录: {output_folder}")
        
    except Exception as e:
        print(f"转换过程出错: {e}")
  1. 转换代码:(修改文件路径后直接复制即可)
def main():
    # 设置输入和输出文件夹
    input_folder = r"这里填当前需要转换的文件路径"
    output_folder = r"这里填转换的文件存放路径"
    
    # 开始转换
    convert_m4a_to_mp3(input_folder, output_folder)
 
if __name__ == "__main__":
	main()
;