如何用脚本批量转换音频格式?

wen 实用脚本 1

本文目录导读:

如何用脚本批量转换音频格式?

  1. 方法一:使用 FFmpeg(最推荐)
  2. 方法二:使用 Python + pydub
  3. 方法三:简单 Python 脚本(多线程加速)
  4. 常见格式转换对应表
  5. 安装所需工具
  6. 使用建议

使用 FFmpeg(最推荐)

Windows (PowerShell)

# 批量转换 wav 到 mp3
Get-ChildItem -Path "C:\input" -Filter *.wav | ForEach-Object {
    $outputPath = "C:\output\" + $_.BaseName + ".mp3"
    ffmpeg -i $_.FullName -codec:a libmp3lame -qscale:a 2 $outputPath
}
# 批量转换所有音频到 mp3(自动支持多种格式)
Get-ChildItem -Path "C:\input" -Include *.wav,*.flac,*.m4a | ForEach-Object {
    $outputPath = "C:\output\" + $_.BaseName + ".mp3"
    ffmpeg -i $_.FullName -codec:a libmp3lame -qscale:a 2 $outputPath
}

Linux/macOS (Bash)

# 批量转换 flac 到 mp3
for file in /input/*.flac; do
    filename=$(basename "$file" .flac)
    ffmpeg -i "$file" -codec:a libmp3lame -qscale:a 2 "/output/${filename}.mp3"
done
# 递归处理子目录
find /input -name "*.flac" -exec sh -c '
    for file; do
        filename=$(basename "$file" .flac)
        ffmpeg -i "$file" -codec:a libmp3lame -qscale:a 2 "/output/${filename}.mp3"
    done
' sh {} +

使用 Python + pydub

import os
from pydub import AudioSegment
def batch_convert(input_dir, output_dir, input_format="wav", output_format="mp3"):
    # 创建输出目录
    os.makedirs(output_dir, exist_ok=True)
    # 遍历输入目录
    for filename in os.listdir(input_dir):
        if filename.endswith(f".{input_format}"):
            # 设置输入输出路径
            input_path = os.path.join(input_dir, filename)
            output_filename = filename.replace(f".{input_format}", f".{output_format}")
            output_path = os.path.join(output_dir, output_filename)
            # 转换格式
            audio = AudioSegment.from_file(input_path, format=input_format)
            audio.export(output_path, format=output_format)
            print(f"转换完成: {filename} -> {output_filename}")
# 使用示例
batch_convert("input_folder", "output_folder", "wav", "mp3")

简单 Python 脚本(多线程加速)

import os
import subprocess
from concurrent.futures import ThreadPoolExecutor, as_completed
def convert_audio(input_path, output_path, output_format="mp3", bitrate="192k"):
    """使用 ffmpeg 转换单个音频文件"""
    try:
        cmd = [
            'ffmpeg', '-i', input_path, 
            '-codec:a', 'libmp3lame', '-b:a', bitrate,
            '-y', output_path
        ]
        subprocess.run(cmd, capture_output=True, check=True)
        return True, f"成功: {os.path.basename(input_path)}"
    except subprocess.CalledProcessError as e:
        return False, f"失败: {os.path.basename(input_path)} - {e}"
def batch_convert_parallel(input_dir, output_dir, input_ext=".wav", output_format="mp3", max_workers=4):
    """并行批量转换"""
    os.makedirs(output_dir, exist_ok=True)
    tasks = []
    for filename in os.listdir(input_dir):
        if filename.lower().endswith(input_ext):
            input_path = os.path.join(input_dir, filename)
            output_name = filename.replace(input_ext, f".{output_format}")
            output_path = os.path.join(output_dir, output_name)
            tasks.append((input_path, output_path))
    # 多线程执行
    with ThreadPoolExecutor(max_workers=max_workers) as executor:
        futures = {executor.submit(convert_audio, inp, out): inp 
                  for inp, out in tasks}
        for future in as_completed(futures):
            success, msg = future.result()
            print(msg)
# 使用
batch_convert_parallel("input", "output", ".wav", "mp3", max_workers=4)

常见格式转换对应表

输入格式 输出格式 FFmpeg 命令示例
WAV → MP3 MP3 ffmpeg -i input.wav -codec:a libmp3lame output.mp3
FLAC → MP3 MP3 ffmpeg -i input.flac -codec:a libmp3lame output.mp3
M4A → WAV WAV ffmpeg -i input.m4a output.wav
AAC → MP3 MP3 ffmpeg -i input.aac -codec:a libmp3lame output.mp3
WMA → MP3 MP3 ffmpeg -i input.wma -codec:a libmp3lame output.mp3

安装所需工具

FFmpeg 安装

  • Windows: 下载 FFmpeg 并添加到 PATH
  • macOS: brew install ffmpeg
  • Linux: sudo apt install ffmpeg (Ubuntu/Debian)

Python 依赖

pip install pydub ffmpeg-python

使用建议

  1. 先测试:先用小批量文件测试脚本
  2. 备份原文件:转换过程中建议保留原始文件
  3. 调整质量参数
    • MP3: -qscale:a 0 (最高质量) 到 -qscale:a 9 (最低质量)
    • 比特率: -b:a 192k-b:a 320k
  4. 错误处理:实际使用时要添加适当的错误处理逻辑

选择哪种方法取决于你的操作系统和技术偏好,FFmpeg 最通用,Python 脚本更灵活可配置。

抱歉,评论功能暂时关闭!