前言
EdgeX Foundry实现了很多协议连接物理设备。对于像监控摄像头这类实时流媒体,因其实时数据量巨大,对设备性能要求高,如果直接存储数据到EdgeX Foundry所在的网关,不仅会严重降低其性能,而且网关内非常有限的本地存储也无法处理巨量增长的数据。所以如果希望利用EdgeX Foundry框架来处理实时流媒体数据,就不能把它当做普通文本消息流,而必须采取其他措施。
本文介绍一种简单的实现方式,EdgeX Foundry在其中提供信令控制服务。把摄像头的元信息注册到EdgeX Foundry,把截屏和录像等命令都交给EdgeX Foundry管理;而摄像头的流媒体数据则通过特定的流媒体服务器和转发服务器推送到指定的客户端,流媒体服务器的地址也可以当做摄像头的元信息,交由EdgeX Foundry管理。
第三方开源组件
以下整合方式是演示在给video camera设备发送命令后,能够在设备管理页面读到video camera的实时视频流,其中采用ffmpeg和jsmpeg等开源组件。
- 开源组件jsmpeg.js只应用于设备管理web端渲染视频,无需整合到EdgeX Foundry;
- 关于设备管理web端,请参见github中simple-local-gateway-console;
- camera设备的元信息注册到EdgeX Foundry;
- 经过EdgeX Foundry发送命令到树莓派中的camera;
- camera的视频流数据经过node.js的http模块接收,websocket转发到web端;
- 目前基于jsmpeg.js开源组件实现的视频流,只支持广播