live555學習階段二之二SDP流程(H264)

2021-08-09 14:44:57 字數 2539 閱讀 4021

live555 採用 標準的dsp 標準作為檔案的描述, 其說明在前文《live555階段一之二sdp協議描述》.

客戶端鏈結進來,請求獲取我多**資源的資料的描述的時候, live555  採用讀取一小段檔案分析生成多**資訊並且傳輸出去。

void rtspserver::rtspclientconnection

::handlecmd_describe(char const* urlpresuffix, char const* urlsuffix, char const* fullrequeststr)

handlecmd_describe 函式 處理客戶端的 「多**資源描述資訊」 請求函式。

session = fourserver.lookupservermediasession(urltotalsuffix);
urltotalsuffix 為 rtsp 鏈結請求的檔案。 根據這個檔案的名稱,搜尋之前註冊的多**。

sdpdescription = session->generatesdpdescription();
那麼重點 就是 詳細分析二:動態生成多**檔案的描述資訊sdp

generatesdpdescription 函式
要想獲取完整的sdp描述 ,有兩種方式 1.必須要先對檔案進行解析。 2.直接寫死不在動態生成。 live555 採用分析檔案的形式。 就必須涉及到sink 、sourceframe 類的相關。

framedsource* inputsource = createnewstreamsource(0, estbitrate);

rtpsink* dummyrtpsink = createnewrtpsink(dummygroupsock, rtppayloadtype, inputsource);
char const* mediatype = rtpsink->sdpmediatype();

unsigned char rtppayloadtype = rtpsink->rtppayloadtype();

char* rtpmapline = rtpsink->rtpmapline();

char const* rangeline = rangesdpline();

char const* auxsdpline = getauxsdpline(rtpsink, inputsource);

該函式為基類 ondemandservermediasubsession 中的 定義的虛函式 其呼叫關係如下

2.3.5.1 啟動資料讀取解析

這裡以後可以改寫為 雙線程通訊的機制 乙個進行迴圈等待 乙個進行解析放入共享記憶體裡面。

等待framesoure 讀取解析編碼sps pps的輸出

2.3.5.2 檢測等待資料是否解析成功

checkforauxsdpline(this);

sprintf(sdplines, sdpfmt,

那麼 getauxsdpline其流程如下

則第二節 動態生成多**檔案的描述資訊sdp的的整體流程如下

Live555學習筆記

live555原始碼 官網 關於live555編譯 linux編譯 1.進入live555目錄 cd live 2.執行genmakefiles檔案 genmakefiles linux 3.makefile windows編譯 無關於入口函式 標頭檔案位置 無 原始檔位置 mediaserver ...

Live555學習筆記

前一陣子,因為專案需要,研究了一下live555開源框架,研究的不是很深入,基本上把live555當做api用了一下,但是畢竟也是本人看的第乙個開源框架,在此記錄總結一下。主要使用其中的四個目錄,分別對應live555的四個庫 usageenvironment目錄,生成的靜態庫為libusageen...

Live555學習之路(一)

我在windows下執行,開始用msys環境編譯,通不過,於是網上找了vs2008編譯環境,lihao nx寫的非常好,我按著步驟,一步就過去了 之後開始了解一些關於rstp與live555方面的資料,huangxinfeng的日誌讓我了解了一些其他關於live555方面的資料 於是就收集了 rts...