如何通过Bash+FFmpeg自动为FLAC音频添加专辑封面标签
推荐适用的CLI工具
- beets:专门用于音乐库管理的命令行工具,原生支持自动匹配元数据、嵌入封面、按规则整理目录结构,可直接配置封面输出分辨率为1000x1000,无需手动编写FFmpeg/ImageMagick处理逻辑,对FLAC等无损格式兼容性极强。
- eyeD3:专注于音频元数据编辑的CLI工具,操作标签比FFmpeg直观很多,支持通过
--add-image参数直接指定封面路径、封面类型、描述信息,无需处理复杂的流映射参数。 - kid3-cli:可视化元数据编辑工具Kid3的命令行版本,支持批量处理封面嵌入和元数据修改,适配绝大多数音频格式,也支持自定义封面分辨率处理逻辑。
完整可运行Bash脚本
以下脚本修复了原始逻辑中的通配符匹配、文件名空格兼容、临时文件清理等问题,可直接在专辑目录下运行:
#!/bin/bash # 开启通配符空匹配支持,避免未找到文件时通配符变为普通字符串 shopt -s nullglob shopt -s extglob # 检查依赖是否存在 if ! command -v convert &> /dev/null || ! command -v ffmpeg &> /dev/null; then echo "错误:需要先安装ImageMagick和FFmpeg" exit 1 fi # 先检查当前目录是否有FLAC文件 flac_files=(*.flac) if [ ${#flac_files[@]} -eq 0 ]; then echo "当前目录未找到FLAC文件,退出" exit 0 fi cover_file="" temp_cover="" # 第一步:查找现有封面文件 folder_covers=(folder.@(jpg|jpeg|png|webp)) if [ ${#folder_covers[@]} -gt 0 ]; then # 取第一个匹配的封面文件 cover_file="${folder_covers[0]}" else # 没有封面则从第一个FLAC文件提取 first_flac="${flac_files[0]}" cover_file="folder.png" echo "未找到现有封面,从${first_flac}提取封面" ffmpeg -i "$first_flac" -vf scale=1000:1000 -an "$cover_file" -y &> /dev/null if [ ! -f "$cover_file" ]; then echo "提取封面失败,退出" exit 1 fi fi # 生成调整尺寸的临时封面 temp_cover="temp_${cover_file##*/}" convert "$cover_file" -resize 1000x1000 "$temp_cover" if [ ! -f "$temp_cover" ]; then echo "调整封面尺寸失败,退出" exit 1 fi # 批量处理所有FLAC文件 for track in "${flac_files[@]}"; do echo "处理文件:$track" temp_track="${track%.flac}_with_art.flac" # 嵌入封面,静默输出 ffmpeg -i "$track" -i "$temp_cover" -map a -map 1:v -disposition:v attached_pic -metadata:s:v comment="Cover (Front)" -codec copy "$temp_track" -y &> /dev/null if [ -f "$temp_track" ]; then rm "$track" mv "$temp_track" "$track" else echo "处理${track}失败,跳过" continue fi done # 清理临时文件 rm -f "$temp_cover" echo "所有文件处理完成"
脚本使用说明
- 将上述内容保存为
embed_album_art.sh - 执行
chmod +x embed_album_art.sh赋予执行权限 - 进入对应专辑目录后执行
/path/to/embed_album_art.sh即可 - 如果需要批量处理所有专辑目录,可在音乐库根目录执行以下命令遍历所有子目录运行脚本:
find /path/to/your/music/library -type d -exec bash -c 'cd "{}" && /path/to/embed_album_art.sh' \;
内容的提问来源于stack exchange,提问作者satanobsidian
相关产品推荐
相关产品推荐

