日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

live555 接收rtsp视频流流程分析

發布時間:2023/12/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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_DATASOURCEprepare之后,執行PLAYER_INIT時,如果發現datasourcertsp流,則進入rtsp模塊。

OpenCore
RTSP模塊實現在Pvrtsp_client_engine_node.cpp中,PVRTSPEngineNode::SendRtspDescribe()描述了連接建立過程中的狀態變化過程。

需要注意的時,opencore在發出OPTION request后,并不會等著收response,而是直接發DESCRIBE request,然后才開始收OPTION responseDESCRIBE 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视频流流程分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。