没有这样的过滤器“拆分”:在 Python 中使用 ffmpeg 进行 ffplay

No such filter '"split': ffplay with ffmpeg in Python

我正在尝试在 Python 上使用 ffmpeg 可视化与视频叠加的视频的 YUV 直方图。我使用的代码如下:

subprocess.call(['ffplay','video.mp4','-vf','"split=2[a][b],[b]histogram,format=yuva444p[hh],[a][hh]overlay"'])

但是当我执行代码时,出现了这个错误:

有点奇怪,因为如果 运行 在命令 window 的同一行,它可以正常工作。

删除过滤器周围的双引号 - subprocess.call 自动在带有特殊字符的参数周围添加引号,例如 []=.

以下命令应该有效:

subprocess.call(['ffplay','video.mp4','-vf','split=2[a][b],[b]histogram,format=yuva444p[hh],[a][hh]overlay'])

为了观看实际的命令行,您可以添加 -report 参数,并检查日志文件。

  • subprocess.call(['ffplay','video.mp4','-vf','split=2[a][b],[b]histogram,format=yuva444p[hh],[a][hh]overlay', '-report'])
    适用:
    ffplay video.mp4 -vf "split=2[a][b],[b]histogram,format=yuva444p[hh],[a][hh]overlay" -report.
    上面的命令语法正确。

  • subprocess.call(['ffplay','video.mp4','-vf','"split=2[a][b],[b]histogram,format=yuva444p[hh],[a][hh]overlay"', '-report']
    适用:
    ffplay video.mp4 -vf "\"split=2[a][b],[b]histogram,format=yuva444p[hh],[a][hh]overlay\"" -report
    如您所见,子流程添加了额外的 "\\",这就是导致错误的原因。