本文目录导读:

- 方法一:使用 FFmpeg(推荐,支持几乎所有格式)
- 方法二:使用 Python + pydub(更灵活,但需要安装库)
- 方法三:使用 Shell 脚本 + ffmpeg(跨平台,无需列表文件)
- 注意事项:
- 高级功能示例(交叉淡入淡出合并):
是的,脚本可以自动合并多个音频文件,常见的实现方式包括使用 FFmpeg、Python(如 pydub 库) 或 Shell 脚本,以下是几种常用方法的示例脚本:
使用 FFmpeg(推荐,支持几乎所有格式)
创建一个文本文件列表(filelist.txt):
file '/path/to/file1.mp3'
file '/path/to/file2.mp3'
file '/path/to/file3.mp3'
运行 FFmpeg 命令:
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp3
批量自动生成文件列表的脚本(Linux/macOS):
#!/bin/bash # 合并当前目录下所有 .mp3 文件 for f in *.mp3; do echo "file '$PWD/$f'" >> filelist.txt done ffmpeg -f concat -safe 0 -i filelist.txt -c copy merged_output.mp3 # 清理临时文件 rm filelist.txt
使用 Python + pydub(更灵活,但需要安装库)
from pydub import AudioSegment
import os
# 定义输入文件夹和输出文件
input_folder = "audio_files"
output_file = "merged_output.mp3"
# 获取所有音频文件(按文件名排序)
files = [f for f in os.listdir(input_folder) if f.endswith(('.mp3', '.wav', '.m4a'))]
files.sort() # 可按需排序
# 合并音频
combined = AudioSegment.empty()
for file in files:
audio = AudioSegment.from_file(os.path.join(input_folder, file))
combined += audio # 直接拼接(无缝合并)
# 导出结果
combined.export(output_file, format="mp3")
print(f"已合并 {len(files)} 个文件到 {output_file}")
使用 Shell 脚本 + ffmpeg(跨平台,无需列表文件)
#!/bin/bash # 合并所有 .wav 文件(文件名按字母顺序) ffmpeg -i "concat:$(ls *.wav | tr '\n' '|')" -c copy merged.wav # 另一种更稳定的方式(使用 named pipe) for f in *.mp3; do echo "file '$f'" >> mylist.txt done ffmpeg -f concat -safe 0 -i mylist.txt -c copy merged.mp3
注意事项:
- 文件格式必须相同:合并时最好保证所有音频具有相同的编码、采样率、声道数。
- 不交叉淡入淡出:上述脚本是直接拼接,如需交叉渐入渐出,可使用 FFmpeg 的
acrossfade过滤器。 - Windows 用户:需要先安装 FFmpeg 并添加环境变量;使用 PowerShell 时路径写法略有不同。
高级功能示例(交叉淡入淡出合并):
ffmpeg -i file1.mp3 -i file2.mp3 -filter_complex acrossfade=d=2 output.mp3
如果需要更复杂的处理(如随机顺序、按文件时间戳合并等),脚本可以很容易扩展,根据你的具体需求(操作系统、文件格式、是否需要时间戳排序等),我可以提供定制化的脚本建议。