脚本如何实现音频文件格式转换

wen 实用脚本 1

本文目录导读:

脚本如何实现音频文件格式转换

  1. 使用 FFmpeg(最通用)
  2. Python 专用库
  3. 批量转换脚本
  4. 常见格式支持
  5. 安装依赖
  6. 注意事项

使用 FFmpeg(最通用)

Python 脚本

import subprocess
import os
def convert_audio(input_file, output_format):
    """音频格式转换函数"""
    # 获取文件名(不含扩展名)
    base_name = os.path.splitext(input_file)[0]
    output_file = f"{base_name}.{output_format}"
    # FFmpeg命令
    cmd = [
        'ffmpeg',
        '-i', input_file,      # 输入文件
        '-acodec', 'libmp3lame', # 音频编码器(根据需要修改)
        '-q:a', '2',           # 质量参数
        output_file
    ]
    try:
        subprocess.run(cmd, check=True)
        print(f"转换成功:{output_file}")
        return output_file
    except subprocess.CalledProcessError as e:
        print(f"转换失败:{e}")
        return None
# 使用示例
convert_audio('input.wav', 'mp3')
convert_audio('input.mp3', 'ogg')

Batch 脚本 (Windows)

@echo off
set INPUT_FILE=audio.wav
set OUTPUT_FORMAT=mp3
ffmpeg -i %INPUT_FILE% -acodec libmp3lame -q:a 2 %INPUT_FILE:.wav=%_converted.%OUTPUT_FORMAT%
echo 转换完成!
pause

Shell 脚本 (Linux/Mac)

#!/bin/bash
convert_audio() {
    input_file="$1"
    output_format="$2"
    output_file="${input_file%.*}.${output_format}"
    ffmpeg -i "$input_file" -acodec libmp3lame -q:a 2 "$output_file"
    echo "转换完成:$output_file"
}
# 使用
convert_audio "audio.wav" "mp3"
convert_audio "audio.flac" "ogg"

Python 专用库

使用 pydub

from pydub import AudioSegment
import os
def convert_with_pydub(input_file, output_format):
    """使用pydub进行格式转换"""
    # 读取音频文件
    audio = AudioSegment.from_file(input_file)
    # 生成输出文件名
    output_file = f"{os.path.splitext(input_file)[0]}.{output_format}"
    # 导出
    audio.export(output_file, format=output_format)
    print(f"转换成功:{output_file}")
    return output_file
# 使用示例
convert_with_pydub('input.wav', 'mp3')
convert_with_pydub('input.mp3', 'ogg')

使用 librosa + soundfile

import librosa
import soundfile as sf
import numpy as np
def convert_with_librosa(input_file, output_format):
    """使用librosa进行格式转换"""
    # 读取音频
    audio, sr = librosa.load(input_file, sr=None)
    # 生成输出文件名
    output_file = f"{input_file.rsplit('.', 1)[0]}.{output_format}"
    # 保存
    sf.write(output_file, audio, sr)
    print(f"转换成功:{output_file}")
    return output_file
# 使用示例
convert_with_librosa('input.wav', 'flac')

批量转换脚本

Python 批量转换

import os
import subprocess
from pathlib import Path
def batch_convert(input_dir, output_dir, target_format, source_format='*'):
    """批量转换音频格式"""
    # 确保输出目录存在
    os.makedirs(output_dir, exist_ok=True)
    # 获取所有源文件
    pattern = f"*.{source_format}" if source_format != '*' else '*'
    files = list(Path(input_dir).glob(pattern))
    for input_file in files:
        # 生成输出文件名
        output_file = Path(output_dir) / f"{input_file.stem}.{target_format}"
        # 转换命令
        cmd = [
            'ffmpeg',
            '-i', str(input_file),
            '-y',  # 覆盖已存在的文件
            str(output_file)
        ]
        try:
            subprocess.run(cmd, check=True, capture_output=True)
            print(f"✓ 转换成功:{input_file.name} → {output_file.name}")
        except subprocess.CalledProcessError as e:
            print(f"✗ 转换失败:{input_file.name},错误:{e}")
# 使用示例
batch_convert('./wav_files', './mp3_files', 'mp3', 'wav')

常见格式支持

格式 优势 适用场景
MP3 压缩率高,兼容性好 音乐播放,网络传输
WAV 无损,高质量 音频编辑,专业应用
FLAC 无损压缩 音乐收藏,高质量存档
OGG 开源,质量好 开源项目,游戏开发
AAC 效率高,iOS支持好 移动设备,流媒体

安装依赖

# FFmpeg
# Windows: 下载并添加到PATH
# Mac: brew install ffmpeg
# Linux: sudo apt-get install ffmpeg
# Python包
pip install pydub
pip install librosa soundfile
pip install numpy

注意事项

  1. 音频质量:转换有损格式(如MP3)会降低质量
  2. 采样率:建议保持原始采样率
  3. 声道:注意立体声/单声道转换
  4. 编码器:不同编码器影响输出质量

选择一个最适合你需求的方法,FFmpeg通常是最通用和稳定的选择。

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