首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检测视频文件是否是纯静态的?

如何检测视频文件是否是纯静态的?
EN

Stack Overflow用户
提问于 2019-01-03 17:51:01
回答 2查看 361关注 0票数 4

我收集了一组模拟录像。大约10%的文件是完全静态的。如何以编程方式查看所有文件并删除包含大多数静态文件的文件?

下面的实用程序有命令行选项来分析视频,但是没有一个工具内置了检测视频内容缺失的功能。

  1. ffmpeg
  2. 弗氏探针
  3. HandBrake

我尝试使用ffmpeg导出静态图像,然后使用图像魔法比较这些图像之间的差异。不幸的是,静态图像与实际视频内容之间的差异几乎是相同的差异百分比。(9%对7%)

代码语言:javascript
运行
复制
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%。

样本1

示例2

样本3

样本4

样本5

样本6

样本7

EN

回答 2

Stack Overflow用户

发布于 2019-01-03 19:04:48

看起来这些静态图像是黑白的,没有任何颜色--所以我会看平均饱和度,如果是低/零,我会假设它们是静态的。所以,在bash中,假设您的图像名为sampleXXX.jpg

代码语言:javascript
运行
复制
for f in sample*jpg; do 
    convert "$f" -colorspace HSL -channel S -separate -format '%M avg sat=%[fx:int(mean*100)]\n' info:
done

样本输出

代码语言:javascript
运行
复制
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是静态的。

票数 4
EN

Stack Overflow用户

发布于 2019-01-03 23:04:49

另一种方法是使用Imagemagick对噪声的数量进行排序。噪声图像将有更多的边缘。

代码语言:javascript
运行
复制
for img in *; do
edginess=`convert $img -edge 1 -scale 1x1! -format "%[fx:mean]" info:`
echo "$img $edginess"
done

1bidV.jpg 0.0472165
3FJUJ.jpg 0.275502  <---- noise image
QpQvA.jpg 0.332296  <---- noise image
b4Gxy.jpg 0.0428422
gQcXP.jpg 0.0437578
vF1YZ.jpg 0.322911  <---- noise image
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54027354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档