流媒体服务器之rtp协议,rtcp协议,rtsp协议,sdp协议,sip协议简析
0.前言
流媒體服務器做音視頻媒體傳輸主要就兩件事:媒體回話協商,媒體數據傳輸;下面這幾種協議就圍繞著這兩個需求而產生。
1.rtp協議
rtp的全稱是實時傳輸協議RTP(Real-time Transport Protocol),是應用層的一個協議,主要用來做音視頻數據傳輸,一般基于udp協議之上,也支持組播,當然基于tcp也是可以的。
用rtp傳輸音視頻數據的一般做法是將音視頻數據前面加上rtp頭封裝成一個個的rtp包,接收端根據接收到的數據在組成按幀標記組成音視頻數據,里面可以是h264或者h265的裸碼流打包,也是是ps格式或者ts格式封裝的數據包,也可以是具有私有頭的第三方封包。
rtp主要說的就是rtp頭,里面比較重要的字段就是sn,一般在一幀數據被拆成多個rtp包,sn就是拆包的順序,從1-32767循環疊加,在一個幀的最后一包會被打上mark標記,以此來區分一幀與另外一幀,用于接收方組成一幀數據包,多路不同的音視頻媒體流使用ssrc源標記區分。
2.rtcp協議
一般提到rtp總會提到rtcp協議,它們是配套的一套協議,國內交通部也有的只要rtp協議,不要rtcp協議的。
RTCP的全稱是實時傳輸控制協議(Real-time Control Protocol),rtp雖然可以傳輸音視頻數據,但是卻不能攜帶其他的信息,比如當前網絡的丟包,延遲,抖動,這些都是保證音視頻數據傳輸質量的重要信息。簡單的說來就是rtp協議負責傳輸音視頻數據,rtcp協議配套傳輸當前傳輸的控制信息。
rtcp主要說的就是兩個東西,sr報告和rr報告,sr報告叫發送報告,隨著發出的rtp包發出,主要告訴接收端,當前的發送情況;rr報告叫做接收報告,在接收到一個數據包后發出,回傳到發送端,主要告訴發送端當前的接收情況;當然還有其他的媒體描述信息,應用程序消息等。
rtp另一個支持的特性就是端口復用,簡單的說就是多路音視頻傳輸使用一個端口接收,多路不同的媒體流使用一個叫做復用id的字段來區分,每一路的muxid不一樣。
3.rtsp協議
我們還知道有個叫rtsp的東西,rtsp全稱叫實時流協議,RTSP(Real Time Streaming Protocol),rtp主要是做音視頻媒體數據的傳輸,rtcp主要做傳輸音視頻媒體數據的控制信息,rtsp則是通過會話協商傳輸的音視頻媒體信息,比如協商兩邊的發送端口,接收端口,音視頻碼流信息,組幀sdp等。
4.sdp協議
好吧,又來了一個sdp協議,準確的說它不是一個協議,而是一個描述信息的格式,作為其他協議協商信息的載體,比如sip,rtsp,私有協商協議等。特別是sip協議的offer-answer模型,完全通過sdp作為回話信息的載體。sdp協議的全稱是回話描述協議,SDP(Session Description Protocol),從字面意思看就知道是描述媒體回話協商的,是一個如http一樣的文本協議,回話交互時通過傳遞一個叫sdp的文本,互相協商收發兩端的媒體信息。
5.sip協議
上面又提到了sip協議,這里順帶說一下,sip協議的全稱是會話初始協議(Session Initiation Protocol)是一種信令協議,最早是用于ip電話交互的,也是一種回話協商協議,不過提供更好的靈活性與交互性,簡單的交互就是invite,200ok,ack三步交互,最重要的就是sip的offer-answer模型,國內的gb28181標準就引用了sip協議作為其回話協商的標準協議。
總結
以上是生活随笔為你收集整理的流媒体服务器之rtp协议,rtcp协议,rtsp协议,sdp协议,sip协议简析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux工具之检测内存泄漏-valgr
- 下一篇: linux命令之查看动态库符号-nm