当前位置: 首页 > article >正文

国标GB28181-2022平台EasyGBS:安防监控中P2P的穿透方法

在安防监控领域,P2P技术因其去中心化的特性而受到关注,尤其是在远程视频监控和数据传输方面。P2P技术允许设备之间直接通信,无需通过中央服务器,这在提高效率和降低成本方面具有明显优势。然而,P2P技术在实际应用中也面临着一个主要挑战——网络穿透问题。

一、穿透方法

实现P2P穿透是可能的,成功的概率也比较高。UDP的协议进行数据传输穿透NAT的成功率比较高,接近100%,TCP则存在一些情况无法实现穿越,主要受限于路由器的端口映射机制。

要实现P2P穿透,需要有P2P穿透服务器部署在互联网(有固定的域名或者IP),由该服务器来协助网络摄像机和客户端来实现P2P穿透。有些服务器还能在TCP不能穿越的情况下,实现流媒体转发的功能,以确保二者之间能实现数据通信。

由于P2P穿透服务器不同于安防监控系统中的流媒体转发服务器,主要进行信令交互,不转发媒体数据,在协助打通数据通道之后,对应的网络摄像机和客户端就不会再占用服务器带宽和处理能力了,因此一台P2P穿透服务器可以接入数量庞大的网络摄像机和客户端。

通常网络摄像机都有唯一ID,并通过该ID注册到P2P服务器。客户端要访问对应的网络摄像机时,也需要先注册到P2P服务器,并提交对应网络摄像机的ID,由服务器查找对应的网络摄像机,并协助网络摄像机和客户端之间进行穿透,最后打通一个点对点的数据传输通道。之后,二者即可进行正常的媒体和信令交互了。

为实现更加有效地管理,服务器可对设备接入进行认证。

1、PC访问网络摄像机

PC访问网络摄像机,可以先访问一个网页,传入网络摄像机的序列号。

网页加载一个控件,该控件通过P2P穿透服务器和该序列号对应的网络摄像机实现穿透后,通过可靠的UDP传输信令和媒体数据。控件提供视频浏览、对讲、云台控制、参数查询设置等功能。

2、手机访问网络摄像机

手机由于平台的不同,需要单独开发对应的客户端或者插件以实现和PC访问类似功能。但原理是一样的,都需要通过P2P服务器和该序列号对应的网络摄像机实现穿透后,通过可靠的UDP传输信令和媒体数据。由于开源的P2P穿透库是可以移植的,在LINUX,iOS,Android等都可以实现同样的P2P穿透功能。

关于具体的穿透的代码,需要的可以自行搜索,同时网上有第三方的穿透中间件服务。穿透的核心是针对不同的网络环境,选择不同的策略。即明确设备处在的网络位置。这里涉及一个概念NAT。

因为互联网中的IPv4地址不够用,于是引入了NAT功能。NAT,即网络地址转换。这种方法即在内部网和外网之间使用带有NAT功能的路由器,路由器能分配一个公网IP,内部的任意一台机器和外网通信时都通过这个公网IP。这样就很好地解决IP地址有限的问题。但问题随之而来,很多网络协议无法通过NAT,此时我们需要穿透NAT,即P2P穿透或者NAT穿透。

NAT穿透的前提是确定NAT类型,一般而言,NAT分为静态NAT和NAPT两种。静态NAT好理解,即一个内网IP对应一个公网IP。NAPT要复杂很多,NAPT即端口多路复用技术,不但需要转换IP地址,还需要进行传输层的端口转换。具体表现就是对外只有一个公网IP,通过不同端口来区分内网的不同设备数据。

实际运用中,NAPT占绝大多数。NAPT又可以分成4种类型,分别为:

1、完全锥型(IP地址,端口都不受限)

2、受限锥型(IP受限,端口不受限)

3、端口受限型(IP地址,端口都受限)

4、对称型(一个请求对应一个端口)

P2P技术提高了数据传输的效率,在安防监控领域,EasyGBS平台作为一款基于国标GB28181协议构建的视频监控平台。该平台不仅支持视频直播、录像回放、云存储等基本功能,还具备告警处理、多级平台级联等高级功能,为各类监控场景提供了高效、稳定且智能的解决方案。

国标GB28181-2022平台EasyGBS支持多种流媒体协议输出,包括RTSP、RTMP、WebRTC、HTTP-FLV、WebSocket-FLV、HLS等这使得EasyGBS能够适应不同的网络环境和终端设备,提供灵活的视频分发服务。

总结来说,P2P技术在安防监控中的应用前景广阔,但要实现其潜力,必须克服网络穿透的难题。随着技术的不断进步和创新,我们有理由相信,未来将会出现更多高效、安全的P2P穿透解决方案。这些解决方案将进一步提升安防监控系统的灵活性和可靠性,使其能够更好地适应多变的网络环境,为用户提供更加稳定和便捷的远程监控体验。


http://www.kler.cn/a/451269.html

相关文章:

  • 打造高效租赁小程序让交易更便捷
  • RabbitMQ中的Topic模式
  • 【时间之外】IT人求职和创业应知【74】-运维机器人
  • 蓝牙协议——音量控制
  • ML-Agents 概述(二)
  • [Unity Shader] 【图形渲染】Shader数学基础12-坐标空间变换
  • Rust: offset祼指针操作
  • 【Linux】虚拟机扩展磁盘
  • 「实战应用」如何用图表控件SciChart WPF实现应用程序的DPI感知?
  • WebDriverManager 下载及安装教程
  • ffmpeg源码分析(九)解协议
  • 记录 io.springfox 3.0.0 整合 spring boot 2.6.x 由于 springfox bug 引发问题
  • HTML制作一个普通的背景换肤案例2024版
  • udp tcp协议
  • 重温设计模式--备忘录模式
  • Sui 基金会任命 Christian Thompson 为新任负责人
  • 快速建站(网站如何在自己的电脑里跑起来) 详细步骤 一
  • 时钟抖动定义和测量方法
  • macos自动制作dmg安装包脚本
  • 深入理解数据结构:数组、链表与列表
  • 【魅力golang】之-通道
  • Unity中如何实现绘制Sin函数图像
  • whisper.cpp: Android端测试 -- Android端手机部署音频大模型
  • 独一无二,万字详谈——Linux之文件管理
  • 虚幻引擎结构之UWorld
  • 16.1、网络安全风险评估过程