使用 OSS 的数据索引和视频截帧功能,可以为网络摄像机(IPC)设备采集的视频构建一个智能语义检索系统,对采集的视频进行截帧并实现语义检索,适用于智能安防等场景。
方案概览
搭建智能语义检索系统,只需两步:
配置视频Bucket:创建用于存储原始 IPC 设备采集的视频文件的 Bucket,并上传待处理的视频文件,基于预设的时间间隔提取视频关键帧,为后续检索提供有力支持。
配置截帧Bucket:创建用于存储从原始视频中截取关键帧图像的Bucket,并开启向量检索功能,以支持基于自然语言描述的智能检索。
方案优势
智能媒体处理:结合OSS与智能媒体管理(IMM)实现大规模视频数据的处理与分析,对上传至 OSS 的大规模视频数据进行自动化处理,提取关键帧图像、生成元数据,并为后续语义化检索提供支持。
语义化检索:支持基于自然语言描述和多条件组合的精准检索,能够快速定位目标画面,满足复杂场景下的检索需求。实现更精准的事件匹配,减少人工筛选成本。
多模态支持:提供视频、图像、文本等多模态数据统一管理与跨模态检索能力。依托阿里云 OSS 和 IMM,开箱即用,显著降低技术门槛与运维成本。
横向扩展:OSS 的分布式存储架构支持动态扩容,轻松应对海量数据增长;计算资源可根据负载动态扩展,确保系统性能稳定。
1. 配置视频Bucket
1.1 创建Bucket并上传设备采集视频
1.2 绑定智能媒体管理(IMM)项目
视频截帧是IMM提供的数据处理能力,使用此功能前需要先将您刚创建的视频Bucket与IMM项目进行绑定。
在左侧导航栏,选择
,在弹出的绑定页面,依次开通和授权相关服务后,点击Bucket绑定IMM project按钮。在绑定智能媒体管理项目对话框中,选择创建新的Project,并输入项目名称(建议使用业务相关名称,如
video-snapshot
),点击确认进行绑定。系统会自动在存储空间所在的地域创建对应的IMM项目,并将其与当前存储空间绑定。
1.3 创建视频截帧样式
创建截帧样式,对输入视频按照固定时间间隔进行截帧处理直至视频结束,并将输出的关键帧图片以原始尺寸保存为 JPG 格式。
|
1.4 执行视频截帧
基于上述创建的截帧样式,对上传至视频Bucket的视频文件进行截帧处理,生成关键帧图像。以下是利用 OSS Python SDK 执行视频截帧的示例代码:
环境准备
在使用 Python SDK 进行视频截帧操作前,请确保已配置好开发环境和访问凭证,详细的配置流程请参考快速入门。
2. 配置截帧Bucket
2.1 创建Bucket
创建用于存储从IPC视频中提取的关键帧图片的 Bucket,这样,原始视频和关键帧图像将分别存储在不同的 Bucket 中,优化数据管理效率。
进入Bucket列表页面,然后单击创建Bucket。
在创建Bucket页面,填写Bucket名称(建议使用业务相关的名称,如
ipc-frames-oss-metaquery-demo
)。其余参数可保持默认配置。单击完成创建,在创建成功的页面,点击进入Bucket。
2.2 开启向量检索功能
为截帧Bucket开启向量检索功能,支持对关键帧图片进行基于自然语言描述和多条件组合的精准检索。
构建元数据索引需要等待一定的时间,具体等待时长取决于Bucket中Object的数量。若开启时间过久可通过刷新来查看开启状态。 |
结果验证
您只需输入描述性文字,例如停着车的院子
,系统便会返回与描述相符的关键帧图像。
|
应用于生产环境
当前智能语义检索系统已经完成构建,为了将该系统无缝集成到您的产品并应用于生产环境,您可以通过调用消费端应用接口,利用自然语言描述进行检索,快速定位目标画面或事件片段。
以下为消费端示例代码,展示如何构建符合 OSS MetaQuery 规范的 XML 请求,获取检索结果:
运行该程序后,您可以输入描述性文字(例如停着车的院子
)进行查询。系统根据数据索引,返回包含截帧图片路径、URL链接的检索结果,您可以直接通过URL链接查看图片详情。
共找到 4 个匹配结果:
文件路径:2025-04-07/视频A/2.jpg
文件地址:https://ipc-frames-oss-metaquery-demo.oss-cn-beijing.aliyuncs.com/2025-04-07/%E8%A7%86%E9%A2%91A/2.jpg?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-date=20250407T025024Z&x-oss-expires=900&x-oss-credential=LTAI********************%2F20250407%2Fcn-beijing%2Foss%2Faliyun_v4_request&x-oss-signature=d2d849c56e230f6beaf199ee1ca756bb99b3f6a14ce64c1fa710127149375fac
------------------------
文件路径:2025-04-07/视频C/2.jpg
文件地址:https://ipc-frames-oss-metaquery-demo.oss-cn-beijing.aliyuncs.com/2025-04-07/%E8%A7%86%E9%A2%91C/2.jpg?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-date=20250407T025024Z&x-oss-expires=900&x-oss-credential=LTAI********************%2F20250407%2Fcn-beijing%2Foss%2Faliyun_v4_request&x-oss-signature=1b3b456a32f9d0823dcfe5408d156df74e138a194bc06095877e00dd8079511e
------------------------
文件路径:2025-04-07/视频C/1.jpg
文件地址:https://ipc-frames-oss-metaquery-demo.oss-cn-beijing.aliyuncs.com/2025-04-07/%E8%A7%86%E9%A2%91C/1.jpg?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-date=20250407T025024Z&x-oss-expires=900&x-oss-credential=LTAI********************%2F20250407%2Fcn-beijing%2Foss%2Faliyun_v4_request&x-oss-signature=1fc66719db2bbe611bc86a63a863d7f94ad9aebf14ccfaff8579938094ace3ef
------------------------
文件路径:2025-04-07/视频A/1.jpg
文件地址:https://ipc-frames-oss-metaquery-demo.oss-cn-beijing.aliyuncs.com/2025-04-10/%E8%A7%86%E9%A2%91A/1.jpg?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-date=20250407T025024Z&x-oss-expires=900&x-oss-credential=LTAI********************%2F20250407%2Fcn-beijing%2Foss%2Faliyun_v4_request&x-oss-signature=4dd7f808872b9d4c988efe78a09cb91fd2accbb3e9c12df7cdbdf60bdcc2e7a7
------------------------
了解更多
为截帧图添加标签
为了实现更高效的检索,您可以利用 OSS 的对象标签功能,在关键帧图片添加元数据标签。例如,来标识视频的来源或业务场景信息,您便能在海量图片中快速定位目标资源。
假设系统中有三个待分析的视频文件(如视频A.mp4、视频B.mp4、视频C.mp4)如下:
视频A.mp4 | 视频B.mp4 | 视频C.mp4 |
后院视频,标记为camara-a拍摄 | 售货视频,标记为camara-b拍摄 | 后院视频,和视频A内容近似,标记为camara-c拍摄 |
以下代码示例展示了如何在上传视频之后,通过 OSS SDK 为每个文件添加标签,您只需根据需求调整标签内容,就能实现自动化标签管理,从而为后续组合检索提供支持。
以下提供消费端应用示例代码,利用描述性文字并结合其他条件(如标签)进行组合查询,获取检索结果:
运行该程序后,如需筛选出包含停放车辆的院子的视频内容,您可以:
在描述性字段输入检索关键词:
停着车的院子
设置标签筛选条件:
camera = camera-a
在当前视频文件中,视频 A 与视频 C 均拍摄了符合停着车的院子
的描述场景,但由于设置了标签筛选(仅保留camera-a
标记的视频检索结果),最终检索结果仅包含视频A。
发送 DoMetaQuery 请求...
请求成功,HTTP 状态码: 200
从OSS获取到 4 个初步匹配结果,开始进行客户端标签过滤...
[1] 文件 '2025-04-07/视频A/2.jpg' 符合所有条件:
文件地址:https://ipc-frames-oss-metaquery-demo.oss-cn-beijing.aliyuncs.com/2025-04-07/%E8%A7%86%E9%A2%91A/2.jpg?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-date=20250407T025459Z&x-oss-expires=900&x-oss-credential=LTAI********************%2F20250407%2Fcn-beijing%2Foss%2Faliyun_v4_request&x-oss-signature=5e9d684ec141f9570f2f95713de492ac8291a39d1d655e4bb4c4d35b40d1e554
文件路径:2025-04-07/视频A/2.jpg
-----------------------
[2] 文件 '2025-04-07/视频A/1.jpg' 符合所有条件:
文件地址:https://ipc-frames-oss-metaquery-demo.oss-cn-beijing.aliyuncs.com/2025-04-07/%E8%A7%86%E9%A2%91A/1.jpg?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-date=20250407T025459Z&x-oss-expires=900&x-oss-credential=LTAI********************%2F20250407%2Fcn-beijing%2Foss%2Faliyun_v4_request&x-oss-signature=1c13310abdd764e8ac9f67e27a179f02949eaf47c4ed68358eefcb1965a6dd1e
文件路径:2025-04-07/视频A/1.jpg
-----------------------
客户端过滤完成,共找到 2 个最终匹配结果。
配置截帧事件通知
在实际应用中,视频截帧处理是以异步请求形式提交的,即在返回处理结果时无法直接获得截帧的处理结果(如处理成功或失败等关键信息)。如果您需要获取视频截帧的处理结果,建议结合轻量消息队列SMQ(原MNS),配置事件通知,即可以在截帧处理完成后收到即时通知,无需重复查询任务状态。
实现截帧事件通知,您需要先参考主题模型快速入门创建一个与您的视频Bucket位于同一地域的消息主题。在视频截帧时,您可以通过以下代码在视频截帧时配置事件通知,其中的主题名称需经过URL安全的Base64编码处理。例如,消息主题名称为test-topic
,则编码后的名称为dGVzdC10b3BpYw
。
- 本页导读 (1)
- 方案概览
- 方案优势
- 1. 配置视频Bucket
- 1.1 创建Bucket并上传设备采集视频
- 1.2 绑定智能媒体管理(IMM)项目
- 1.3 创建视频截帧样式
- 1.4 执行视频截帧
- 2. 配置截帧Bucket
- 2.1 创建Bucket
- 2.2 开启向量检索功能
- 结果验证
- 应用于生产环境
- 了解更多
- 为截帧图添加标签
- 配置截帧事件通知