批量递归转换 mp4 为 flac/m4a 的 bash 脚本

直接上代码。

【注意】转换成功后会删除原文件,如不希望删除请务必修改代码,否则后果自负!

bash 复制代码
#!/bin/bash

# 递归遍历所有 .mp4 文件
find . -type f -name "*.mp4" | while read -r mp4_file; do
    echo "检查文件: $mp4_file"
    
    # 检查音轨编码格式
    audio_codec=$(ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$mp4_file" 2>/dev/null)
    
    if [ "$audio_codec" = "flac" ]; then
        echo "  -> 发现 FLAC 音轨"
        output_file="${mp4_file%.mp4}.flac"
        
        # 提取音轨
        if ffmpeg -i "$mp4_file" -vn -acodec copy "$output_file" -y 2>&1 | grep -q "error\|Error"; then
            echo "  -> 转换失败,保留原文件"
        else
            if [ -f "$output_file" ]; then
                echo "  -> 转换成功: $output_file"
                rm "$mp4_file"
                echo "  -> 已删除原文件: $mp4_file"
            else
                echo "  -> 转换失败(输出文件不存在),保留原文件"
            fi
        fi
    elif [ "$audio_codec" = "aac" ]; then
        echo "  -> 发现 AAC 音轨"
        output_file="${mp4_file%.mp4}.m4a"
        
        # 提取音轨
        if ffmpeg -i "$mp4_file" -vn -acodec copy "$output_file" -y 2>&1 | grep -q "error\|Error"; then
            echo "  -> 转换失败,保留原文件"
        else
            if [ -f "$output_file" ]; then
                echo "  -> 转换成功: $output_file"
                rm "$mp4_file"
                echo "  -> 已删除原文件: $mp4_file"
            else
                echo "  -> 转换失败(输出文件不存在),保留原文件"
            fi
        fi
    else
        echo "  -> 音轨编码为: $audio_codec (跳过)"
    fi
    echo ""
done

echo "处理完成!"
相关推荐
测试工程师成长之路16 小时前
Serenity BDD 框架:Java + Selenium 全面指南(2026 最新)
java·开发语言·selenium
czxyvX16 小时前
017-AVL树(C++实现)
开发语言·数据结构·c++
你真是饿了16 小时前
1.C++入门基础
开发语言·c++
天天进步201517 小时前
Python全栈项目:实时数据处理平台
开发语言·python
Tipriest_17 小时前
Python中is关键字详细说明,比较的是地址还是值
开发语言·python
sheji341617 小时前
【开题答辩全过程】以 基于Python的餐饮统计系统的设计和实 现为例,包含答辩的问题和答案
开发语言·python
elseif12317 小时前
【C++】并查集&家谱树
开发语言·数据结构·c++·算法·图论
catchadmin17 小时前
2026 年 PHP 前后端分离后台管理系统推荐 企业级方案
开发语言·php
LGL6030A17 小时前
Java学习历程26——线程安全
java·开发语言·学习
遨游xyz17 小时前
排序-快速排序
开发语言·python·排序算法