有没有办法使用 ffmpeg(甚至是 linux 命令)来检测正在处理的视频是否有实际内容还是仅有彩条?
这是我的情况:我有一个使用 BMD 执行 RTMP 流式传输的系统。效果很好,唯一的问题是 BMD 需要配置特定模式才能捕获输入,否则它只会输出带有彩条的视频,而不是实际的输入。
答案1
您可以做的是将 BMD 彩条的一帧捕获到图像中,然后与流进行差异模式混合,然后将其传递到黑帧检测器。
当输入流和彩条图像匹配时,ffmpeg 将显示如下读数:
[Parsed_blackframe_1 @ 00000000034c67e0] frame:816 pblack:99 pts:417792 t:27.200000 type:P last_keyframe:640
步骤1生成彩条图像
ffmpeg -i rtmp://example.com -vframes 1 colorbars.jpg
第2步分析输入流
ffmpeg -i rtmp://example.com -loop 1 -i colorbars.jpg -filter_complex \
"[0:v][1:v]blend=difference:shortest=1,blackframe" \
-f null -