如何构建伪视频流服务? 低延时低采样, 基于 OpenResty , HTTP, 内网...
ZoomQuiet
·
2019-01-31
·
via Lua
这是一个创建于 2690 天前的主题,其中的信息可能已经有所发展或是发生改变。
背景
出于各种业务 /硬件 /软件博弈, 最终不得不面对...
- 局网中一台 Linux mini 主机
- 接入多路 web cam.
- 由 FFmpeg 采集视频为帧图片编号输出到硬盘
-f image2 frames/%05d.jpg
- 类似参数控制输出
- 另外主机用 Electron 开发控制客户端
- 需要拿到实时图像, 以便形成监察视频, 要求尽可能延时小
- 页面刷新 15fps 以上即可
- 但是, 从 Linux 到控制端, 延时得尽可能小
分析
- 从硬件到展示延时尽可能小
- 就不能走标准流媒体协议了
- 无论什么协议都得先视频->流化->广播->接收->解码(专用)->展示
- 特别是有的适用许可证约束只能走外网免费服务, 延时随便就超过 10 秒...
- 注意到有很多视频广播技术其实是
伪视频:
- 服务端持续更新约定图片
- 客户端反复通过 HTTP 拿到包含新内容图片
- 在 HMTL 页面反复加载
- 形成原始意义实时电影
- 问题在:
- FFmpeg 是按序列号约定自动变化图片名输出到指定目录
- 远程 JS 想拿到最新一帧图片
- 首先要知道最新图片名, 才能发起请求
设想
功能服务
- 用 Python 可以快速完成一个 API 服务
- 提供接口, 比如:
/frame/last 反馈最新一帧图片名
- 然后从 Nginx 发布静态目录下载
- 但是, 这样消耗两次 HTTP 请求时间
ngx_lua 应用
- 用 OpenResty 加载一 lua 功能脚本
- 提供接口, 比如:
/frame/last 反馈最新一帧图片内容
- 将两次请求变成一次
- 但是, 这要求 lua 进行实时同步文件操作
讨论
或是有其它更加优雅方案?
感谢大家任何建议.
 |
|
1
jessynt 2019 年 1 月 31 日
使用 websocket 分发流,Canvas 绘制呢?
|
 |
|
2
chinvo 2019 年 1 月 31 日 via iPhone
WebRTC
|
 |
|
3
guanhui07 2019 年 1 月 31 日
我也想研究下使用分发流,Canvas 绘制
|
 |
|
4
ZoomQuiet 2019 年 1 月 31 日 via iPhone
@jessynt 是也乎 ╮(╯▽╰)╭ 感谢建议…这个方向也查过… 但是这将无法形成帧图片数据集了… 因为…业务要求是异步图形分析~ 并不是远程监控… 可以说…远程监控是次要功能… 数据记录是核心需求… 硬件釆样率超过 120Hz … 但~监控 15fps 就好…
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。