live555 接收rtsp视频流流程分析
live555 接收rtsp視頻流流程分析
RTSP交互流程
C表示RTSP客戶端,S表示RTSP服務端
① C->S: OPTIONrequest? ???????//詢問S有哪些方法可用
S->C: OPTION response??????//S回應信息中包括提供的所有可用方法
② C->S: DESCRIBErequest? ???//要求得到S提供的媒體初始化描述信息
S->C: DESCRIBE response????//S回應媒體初始化描述信息,主要是sdp
③ C->S: SETUPrequest? ?????//設置會話屬性,以及傳輸模式,提醒S建立會話
S->C: SETUP response??????//S建立會話,返回會話標識符及會話相關信息
④ C->S: PLAYrequest? ???? ?//C請求播放
S->C: PLAY response????? ?//S回應請求信息
S->C: 發送流媒體數據
⑤ C->S: TEARDOWNrequest????//C請求關閉會話
S->C: TEARDOWN response????//S回應請求
上述的過程是標準的RTSP流程,其中第3步和第4步是必需的。
OpenCore在執行完PLAYER_SET_DATASOURCE,prepare之后,執行PLAYER_INIT時,如果發現datasource是rtsp流,則進入rtsp模塊。
OpenCore的RTSP模塊實現在Pvrtsp_client_engine_node.cpp中,PVRTSPEngineNode::SendRtspDescribe()描述了連接建立過程中的狀態變化過程。
需要注意的時,opencore在發出OPTION request后,并不會等著收response,而是直接發DESCRIBE request,然后才開始收OPTION response和DESCRIBE response。
Live555在RTSPServer.cpp中用RTSPServer::RTSPClientSession::incomingRequestHandler()來處理來自client端的request。
?
?
RTSP源碼接收端使用樣例:
//RtstClientTest.cpp
#include"stdafx.h"
#include"RtspRequest.h"
#include"Rtp.h"
?
RtspRequest g_RtspRequest;
int_tmain(int argc, _TCHAR* argv[])
{
?//接收
? string url ="rtsp://192.168.1.1:554/aacAudioTest";
? string setupName ="aacAudioTest";
? INT rtpPort =8080;
? INT rtcpPort =rtpPort + 2;
? stringsdp;
? INT64sess;
?g_RtspRequest.Open(url.c_str(), "127.0.0.0", 0);
?g_RtspRequest.RequestOptions();
?g_RtspRequest.RequestDescribe(&sdp);
?g_RtspRequest.RequestSetup(setupName.c_str(), transportModeRtpUdp,rtpPort , rtcpPort , &sess);
?g_RtspRequest.RequestPlay();
? Rtp* pRtp = newRtp();
?pRtp->Open("127.0.0.0", rtpPort);
? PBYTE pBuffer =new BYTE[1024*1024*10];
? intiRead;
? INTpayloadType;
? WORDsequenceNumber;
? INT32timeStamp;
? INT32ssrc;
?while(TRUE)
? {
?????iRead = pRtp->Read(pBuffer, 1024*1024*10,&payloadType, &sequenceNumber,&timeStamp, &ssrc);
?????if (iRead > 0)
?????{
?????????// save buff???
?????}
?
? }
? deletepRtp;
?g_RtspRequest.RequestPause();
?g_RtspRequest.RequestTeardown();
?g_RtspRequest.Close();
? delete[]pBuffer;
? return0;
?
}
總結
以上是生活随笔為你收集整理的live555 接收rtsp视频流流程分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【HEVC】目前H265分析软件推荐
- 下一篇: 晋商银行京东金融联名卡怎么领拉杆箱?看完