使用FFmpeg批量转换嵌套文件夹多格式音频至AIFF并保留元数据
批量转换嵌套目录音乐至AIFF格式的脚本方案
核心需求对应实现
针对你提出的5项要求,以下脚本完整覆盖所有功能:
最终可执行脚本
# 提前创建统一输出目录(不存在则自动生成) mkdir -p ./aiff_output # 遍历所有嵌套子目录中的目标音频文件并处理 find ./ -type f \( -name "*.mp3" -o -name "*.wav" -o -name "*.m4a" \) | while read -r src_file; do # 提取原文件名(不含路径) filename=$(basename "$src_file") # 生成基础输出文件名(替换原后缀为.aiff) dest_file="./aiff_output/${filename%.*}.aiff" # 处理重名文件:自动添加数字后缀区分 counter=1 while [ -f "$dest_file" ]; do dest_file="./aiff_output/${filename%.*}_$counter.aiff" ((counter++)) done # FFmpeg核心转换命令 ffmpeg -i "$src_file" \ -ar 44100 \ -acodec pcm_s16be \ -map_metadata 0 \ -map 0:v? \ -c:v copy \ "$dest_file" \ -hide_banner -loglevel error done
关键参数详解
-ar 44100:强制设置采样率为44kHz,符合需求-acodec pcm_s16be:指定AIFF标准的16bit大端PCM编码,保证输出格式合规-map_metadata 0:完整复制原文件的所有元数据(歌手、专辑、标题等)-map 0:v?:自动识别原文件中的内嵌封面(视频流),无封面则跳过该步骤-c:v copy:直接复制封面编码,不重新编码避免画质损失-hide_banner -loglevel error:屏蔽冗余输出,仅显示错误信息方便排查问题
使用步骤
- 将上述代码保存为
convert_aiff.sh文件 - 在音乐库根目录执行:
chmod +x convert_aiff.sh && ./convert_aiff.sh - 所有转换完成的AIFF文件会统一存放在当前目录下的
aiff_output文件夹中
内容的提问来源于stack exchange,提问作者Alistair Colling
相关产品推荐
相关产品推荐

