音视频领域、流媒体领域涉及的协议,逐步了解。
GB/T 28181-202n 笔记
9.1.1 注册和注销 f) 提到了 NAT 穿透的细节
9.2.2.1 中三方呼叫的概念?
MESSAGE 消息头 Content-type 头域为 Content-type: Application/MANSCDP+xml;
9.8 历史音视频的回放,提到 媒体回放控制命令引用 MANSRTSP 协议
实时音视频点播 & 历史音视频回放,是将所有的历史音视频都存下来了吗?
SIP 协议
SIP 会话发起协议(Session Initiation Protocol,缩写SIP),GB28181-2016 中称为“会话初始协议”
SIP 与许多其它的协议协同工作,仅仅涉及通信会话的信令部分(control message)。SIP 报文内容发送会话描述协议(SDP),SDP 协议描述了会话所使用流媒体细节,如:使用哪个 IP 端口,采用哪种编解码器等等。SIP 的一个典型用途是:SIP “会话”传输一些简单的经过报文的实时传输协议流。RTP 本身才是语音或视频的载体。
SIP 同 HTTP 相似并采用了后者的一些设计原则:SIP 报文是人类可读的,并且也是采取请求-应答的流程。
SIP 独立于底层传输协议:使用 UDP 或者 TCP 都可以
SIP is designed to be independent of the underlying transport layer protocol and can be used with UDP, TCP, and SCTP.
不像 HTTP 协议中固定客户端、服务端的角色,SIP 协议要求通信的两端都要实现客户端、服务端的功能。在 SIP 通信中,客户端或服务端的角色仅在 SIP 交易期间持续。
Unlike other network protocols that fix the roles of client and server, e.g., in HTTP, SIP requires both peers to implement both roles. The roles of UAC and UAS only last for the duration of a SIP transaction.
SIP 网络单元:
- 用户代理(User Agent)
- 用户代理客户端 UAC(User Agent Client),创建并发送 SIP 请求
- 用户代理服务端 UAS(User Agent Server),接收处理 SIP 请求,发送 SIP 响应
- 背靠背用户代理 B2BUA
- 代理服务器(Proxy)
- 注册服务器(Register)
SIP 协议详解 ,SIP 会话中 ACK 的作用是什么?如果很重要,为什么不是所有 200OK 之后都有 ACK 确认呢?
SIP 基本注册即采用基于数字摘要的挑战应答式安全技术进行注册, 用户验证机制之挑战应答方式
B2BUA 背靠背 Agent 和 proxy server 代理服务器,在功能上有什么区别?
SDP 协议
SDP 同样基于文本,它的格式异常简单,由多个<类型>=<值>的字符串组成,用于描述会话信息,也用于描述音视频的类型和格式,所需要的带宽、时间范围甚至邮件地址、编码参数等。
<类型>是一个字母,<值>是结构化的文本串,其格式以<类型>而定。
SDP 协议 ,v,o,s,t,m 为必须的,其他项为可选。
v= (协议版本)
o= (所有者/创建者和会话标识符)
s= (会话名称)
t= (会话活动时间)
m= (媒体名称和传输地址)
y= (描述 SSRC 值)国标 28181 之 9.2.2.1 客户端主动发起,小节自定义
f=(描述媒体参数)国标 28181 之 9.2.2.1 客户端主动发起,小节自定义
网络环境
国内的大环境,以大型局域网为主,终端一般都在 NAT 之后:
- 居民楼、办公楼里的笔记本、台式机等
- 和宽带运营商索要动态公网地址
- 移动设备,三家运营商分配给手机卡的都是 10.x.x.x 这类私有地址
- 不知道手机卡能否索要动态公网地址
摄像头如果要用固定公网地址,肯定要增加成本的。设备的数量上去之后,组网方式带来的成本增加还是很恐怖的。
4g 手机卡网络的 NAT 类型?5g 手机卡网络的 NAT 类型?网上没找到开放的测试地址,难道要自己搭建吗?
同一运营商的两个手机(卡)之间能够 ping 通吗?p2p 呢?
能否利用 ipv6 地址呢
ONVIF
onvif 由设备作为服务端,或使用发现代理服务(设备和用户都是客户端)。
从 ONVIF 的官方文档中可以了解到,客户端在 UDP 协议下,向网段内的组播地址 239.255.255.250
,端口 3702
,不断地向四周发送 Probe
消息探针,而网段内的服务器在接收到 Probe
这个探测消息后,通过回复 ProbeMatch
消息让客户端接收,从而让客户端识别到服务器。
Messages are sent over UDP to a standardized multicast address and UDP port number.
WS-Discovery is normally limited by the network segmentation at a site since the multicast packages typically do not traverse routers. Using a Discovery Proxy could solve that problem, but details about this topic are beyond the scope of this document. For more information, see [ONVIF/Discovery] and [WS-Discovery].
单播、组播和广播
Web Services Dynamic Discovery (WS-Discovery)
Discovery Proxy
Managed 模式:即代理模式。Ad hoc 模式有个局限性,只能局限于一个较小的网络。Managed 模式就是为了解决这个问题的,在 Managed 模式下,一个维护所有可用目标服务的中心发现代理(Discovery Proxy)被建立起来,客户端只需要将探测消息发送到该发现代理就可以得到相应的目标服务信息。摘抄来源
发现代理,解决的不仅仅是规模增大的问题,也会降低风险吧。
NAT 穿透
名词解释:
- NAT 是 Network Address Translation 的缩写。为了完成 NAT 设备的完美穿透,让所有组网方式下合法的数据交换都能进行,STUN 技术、UPNP 技术、SBC 技术、TURN 技术等应运而生,通过判断 NAT 类型,采取不同方法甚或需要设置单独的公网服务器完成流媒体数据的分发。
- STUN 技术(Session Traversal Utilities for NAT,NAT 的会话穿越应用程序)
- UPNP 技术(Universal Plug and Play,即插即用)
- SBC 技术(Session Border Controller,会话边界控制器)
- TURN 技术(Traversal Using Relay aroundNAT,NAT 的中继穿越)
- ICE 的全称 Interactive Connectivity Establishment(互动式连接建立)。它跟 STUN 和 TURN 不一样,ICE 不是一种协议,而是一个框架,它整合了 STUN 和 TURN。参考 WebRTC 架构。
- 完全圆锥形 NAT
- 受限圆锥形 NAT
- 端口受限圆锥形 NAT
- 对称 NAT,无法打洞,只能使用代理服务器转发。
所以基于 WebRTC 的产品需要 TURN 服务器:有很多开源的 TURN 服务器,或者使用 TURN 平台即服务(PaaS)提供商的。
名词解释
流媒体技术通常首先以协议的形式展现,对于音视频编码好的文件,经过提取和再封装,被放在协议规定的包格式中,逐次发送到支持该协议的客户端进行播放。
- RTP 是 Real-time Transport Protocol 的简称,实时传输协议。RTP 协议和 RTP 控制协议 RTCP 一起使用,而且它是创建在 UDP 协议 上的。
- 实时传输控制协议(Real-time Transport Control Protocol或RTP Control Protocol或简写RTCP)是实时传输协议(RTP)的一个姐妹协议。协议本身并不传输数据,而是收集相关媒体连接的统计信息,网络应用程序即可利用 RTCP 的统计信息来控制传输的品质。
- RTCP 本身不提供数据加密或身份认证。SRTCP可以用于此类用途。
- WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,WebRTC 利用 RTP 和 RTCP 传输音视频数据。
- 会话描述协议(Session Description Protocol或简写SDP)描述的是流媒体的初始化参数。
- 国标(GB28181) 和 ONVIF
- 开放型网络视频接口论坛(英语:Open Network Video Interface Forum,简称ONVIF),ONVIF 所有的 媒体流传输 都是借助于 RTP/RTSP 实现。
- GB28181,公共安全视频监控联网系统信息传输、交换、控制技术要求,目前有两个版本:GB/T 28181-2016 和 GB/T 28181-2011(已废止)。GB28181 的媒体流传输借助于 RTP/RTSP 实现。
其他的
实时流协议(Real Time Streaming Protocol,RTSP),流数据本身的传输不是 RTSP 的任务。RTSP 通过不同的命令构建完整的控制会话,同时依赖 RTP 和 RTCP 或其他协议传输音视频本身的数据。
推流为将直播内容推送至服务器的过程;拉流为服务器已有直播内容,用指定地址进行拉取的过程。
实时消息协议(英语:Real-Time Messaging Protocol,缩写RTMP),是 Adobe 公司的专有协议,属于 Flash 的一部分。RTMP 协议支持 Push 和 Pull 两种模式。推流为将直播内容推送至服务器的过程;拉流为服务器已有直播内容,用指定地址进行拉取的过程。
除去 RTSP、RTMP 等基于会话的流媒体协议外,许多公司还设计了基于 HTTP 的协议。
HTTP Live Streaming,缩写为 HLS,是由苹果公司提出基于 HTTP 的流媒体网络传输协议。
HLS 协议的一大特点在于,将以往 RTSP、RTMP 等协议中实现复杂的多码率、多音轨的音视频流变得容易,并可以明晰地表达、理解和优化。
与 HLS 同一时期制定的,具备相似特性(基于 HTTP、支持多码率、音视频文件切片)的流媒体协议另有 Adobe 推出的 HDS 和微软推出的 Smooth Streaming,它们与 MPEG-DASH 一道,被称作 Adaptive Bitrate Streaming 技术(码率自适应的流媒体技术)。
Flash Video(简称FLV),是一种网络视频格式,用作流媒体格式。
MPEG-DASH 在 2011 年形成国际标准。微软、高通、谷歌等公司出力甚多,并获得 YouTube、Netflix 等在线视频巨头的倾力支持,在短短几年间已经俨然取代 RTMP,成为应用最广的流媒体协议。苹果还在坚持 HLS 协议,且 DASH 和 HLS 互不兼容。
对等式网络(英语:peer-to-peer, 简称P2P),又称点对点技术
网络摄像机又叫 IP CAMERA (简称IPC)和 NVR(Network Video Recorder) 网络视频录像机。
DTLS 通信协议(Datagram Transport Layer Security,资料包传输层安全),提供 UDP 协议在传输层的发送安全。它能够提供与 TLS 类似的安全保护。DTLS 常用于流媒体。
CDN 是 Content Distribution Network 的缩写
SSRC 同步信源
MANSCDP 协议(监控报警联网系统控制描述协议,Monitoringand Alarming Network System Control Description Protocol),在 GB/T 28181-2016 的附录 A 描述
MANSRTSP 协议(监控报警联网系统实时流协议,Monitoring and Alarming Network System Real-Time Streaming Protocol),在 GB/T 28181-2016 的附录 B 描述
协议应用
关于协议的应用,在《在线视频技术精要》中 4.6.2 协议应用的章节做了描述,可参考。
现代浏览器,将以往由插件提供的功能 收归 浏览器。
海康 sdk 手册笔记
参考《设备网络SDK编程指南(IPC).pdf》,语音对讲 功能只支持 win32 平台:
Windows64 位或者 Linux 系统下无语音对 讲功能。
IPServer 域名解析服务器软件,是收费的吗
用户注册设备:怎么理解以下描述?用户 ID 和用户名不是同一属性吧?
实现用户的注册功能,注册成功后,返回的用户 ID 作为其他功能操作的唯一标识,SDK 允许最大注册用户数为 512 个。网络摄像机和网络球机允许有 16 个注册用户名,而且同时最多允许 128 个用户注册。
软解码和解码卡解码
报警模块:处理设备上传的各种报警信号。报警分为“布防”和“监听”两种方式
实时码流数据 NET_DVR_SetRealDataCallBack
和 实时码流数据(标准码流) NET_DVR_SetStandardDataCallBack
区别是什么?
平台协议
三家运营商都有自己的视频平台:由平台侧提供 sdk 打到设备的固件里,同一套代码通过调整编译参数提供给不同的厂商、不同型号的设备来使用。
大体分为三部分:
- AI 部分 GA1400
- 视频流部分 GB/T 28181
- 自定义的扩展部分,使用 http 或 websocket
阿里、百度等也有视频领域的公共 api
阿里 视频监控 , 什么是视图计算 (aliyun.com)
摄像头、平台、智能设备采集监控流,通过 RTMP 协议推流或者 GB/T28181 国标协议拉流。
网络重放攻击?
工具
OBS 是一个用于录制和进行网络直播的自由开源软件包。OBS 使用 C 和 C++ 语言编写,提供实时源和设备捕获、场景组成、编码、录制和广播。数据传输主要通过实时消息协议(RTMP)完成,可以发送到任何支持 RTMP 的软件,包括 YouTube、Twitch.tv、Instagram 和 Facebook 等流媒体网站。
FFmpeg 是一个开放源代码的自由软件,可以执行音频和视频多种格式的录影、转换、串流功能,包含了 libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及 libavformat——一个音频与视频格式转换库。
VLC 多媒体播放器(英语:VLC media player),最初名为 VideoLAN Client,是 VideoLAN 计划的开放源代码多媒体播放器。