我有一个运行音量检测过滤器的bat文件:
ffmpeg -i C:\Users\Nate\Videos\VideoClips\1080p-47243316.mp4 -filter:a volumedetect -f null /dev/null
是否可以捕获发送到 cmd 的所有输出文本,并对其进行操作以将mean_volume存储到变量中?
音量检测输出示例:
解决方案是将 VolumeDetect 命令的输出存储到文件中......
ffmpeg -i inputfile.mp4 -filter:a volumedetect -f null nul 2>analysis.txt
...然后从中读取mean_volume值
SetLocal EnableDelayedExpansion
For /F "tokens=2 delims=:" %%a In ('FindStr /C:"mean_volume:" analysis.txt') Do (
For /F "tokens=1" %%b In ("%%a") Do (
Set vMeanVol=%%b
Set vVol=!vMeanVol:~1!
)
)
vMeanVol
变量包含原始值。vVol
变量包含反转的 vMeanVol
,因此可用于使用 volume
ffmpeg 过滤器来增加音量。
说明:
SetLocal EnableDelayedExpansion
启用 Set %Var:~N%
FindStr
找到包含“mean_volume:”的行For /F "tokens=2 delims=:" %%a
根据“:”分隔符分割行并将第二部分存储在 %%a
For /F "tokens=1" %%b
根据空格/制表符分隔符分割 %%a 并将第一部分存储在 %%bSet vMeanVol=%%b
将 %%b 存储在 vMeanVol 中
Set vVol=!vMeanVol:~1!
获取从第二个字符(索引 0)开始的 vMeanVol 值,跳过减号。