使用Mediainfo CLI制作Windows批处理脚本自动归一化文件夹内MKV音频
自动匹配音频参数的MKV响度归一化Windows批处理脚本
以下是可直接使用的完整批处理代码,保存为.bat后缀文件即可运行:
@echo off setlocal enabledelayedexpansion :: 遍历当前目录下所有mkv文件 for /f "tokens=*" %%G in ('dir /b *.mkv 2^>nul') do ( echo 正在处理文件:%%G :: 读取音频位深度 for /f %%a in ('mediainfo --Inform=Audio;%%BitDepth%% "%%G" 2^>nul') do set "bit_depth=%%a" :: 读取音频采样率 for /f %%b in ('mediainfo --Inform=Audio;%%SamplingRate%% "%%G" 2^>nul') do set "sample_rate=%%b" :: 匹配对应音频编码 if "!bit_depth!"=="16" ( set "audio_codec=pcm_s16le" ) else if "!bit_depth!"=="24" ( set "audio_codec=pcm_s24le" ) else ( echo 不支持的位深度!bit_depth!,跳过文件%%G goto next_file ) :: 执行响度归一化 echo 位深度:!bit_depth!,采样率:!sample_rate!,开始归一化处理 ffmpeg-normalize -c:a !audio_codec! -ar !sample_rate! "%%G" :next_file echo. ) echo 所有文件处理完成 pause endlocal
使用说明
- 前置依赖:
mediainfo命令行工具、ffmpeg、ffmpeg-normalize均已添加到系统环境变量PATH中,可直接在CMD中调用 - 脚本默认仅处理当前目录下的
.mkv格式文件,如需处理其他格式,可将代码中dir /b *.mkv的后缀修改为对应格式即可 - 脚本会自动跳过位深度不为16/24的异常文件,执行过程中会输出当前处理的文件参数,方便排查问题
- 归一化后的输出文件默认保存在脚本自动生成的
normalized文件夹中,与原文件同名
内容的提问来源于stack exchange,提问作者Hinsdale1
相关产品推荐
相关产品推荐

