KubeEdge边缘设备管理系列(四):Mapper-Framework视频流处理

作者:王彬丞&杨志佳&刘家伟

针对新版本 Device-IoT 领域的更新,我们计划推出一系列的文章对这些特性进行详细的介绍,大致的文章大纲为:

  1. 基于物模型的设备管理 API 设计与实现

  2. DMI 数据面能力设计与实现

  3. Mapper 开发框架 Mapper-Framework 设计与实现

  4. 如何使用 Mapper 完成视频流数据处理

  5. 如何使用 Mapper 实现设备数据写入

  6. 如何从头开发一个 Mapper(以 modbus 为例)

在上一篇文章中,我们介绍了Mapper开发框架Mapper-Framework。Mapper-Framework中集成了DMI管理面和数据面能力,能够自动生成Mapper工程供用户使用,有效降低Mapper的开发门槛。

在1.15版本中,针对温湿度监测、酸碱度监测等数据离散的边缘场景,Mapper-Framework数据面能以多种方式定时采集上报单点数值。但在边缘计算中,摄像头之类流数据设备的管理也是不可或缺的部分。因此,在1.17版本中,Mapper-Framework增加了视频流数据处理的功能,完善了KubeEdge边缘设备的管理范围。

ONVIF摄像头设备纳管

在摄像头管理领域,ONVIF(Open Network Video Interface Forum) 是一种广泛应用的通用设备协议,旨在为视频监控及其他物理安全领域的IP设备之间的互联互通建立统一的标准,确保不同厂商的设备能够无缝集成和协作。

在 KubeEdge 1.17 版本中,为了支持摄像头设备的云原生接入与管理,我们基于 Mapper-Framework 设计并实现了 ONVIF 协议的内置 Mapper,该插件已存放于 mappers-go 仓库中,用户只需运行该内置 Mapper[1] ,并根据自身摄像头设备的具体信息修改相应的 device 配置文件,即可完成摄像头设备的自动接入与纳管。通过这种方式,能够让 ONVIF 网络摄像头设备具备云原生能力,支持在边缘环境下进行统一管理、远程控制和数据采集。ONVIF 网络摄像头设备的 device-instance 配置文件主要包含以下关键字段:

yaml 复制代码
apiVersion: devices.kubeedge.io/v1beta1
kind: Device
metadata:
  name: onvif-device-01
spec:
  ...
  protocol:
    protocolName: onvif
    configData:
      url: 192.168.168.64:80   # Replace it with the address of your own onvif camera
      userName: admin          # Replace it with the username of your own onvif camera
      password: /etc/secret/password   # Fill in the fields according to your secret.yaml

上述字段指定了设备协议名称以及网络摄像头设备的 url、用户名以及密码,用户需要根据实际设备的详细信息进行修改。为避免密码明文存储,需要通过 Kubernetes secret 的形式完成挂载。完整的配置文件信息可以在配置文件示例[2] 获取。

Mapper-Framework支持视频流数据处理

在大多数应用场景中,摄像头设备通常通过 RTSP (Real-Time Streaming Protocol) 流的形式输出视频数据。根据 ONVIF 协议,Mapper 可以按照用户在device-instance 配置文件中定义的参数,自动连接并获取摄像头的 profileToken 鉴权文件和 RTSPURI,最终实现视频流数据的采集。

为了简化用户对视频流数据的处理流程,在 KubeEdge 1.17 版本中,我们在 Mapper-Framework 的数据面内置了视频流数据处理功能,主要支持以下能力:

内置视频片段存储功能:能够将设备上报的视频流自动转化为视频片段文件,便于存储和后续分析。

内置视频帧存储功能:能够将视频流数据解析并存储为视频帧文件(图像序列),从而支持后续 AI 计算任务,如目标检测、行为识别等。

用户只需在 device-instance 配置文件中进行相关配置,即可使用当前版本的流数据处理能力。此外还支持用户自定义流数据处理逻辑以满足特定的业务需求,例如视频流实时分析、AI 推理等。配置文件相关字段定义及对应结构如下:

yaml 复制代码
apiVersion: devices.kubeedge.io/v1beta1
kind: Device
metadata:
  name: onvif-device-01
spec:
  ...
  properties:
    - name: saveFrame
      visitors:
        protocolName: onvif
        configData:
          format: jpg             # Video frame file format
          outputDir: /tmp/case/   # Output path of video frame file
          frameCount: 30          # Number of output frame files
          frameInterval: 1000000  # interval between frames, the unit is nanoseconds
          dataType: stream        
 
    - name: saveVideo
      visitors:
        protocolName: onvif
        configData:
          frameCount: 1000        # The number of frames the video clip contains
          format: mp4             # Video file format
          outputDir: /tmp/case/   # Output path of video file
          videoNum: 2             # Number of output video files
          dataType: stream

在1.17 版本后,Mapper-Framework数据面能力得到了进一步增强。除了将设备数据推送至数据库和用户应用的功能外,还新增了对视频流数据的处理能力,显著提升了设备数据的采集和读取能力,使得边缘 AI 和视频分析等场景的集成更加便捷。

然而,在实际的生产环境中,设备数据的写入也是一个至关重要的特性。例如,一些工业和安防应用场景需要将处理后的数据写回设备,以执行特定的控制指令或参数调整。在本系列的下一篇文章中,我们会对 Mapper 实现设备数据写入的功能进行详细的介绍。

▍相关链接

1\] 内置onvif Mapper: [github.com/kubeedge/ma...](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fkubeedge%2Fmappers-go%2Ftree%2Fmain%2Fmappers%2Fkubeedge-v1.17.0%2Fonvif-mapper "https://github.com/kubeedge/mappers-go/tree/main/mappers/kubeedge-v1.17.0/onvif-mapper") \[2\] onvif device配置文件示例: [github.com/kubeedge/ma...](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fkubeedge%2Fmappers-go%2Ftree%2Fmain%2Fmappers%2Fkubeedge-v1.17.0%2Fonvif-mapper%2Fresource "https://github.com/kubeedge/mappers-go/tree/main/mappers/kubeedge-v1.17.0/onvif-mapper/resource") \*\*【更多KubeEdge资讯推荐】\*\*玩转KubeEdge保姆级攻略------环境搭建篇 **玩转KubeEdge保姆级攻略------环境搭建篇** 《玩转KubeEdge保姆级攻略------环境搭建篇》课程主要介绍如何通过华为云服务快速搭建一套KubeEdge边缘计算开发平台及部署Sedna、EdgeMesh等KubeEdge生态组件。 [课程免费学习链接](https://link.juejin.cn?target=https%3A%2F%2Fconnect.huaweicloud.com%2Fcourses%2Flearn%2Fcourse-v1%3AHuaweiX%2BCBUCNXNX022%2BSelf-paced%2Fabout "https://connect.huaweicloud.com/courses/learn/course-v1:HuaweiX+CBUCNXNX022+Self-paced/about"):[connect.huaweicloud.com/courses/lea...](https://link.juejin.cn?target=https%3A%2F%2Fconnect.huaweicloud.com%2Fcourses%2Flearn%2Fcourse-v1%3AHuaweiX%2BCBUCNXNX022%2BSelf-paced%2Fabout "https://connect.huaweicloud.com/courses/learn/course-v1:HuaweiX+CBUCNXNX022+Self-paced/about") \*\*KubeEdge社区介绍:\*\*KubeEdge是业界首个云原生边缘计算框架、云原生计算基金会(CNCF)唯一毕业级边缘计算开源项目,社区已完成业界最大规模云原生边云协同高速公路项目(统一管理10万边缘节点/50万边缘应用)、业界首个云原生星地协同卫星、业界首个云原生车云协同汽车、业界首个云原生油田项目,开源业界首个分布式协同AI框架Sedna及业界首个边云协同终身学习范式,并在持续开拓创新中。 KubeEdge网站 : [kubeedge.io](https://link.juejin.cn?target=https%3A%2F%2Fkubeedge.io "https://kubeedge.io") GitHub地址 : [github.com/kubeedge/ku...](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fkubeedge%2Fkubeedge "https://github.com/kubeedge/kubeedge") Slack地址 : [kubeedge.slack.com](https://link.juejin.cn?target=https%3A%2F%2Fkubeedge.slack.com "https://kubeedge.slack.com") 邮件列表 : [groups.google.com/forum/#!for...](https://link.juejin.cn?target=https%3A%2F%2Fgroups.google.com%2Fforum%2F%23!forum%2Fkubeedge "https://groups.google.com/forum/#!forum/kubeedge") 每周社区例会 : [zoom.us/j/416723730...](https://link.juejin.cn?target=https%3A%2F%2Fzoom.us%2Fj%2F4167237304 "https://zoom.us/j/4167237304") Twitter : [twitter.com/KubeEdge](https://link.juejin.cn?target=https%3A%2F%2Ftwitter.com%2FKubeEdge "https://twitter.com/KubeEdge") 文档地址 : [docs.kubeedge.io/en/latest/](https://link.juejin.cn?target=https%3A%2F%2Fdocs.kubeedge.io%2Fen%2Flatest%2F "https://docs.kubeedge.io/en/latest/")

相关推荐
敖行客 Allthinker1 小时前
写在谷歌云大宕机之后 云时代的淬炼进化之路
ide·人工智能·网络安全·云计算·数据库架构·云ide
IT成长日记1 小时前
【Docker基础】Docker核心概念:联合文件系统(Union FS)详解
运维·docker·容器·联合文件系统·union fs
掘金-我是哪吒2 小时前
分布式微服务系统架构第148集:JavaPlus技术文档平台日更
分布式·微服务·云原生·架构·系统架构
AKAMAI3 小时前
什么是云原生应用?
后端·云原生·云计算
爱瑞瑞3 小时前
震惊!k8s竟然是这么显示资源的使用情况的!
云原生·kubernetes
Mr_wilson_liu3 小时前
k8s的pod服务一直是Terminating状态,怎么强制杀掉
云原生·容器·kubernetes
David爱编程4 小时前
容器监控全景!从 cAdvisor 到 Prometheus + Grafana 构建资源观测平台
后端·云原生·容器
Johny_Zhao4 小时前
企业级LDAP-RADIUS深度集成高可用方案
linux·网络·python·网络安全·信息安全·云计算·shell·cisco·系统运维
Johny_Zhao14 小时前
基于CentOS Stream 8的物联网平台深度优化方案
linux·网络·网络安全·信息安全·云计算·shell·yum源·系统运维
容器魔方1 天前
华为云亮相 KubeCon China 2025,开源生态引领 AI 时代技术跃迁
云原生·容器·云计算