视频黑屏画面检测 blackframe

本文介绍了使用ffmpeg的blackframe进行视频黑场画面检测。阐述了相关参数,如amount是黑场判断阈值,默认98%;threshold是黑场像素判断阈值,默认32。还提及测试命令、效果,输出信息含帧id等,最后给出官方参考链接。

ffmpeg的blackframe实现视频黑场画面检测

1 参数简介

  • amount:
    设置黑场的判断阈值,高于此阈值的认为此帧为黑场,该值为一个百分比。默认值98。
  • threshold, thresh:
    设置黑场像素的判断阈值,低于此阈值的像素认为是黑场像素点。默认值32。

2 测试命令

ffmpeg -loglevel info  -i ~/test.mp4  -vf blackframe=95:30 -f null -

3 测试效果

部分检测结果日志如下

[Parsed_blackframe_0 @ 0x7f9f608229c0] frame:1081 pblack:97 pts:693120 t:43.320000 type:P last_keyframe:934
[Parsed_blackframe_0 @ 0x7f9f608229c0] frame:1082 pblack:97 pts:693760 t:43.360000 type:P last_keyframe:934
[Parsed_blackframe_0 @ 0x7f9f608229c0] frame:1083 pblack:97 pts:694400 t:43.400000 type:P last_keyframe:934
[Parsed_blackframe_0 @ 0x7f9f608229c0] frame:1084 pblack:97 pts:695040 t:43.440000 type:I last_keyframe:1084
[Parsed_blackframe_0 @ 0x7f9f608229c0] frame:1085 pblack:97 pts:695680 t:43.480000 type:B last_keyframe:1084
[Parsed_blackframe_0 @ 0x7f9f608229c0] frame:1086 pblack:97 pts:696320 t:43.520000 type:B last_keyframe:1084
[Parsed_blackframe_0 @ 0x7f9f608229c0] frame:1087 pblack:97 pts:696960 t:43.560000 type:B last_keyframe:1084
[Parsed_blackframe_0 @ 0x7f9f608229c0] frame:1088 pblack:97 pts:697600 t:43.600000 type:B last_keyframe:1084

输出信息包含:帧id、画面黑屏程度、时间戳、帧类型、当前gop的idr帧的位置;

4 官方参考

http://ffmpeg.org/ffmpeg-all.html#blackframe

### 创建CStatic控件并应用SS_BLACKFRAME风格 在MFC中,`CStatic`控件可以用于显示文本、图形、边框等静态内容。为了创建一个具有色边框的静态控件,可以使用`SS_BLACKFRAME`风格。该风格会在控件周围绘制一个色边框,使其在界面中更加突出和清晰[^1]。 创建`CStatic`控件时,需要调用`Create`函数,并在其中指定控件的显示文本、窗口风格、位置、父窗口以及控件ID。窗口风格参数`dwStyle`可以包含多个静态控件风格的组合,例如`SS_BLACKFRAME`与`WS_CHILD`、`WS_VISIBLE`等基本窗口风格结合使用,以实现所需的视觉效果和功能[^1]。 以下是一个示例代码,展示了如何使用`SS_BLACKFRAME`风格创建一个`CStatic`控件: ```cpp CStatic* pStatic = new CStatic(); if (pStatic != nullptr) { CRect rect(10, 10, 100, 50); // 设置控件的位置和大小 if (!pStatic->Create(_T("静态控件"), WS_CHILD | WS_VISIBLE | SS_BLACKFRAME, rect, this, IDC_STATIC_CONTROL)) { delete pStatic; pStatic = nullptr; } } ``` 在上述代码中: - `_T("静态控件")`是静态控件中显示的文本。 - `WS_CHILD`表示该控件是子窗口。 - `WS_VISIBLE`表示控件创建后立即可见。 - `SS_BLACKFRAME`表示在控件周围绘制一个色边框。 - `rect`定义了控件的位置和大小。 - `this`表示控件的父窗口。 - `IDC_STATIC_CONTROL`是控件的唯一标识符,可以在资源头文件中定义。 此外,如果需要在已有控件上动态修改风格以添加`SS_BLACKFRAME`效果,可以使用`ModifyStyle`函数。例如: ```cpp ((CStatic*)GetDlgItem(IDC_STATIC_JXWD2))->ModifyStyle(0, WS_BORDER | SS_BLACKFRAME); ``` 此代码片段通过调用`ModifyStyle`函数,在指定控件上添加了边框风格和色边框效果。其中`GetDlgItem`函数用于获取控件指针,`ModifyStyle`的第一个参数表示要移除的风格,第二个参数表示要添加的风格[^3]。 ### 注意事项 - `CStatic`控件的生命周期由开发者管理,因此在不再需要时应手动删除以避免内存泄漏。 - 控件的风格可以根据需要进行调整,例如`SS_CENTER`、`SS_LEFT`、`SS_RIGHT`等,以实现不同的文本对齐方式。 - `SS_BLACKFRAME`风格可以与其他风格结合使用,如`SS_CENTERIMAGE`,以实现更丰富的视觉效果。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值