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...