原案:
- Py+OpenCV 读取摄像头数据 并进行其它必要处理
- 定期将帧数据写入到一个硬盘图片
- NGINX 发布对应目录
- 远程系统持续请求此图片显示在窗口/网页中
- 形成伪直播
好处: 简洁
问题: 系统的硬盘文件缓存/网络请求延迟/... 导致只能达到 10fps 不到的稳定刷新率
当然, 硬件支持 30fps 稳定采样的
其它方案:
- 标准的网络直播都需要事先有视频形成, 再进行分组
- HLV ~ HTTP Live Streaming 目标是无缓冲的实时图像发布
- 最接近的一个方案是:Streaming RaspberryPi avec Node.js et ffmpeg via websocket
– Eddy Martignier
https://eddy.martignier.ch/raspbian-node-js-ffmpeg-et-la-raspicam/
+ 使用 ffmpeg 采集硬件图像
+ 实时发送给 node 发布的本地 ws 服务
+ 通过 Nginx 广播出来
+ 在网页端用原生 JSMPEG 模块完成解码
好处: 有真正实现的案例
问题: 依赖太多第三方服务/模块
期望:
- OpenResty 是否有对应模块可以替代 Node 的 WebSocket 服务?
- 整体数据流程就变成了:
0. Py+OpenCV 读取摄像头数据 并进行其它必要处理
1. 实时将帧图像数据输出给本地 OpenResty 服务
2. OpenResty 完成直接数据转换打包,广播出来
3. 远程网页使用标准 H5 视频播放器, 就完成了直播
以上描述, 是否足够大家判定 OpenResty 是否当前有这种能力?
又或是, 这种实时伪直播, 还有其它更简洁的办法?
这里可能最别扭的是:
0. 需要事先用 Py 对 OpenCV 采集到的视频进行实时处理后, 才可以使用
1. 只能通过 wifi 传播视频, 所以带宽受限, 必须尽可能的减少传送数据量
--
life is pathetic, go Pythonic! 人生苦短, Python当歌!
俺: http://zoomquiet.io
授: http://creativecommons.org/licenses/by-sa/2.5/cn/
怒: 冗余不做,日子甭过!备份不做,十恶不赦!
KM keep growing environment culture which promoting organization learning!