海康大华等网络摄像机监控视频RTSP/RTMP推流网页播放/直播无需插件低延迟解决方案研究

市面上常见监控视频推流方案简介

当前如果想要将监控视频在浏览器中播放,有几种常见的办法如下:

1、获取摄像头RTSP流,使用FFmpeg或者程序如JavaCV或者其他方式,将其推流成RTMP,通过服务端搭建Nginx进行推流,Nginx需要编译集成RTMP模块,然后浏览器前端用flv.js播放RTMP流的视频。

2、同样采取推流的方式,Nginx实现推流并切片为m3u8,或者HLS方式,本质上是将视频流分片保存然后网页播放,此方案次于第一种。

3、其他一些解决方案,大同小异,各有各的弊端。

以上方案都不是特别完美,要么是延迟高,要么就是不稳定,容易断掉,并且维护也非常麻烦,过程繁琐,容错性低。

在这里插入图片描述

上述常见方案实现的痛点总结

1、RTSP推RTMP流过程繁琐,需要搭建Nginx,运行时容错性低

2、网页端播放需要安装插件,如播放RTMP流需要Flash插件,然而较新版本Chrome已不支持Flash,用户端使用麻烦

3、虽然有方案可以网页播放RTMP流,但是延迟和资源消耗居高不下

4、使用m3u8播放需要Nginx切片,延迟也很高

5、其他方案稳定性差,容易卡住,或者因为其他不可控因素导致断流

6、耗费精力搭建与运维,部署麻烦

7、其他部分方案门槛搞,需要去学专门的工具类,坑也多,费时费力

本方案特色

1、延迟极低,一秒以内,播放稳定,极限测试可以一直播放几天,不掉线

2、支持视频音频同时传输,可以选择关闭音频

3、无需安装web浏览器插件,兼容各种浏览器

4、服务端兼容多平台(Linux,MacOS,Windows),一键运行

5、使用简单,配置方便,后续会增加灵活配置功能

6、可以二次开发,自定义界面,融入现有系统非常方便快捷

本方案应用前置条件

只要满足以下两个条件即可使用:

1、需要能获取摄像头RTSP流

2、视频编码为H264,音频编码为aac

效果演示

海康威视摄像头

https://www.bilibili.com/video/BV1qV411a7Pd/

浙江大华摄像头

https://www.bilibili.com/video/BV1c5411G7rU/

方案技术简介

与上述方案相比,少了一步转RTMP流的过程,获取原生的RTSP流即可进行操作。通过WS协议与客户端交互,简单高效。

其延迟限大小制与RTSP流获取延迟与网络传输带宽。基本上正常情况下十多路监控视频一起推流可以到达一秒以内延迟,系统CPU,内存占用极小。和海康自带的网页监控平台基本持平(海康平台需要IE浏览器播放,且安装ActiveX插件),用户使用非常不方便。采取这种方式的话,就无需安装Flash插件,兼容多浏览器。

至于程序代码,可以自行选择语言编写,推荐C++与Go,Java也可,核心思想不变,这里提供一个实现好的案例,仅供参考:https://www.yuanmasucai.com/24963.html

参考资料:

FFmpegWiki:https://trac.ffmpeg.org/
RTSP协议学习:https://blog.csdn.net/lory17/article/details/60144734
Netty:https://netty.io/

### UE5 中实现点击放大云画面的方法 在 Unreal Engine 5 (UE5) 中实现点击放大云画面的功能涉及多个方面的技术集成,包括但不限于 UI 控件处理、视图管理以及网络传输优化。下面介绍一种可能的技术方案。 #### 使用蓝图创建交互逻辑 为了响应用户的点击事件并执行放大的操作,可以利用蓝图可视化脚本来构建交互逻辑: 1. 创建一个新的 Widget Blueprint 来定义用于显示云视频的控件布局。 2. 添加一个 `Button` 或者其他可触发点击事件的对象作为用户输入接口。 3. 编写 Click Event 的回调函数,在其中设置新的摄像机视角或者其他方式调整当前场景中的渲染参数以达到缩放效果。 ```blueprint // 假设有一个名为 "CloudStreamWidget" 的自定义 widget blueprint, // 它包含了按钮和用来展示直播内容的画面组件 ImageComponent. EventGraph: Button.Clicked -> SetZoomLevel(true); // true 表示开启放大模式 ``` #### 调整摄像机或图像尺寸 对于如何具体实施放大动作,取决于实际应用场景的选择: - **如果采用改变摄像机角度的方式**:可以通过修改 Camera Actor 的位置与旋转属性来模拟镜头拉近的效果;也可以直接操控 Post Process Volume 设置 Field of View 参数从而影响整个视野范围内的物体大小感知[^1]。 - **如果是单纯调节图片本身的分辨率来进行局部特写,则更简单些**:只需要动态更改负责呈现远程视频帧的那个 Texture Render Target 的 Size X 和 Y 属性即可完成平滑过渡至更高清度细节查看的目的[^2]。 #### 集成 WebRTC 或 RTMP 媒体协议支持 考虑到这是针对云端送过来的数据做二次加工处理的任务,因此还需要确保本地客户端能够高效稳定地接收到来自媒体服务器端发送来的实时影像资料。这通常意味着要引入第三方库比如 WebRTC SDK 或者搭建基于 RTMP 协议的服务架构以便于更好地兼容市面上主平台所提供的 API 接口和服务特性[^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值