生活随笔
收集整理的這篇文章主要介紹了
RTSP协议分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
RTSP協議
目錄
FFmpeg源碼對應?錄RTSP協議概述RTSP協議與HTTP協議區別推流過程 推流詳細過程 第?步:OPTION 查詢服務器端可??法第?步:ANNOUNCE 發送媒體描述信息第三步:SETUP建?RTSP會話第四步:RECORD請求傳送數據第五步: RTP數據推送第六步:TEARDOWN關閉會話,退出 推流過程總結拉流過程 拉流詳細過程 第?步:查詢服務器端可??法第?步:DESCRIBE得到媒體描述信息第三步:SETUP建?RTSP會話第四步:PLAY請求開始傳送數據第五步: RTP數據傳送播放中第六步:TEARDOWN關閉會話,退出 總結
1. FFmpeg源碼對應?錄
rtsp.c 是總??,推流拉流都是該?件rtspenc.c:推流的時候使?rtspdec.c:拉流的時候使?
2. RTSP協議概述
RTSP 很詳細的英??檔 https://blog.csdn.net/u012519333/article/details/52746375RTSP(Real-Time Stream Protocol )是?種基于?本的應?層協議,在語法及?些消息參數等??,RTSP協議與HTTP協議類似。RTSP被?于建?的控制媒體流的傳輸,它為多媒體服務扮演“?絡遠程控制”的??,對流媒體提供了諸如暫停,快進等控制。盡管有時可以把RTSP控制信息和媒體數據流交織在?起傳送,但?般情況RTSP本身并不?于轉送媒體流數據。媒體數據的傳送可通過RTP/RTCP等協議來完成。?次基本的RTSP操作過程是: ?先,客戶端連接到流服務器并發送?個RTSP描述命令(DESCRIBE)。流服務器通過?個SDP描述來進?反饋,反饋信息包括流數量、媒體類型等信息。客戶端再分析該SDP描述,并為會話中的每?個流發送?個RTSP建?命令(SETUP),RTSP建?命令告訴服務器客戶端?于接收媒體數據的端?。流媒體連接建?完成后,客戶端發送?個播放命令(PLAY),服務器就開始在UDP上傳送媒體流(RTP包)到客戶端。在播放過程中客戶端還可以向服務器發送命令來控制快進、快退和暫停等。最后,客戶端可發送?個終?命令(TERADOWN)來結束流媒體會話
3. RTSP協議與HTTP協議區別
RTSP引?了?種新的?法,?如DESCRIBE、PLAY、SETUP 等,并且有不同的協議標識符,RTSP為rtsp 1.0,HTTP為http 1.1;HTTP是?狀態的協議,?RTSP為每個會話保持狀態,有session的概念;RTSP協議的客戶端和服務器端都可以發送Request請求,?在HTTPF 協議中,只有客戶端能發送Request請求。在RTSP協議中,載荷數據?般是通過帶外?式來傳送的(除了交織的情況),及通過RTP協議在不同的通道中來傳送載荷數據。?HTTP協議的載荷數據都是通過帶內?式傳送的,?如請求的??數據是在回應的消息體中攜帶的。RTSP使?ISO 10646(UTF-8) ?不是ISO 8859-1,以配合當前HTML的國際化;RTSP協議使用554端口,http使用80端口。RTSP使?URI請求時包含絕對URI。?由于歷史原因造成的向后兼容性問題,HTTP/1.1只在請求中包含絕對路徑,把主機名放?單獨的標題域中;
4. 推流過程
1. 推流詳細過程
1. 第?步:OPTION 查詢服務器端可??法
C->S:OPTION request,詢問S有哪些?法可?
S->C:OPTION response,S回應信息的public頭字段中包括提供的所有可??法
2. 第?步:ANNOUNCE 發送媒體描述信息
C->S:ANNOUNCE request,客戶端發送媒體描述信息給服務器
S->C:ANNOUNCE response,S回應媒體描述信息,并返回了Session ID
3. 第三步:SETUP建?RTSP會話
C->S:SETUP request,通過Transport頭字段列出可接受的傳輸選項,請求S建?會話
其中client_port=31590-31591含義為: RTP客戶端發送端口為 31590RTCP客戶端發送端口為 31591 S->C:SETUP response,S建?會話,通過Transport頭字段返回選擇的具體轉輸選項,并返回建?的Session ID;
其中client_port=31590-31591;server_port=59472-59473含義為 客戶端發送到服務器,RTP端口是: 31590(C) -> 59472(S)客戶端發送到服務器,RTCP端口是: 31591(C) -> 59473 (S) 例如RTP包信息:
C->S:SETUP request,通過Transport頭字段列出可接受的傳輸選項,請求S建?會話(重復setup步驟,建立音頻會話) 其中,streamid=0表示建立video會話,streamid=1表示建立audio會話
S->C:SETUP response,S建?會話,通過Transport頭字段返回選擇的具體轉輸選項
4. 第四步:RECORD請求傳送數據
C->S:RECORD request,C向S請求發送數據
S->C:RECORD response,S回應該允許的信息
5. 第五步: RTP數據推送
C->S:發送流媒體數據,通過RTP協議傳送數據視頻數據
音頻數據
6. 第六步:TEARDOWN關閉會話,退出
C->S:TEARDOWN request,C請求關閉會話
S->C:TEARDOWN response,S回應該請求
5. 推流過程總結
6. 拉流過程
1. 拉流詳細過程
1. 第?步:查詢服務器端可??法
C->S:OPTION request,詢問S有哪些?法可?
S->C:OPTION response,S回應信息的public頭字段中包括提供的所有可??法
2. 第?步:DESCRIBE得到媒體描述信息
C->S:DESCRIBE request,要求得到S提供的媒體描述信息
S->C:DESCRIBE response,S回應媒體描述信息,?般是sdp信息
3. 第三步:SETUP建?RTSP會話
C->S:SETUP request,通過Transport頭字段列出可接受的傳輸選項,請求S建?會話(視頻)
S->C:SETUP response,S建?會話,通過Transport頭字段返回選擇的具體轉輸選項
和推流不同點在于拉流ssrc是具體值, 推流是000000
C->S:SETUP request,通過Transport頭字段列出可接受的傳輸選項,請求S建?會話(音頻)
S->C:SETUP response,S建?會話,通過Transport頭字段返回選擇的具體轉輸選項
4. 第四步:PLAY請求開始傳送數據
C->S:PLAY request,C請求S開始發送數據
S->C:PLAY response,S回應該請求的信息
5. 第五步: RTP數據傳送播放中
S->C:發送流媒體數據,通過RTP協議傳送數據ssrc就是在setup返回的ssrcvideo的ssrc來?服務器,audio的ssrc也是來自服務器
audio
6. 第六步:TEARDOWN關閉會話,退出
C->S:TEARDOWN request,C請求關閉會話
S->C:TEARDOWN response,S回應該請求
7. 總結
推拉流過程區別
第?步 option是?樣的
第?步 有區別,推流:ANNOUNCE; 拉流:DESCRIBE
第三步: SETUP
第四步:推流:RECORD;拉流:PLAY
第五步:RTP傳輸,只是?向剛好相反
第六步:TEARDOWN
SSRC由誰來定義,是client還是server?
推流是客戶端??定義的
拉流的時候是服務器發送過來的
session id由誰?來
推流來?server,當C->S ANNOUNCE后,server reply時附帶session id
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生
總結
以上是生活随笔為你收集整理的RTSP协议分析的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。