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