Windows下如何将grep处理后的ffmpeg命令结果输出到文件?
解决Windows下ffmpeg+grep输出到文件的问题
你的命令存在两个核心问题:
- 文件占用冲突:第一条命令同时对
C:\!TEMP.txt进行写入和读取操作,Windows不允许同一文件被同时读写,因此报错。 - 未捕获stderr输出:ffmpeg的
silencedetect滤镜信息输出到标准错误流(stderr),第二条命令未将stderr合并到标准输出流(stdout),导致grep接不到过滤内容,无输出;另外grep命令前的-是多余的。
正确的命令写法:
cmd /U /c ffmpeg -i "C:\video.webm" -af silencedetect=noise=-50dB:d=0.1 -f null - 2>&1 | grep silencedetect > "C:\!TEMP.txt" & type "C:\!TEMP.txt"
说明:
2>&1:将ffmpeg的stderr输出合并到stdout,确保grep能捕获到silencedetect的日志内容。- 直接通过管道将ffmpeg的输出传给grep过滤后写入目标文件,避免了同一文件同时读写的冲突。
- 用
cmd /c替代/k:执行完命令后自动关闭cmd窗口,若需要保留窗口可换回/k。
内容的提问来源于stack exchange,提问作者DannyhelMont
相关产品推荐
相关产品推荐

