image-processing - 如何检测视频文件是否是纯静态的?
问题描述
我有一组模拟视频记录。大约 10% 的文件是完全静态的。我如何以编程方式查看所有文件并删除主要包含静态文件的文件?
以下实用程序具有用于分析视频的命令行选项,但没有一个内置功能来检测视频内容的缺失。
ffmpeg
ffprobe
手刹
我尝试使用 ffmpeg 导出静止图像,然后使用图像魔法来比较这些图像之间的差异。不幸的是,静态图像和实际视频内容之间的差异返回几乎相同的差异百分比。(9% 对 7%)
ffmpeg -ss 00:30 -i PICT0050.AVI -vframes 1 -q:v 2 output1.jpg
magick compare -metric PSNR output1.jpg output2.jpg diff.jpg
9.2191
magick compare -metric PSNR output1.jpg output3.jpg diff.jpg
7.70127
比较样品 1 和样品 2 会导致 9% 的差异
比较样品 1 和样品 3 会导致 7% 的差异
解决方案
看起来静态图像是黑白的,没有任何颜色 - 所以我会查看平均饱和度,如果它是低/零,我会假设它们是静态的。因此,bash
假设您的图像被命名为sampleXXX.jpg
:
for f in sample*jpg; do
convert "$f" -colorspace HSL -channel S -separate -format '%M avg sat=%[fx:int(mean*100)]\n' info:
done
样本输出
sample1.jpg avg sat=0
sample2.jpg avg sat=0
sample3.jpg avg sat=21
sample4.jpg avg sat=0
sample5.jpg avg sat=39
sample6.jpg avg sat=31
这表明样本 1,2 和 4 是静态的。
推荐阅读
- python - discord.py 对自己的消息添加反应
- python - 如何通过双端读取 ID 对 BLAST 结果中的元素进行分组
- javascript - 尽管我将在 NodeJS 中使用不同的路线,但这些路线一直将我带到“/”主要路线。我想转到“/api/auth/login”,但它需要“/”
- android - 深度链接后保存片段的状态
- django - django admin中数据库中表的确切名称是什么?
- sql - 如何连接多个表并将所有表的属性分布在一个表中?
- python - 当有相同的数字时,按降序和升序对字典进行排序
- django - Django:Unique_Together
- python - barplot plotnine / python上的刻度线和轴
- html - 如何使Angular Material mat-select选择列表宽度自动并适应最宽的选项?