ROI 智能识别

最近更新时间:2024-05-29 10:00:03

我的收藏
ROI 智能识别技术可以实时识别视频中的人脸、游戏人物、主播等关键元素的坐标信息,并将感兴趣区域信息(ROI)随着视频编码传输到播放端。通过播放器结合 ROI 信息,可以实现智能弹幕防遮挡、背景模糊等功能。

前提条件

已开通腾讯云直播服务,并添加 推流域名

接入指引说明

服务侧

当用户在控制台完成兴趣区域识别配置并拉取智能弹幕流时,后台将触发 MPS(媒体处理服务)的检测能力。在转码过程中,系统会实时获取目标检测结果,根据协议生成 SEI (Supplemental Enhancement Information)数据并将其写入到码流中(目前仅支持 H.264 和 H.265 格式的 SEI 输出。)

用户侧

当用户的播放器端获取到直播流后,它会首先解析出 SEI(Supplemental Enhancement Information)数据。接着,播放器会根据协议解析 SEI 信息,并提取其中的 SVG 数据。最后,通过使用 SVG 图像和蒙版技术,播放器能够实现兴趣区域识别(ROI)后的业务处理。这个过程使得播放器能够准确地定位和处理视频中的特定区域。

SEI 解析相关资料

1. 腾讯云 sei 格式
下图为我们采用的标准sei格式



说明:
size 字段为可变字节,符合 H.264 SEI 标准,不包含 0x80 结束字节,但包含 method(1字节)和 uuid(16字节)。其中,svg_info 代表经过编码的 SVG 信息。
method 字段表示数据保存方式,其值如下:
1 未压缩
2 Bzip2 压缩
3 Zip 压缩
在处理 SEI 数据时,我们使用未注册的用户数据作为 SEI 帧类型(类型值为 5)。这种类型的 SEI 帧用于携带自定义数据,如 SVG 信息,以便在播放器端进行解析和处理。
当 SEI 内容出现 0x000000 或者 0x000001 时,需要插入 0x03 进行防竞争处理。这是因为在 H.264 规范中,连续的 0x000000 或 0x000001 序列被视为 NAL 单元的分隔符。因此,插入 0x03 可以防止误判。在解码时,解码器会检测到 NAL 单元内部的 0x00 00 03 序列,并将 0x03 丢弃,从而恢复原始数据。
在处理 SEI 数据时,需要注意以下转换规则:
0x00 00 00 转换为 0x00 00 03 00
0x00 00 01 转换为 0x00 00 03 01
0x00 00 02 转换为 0x00 00 03 02(0x00 00 02 保留用途)
0x00 00 03 转换为 0x00 00 03 03(解码时,仅过滤一遍,不进行循环过滤)
对于 H.265 SEI 支持,将插入 H.265 SEI NALU 类型,39 NAL_UNIT_SEI sei_rbsp() sei payload 即 NAL_UNIT_SEI(类型值为 39)。SEI 的 payload 与 H.264 的处理方式相同,但 SEI 的 startcode 需要与 H.265 规范保持一致。

svg 提取说明

1. 根据协议解析 SEI 数据并提取 SVG 信息时,您将能够获取类似于以下格式的 Base64 字符串:



2. 将提取到的 Base64 编码的 SVG 图像数据 data:image/svg+xml;base64,svg 放置在浏览器地址栏并按回车键,可以直接查看相关的图像信息。