获取和操作bat文件中的ffmpeg音量检测输出

问题描述 投票:0回答:1

我有一个运行音量检测过滤器的bat文件:

ffmpeg -i C:\Users\Nate\Videos\VideoClips\1080p-47243316.mp4 -filter:a volumedetect -f null /dev/null

是否可以捕获发送到 cmd 的所有输出文本,并对其进行操作以将mean_volume存储到变量中?

音量检测输出示例:

volumedetect output example

batch-file ffmpeg
1个回答
0
投票

解决方案是将 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:”的行
例如[Parsed_volumedetect_0 @ 00000180278db140] 平均音量:-21.3 dB

For /F "tokens=2 delims=:" %%a
根据“:”分隔符分割行并将第二部分存储在
%%a

例如“-21.3 分贝”

For /F "tokens=1" %%b
根据空格/制表符分隔符分割 %%a 并将第一部分存储在 %%b
例如“-21.3”

Set vMeanVol=%%b
将 %%b 存储在 vMeanVol 中

Set vVol=!vMeanVol:~1!
获取从第二个字符(索引 0)开始的 vMeanVol 值,跳过减号。

© www.soinside.com 2019 - 2024. All rights reserved.