将信息从 ffmpeg 发送到文本文件然后解析为新文件

将信息从 ffmpeg 发送到文本文件然后解析为新文件

我正在尝试扫描 .mkv 文件目录并将卷信息输出到 out.txt,然后解析 out.txt 中的 volume_max 并将其发送到 log.txt 使用

for %i in (*.mkv) do ffmpeg -i "%i" -af "volumedetect" -vn -sn -dn -f 1>> out.txt 2>&1 | findstr max_volume out.txt > log.txt

但我一直收到错误选项“f”缺少参数,拆分参数列表时出错:参数无效在运行 ffmpeg 命令时对每个文件执行。

我确实获取了 out.txt 文件,但该文件并未包含每个已处理文件的完整信息。此外,log.txt 文件始终为 0 字节,我认为这是因为 out.txt 无法获取每个文件的 max_volume 信息。

我知道这应该很简单,但我看不出来。有人能帮我解释一下我可能做错了什么吗?谢谢!

答案1

您必须将包含 *.mkv 文件的文件夹拖放到批处理脚本中。在我的低配笔记本电脑上,每个视频大约需要 1 分钟。

打开记事本并将下面的代码粘贴到其中,然后以所需的名称保存,但扩展名为 *.bat。

%%a 代表脚本上的文件名,%%b 代表 max_volume 部分……

@echo off

if exist "%~1" if not exist "%~1\" exit

pushd "%~1"
for /f "delims=" %%a in ('dir /b *.mkv') do for /f "tokens=2 delims=]" %%b in ('ffmpeg -hide_banner -nostats -i "%%a" -af "volumedetect" -vn -dn -sn -f null nul 2^>^&1 ^|find /i "max_volume"') do >>Max_Volume.log echo %%a -^> %%b

GIF 链接

相关内容