流媒体协议基础
流媒体协议基础
流媒体协议基础
一般分为指令控制(tcp传输),和数据传输(udp传输)两类协议,分开工作。
流媒体协议标准
- GB28181 适用大规模监控系统。使用SIP作为信令协议,通过RTP/RTCP实现流控制和反馈。除了规范流媒体传输,还做了通道信息级联同步等规范定义。
流媒体协议分类
常见的有
- RTMP (应用层,绑定依赖浏览器的Flash播放器插件。可用于推、拉流)
- RTSP(应用层,控制协议,播放、暂停、终止等指令控制。可用于推、拉流)参考
- RTP (传输层,数据包传输) rfc规范
- RTCP (传输层,控制协议,数据包流量控制)
- http-flv (基于html5技术,无需浏览器插件。使用http请求+flv格式容器。用于拉流播放)
- ws-flv (同http-flv,传输改用websocket)
- webrtc (谷歌主导技术)
- hls (苹果主导技术,切片有延时。用于拉流播放)
- onvif 私有协议
控制协议内容基本基于纯文本,抓包可以看到。
常见概念
- SIP Session Initiation Protocol,信令协议,控制协议。包含SIP域(SIP Domain)和SIP ID(SIP Identifier)用户或设备唯一标识符。
- SDP SDP(Session Description Protocol,会话描述协议)是一种用于描述多媒体会话的协议。它提供了一种标准化的格式,用于描述会话的媒体类型、网络传输参数和其他相关信息。SDP通常与SIP协议一起使用,作为SIP消息中传输会话相关信息的一部分。
- SSRC Synchronization Source Identifier,同步信源标识符。指产生媒体流的信源,例如麦克风、摄像机、RTP混合器等。它通过RTP报头中的一个32位数字SSRC标识符来标识,而不依赖于网络地址,接收者将根据SSRC标识符来区分不同的信源,进行RTP报文的分组。
容器格式
- .ts文件 Transport Stream传输流 文件层层嵌套,包含TS层(Transport Stream)、PES层(Packet Elemental Stream)、ES层(Elementary Stream)。
此外还有flv、mp4等。
压缩编解码
比如h264、h265等。
sip信令简单抓包实验
在服务器上使用tcpdump
抓包
1
2
3
4
5
## 捕获SIP协议流量,通常使用5060/5061端口
sudo tcpdump -i eth0 -w capture.pcap port 5060 or port 5061
## 如果还需要捕获RTP流量(媒体流)。假设RTP流量使用30000-40000范围的UDP端口
sudo tcpdump -i eth0 -w capture.pcap port 5060 or port 5061 or udp portrange 30000-40000
使用Wireshark
分析抓包文件,在过滤框中输入SIP和RTP相关的过滤条件。
1
2
3
4
5
# 查看所有 SIP 消息
sip
# 根据Call-ID过滤。会话id在整个交互流程中唯一
sip.Call-ID == "your_caller_id_here"
参考
本文由作者按照 CC BY 4.0 进行授权