天天看點

live555學習筆記(二)

live555學習筆記之源碼結構分析

live項目包括了四個基本庫、程式入口類(mediaServer)和一些測試代碼(testProgs)。

四個基本庫:

1、UsageEnvironment

環境類,用于錯誤資訊的輸出

包括三個抽象類UsageEnvironment、TaskScheduler、HashTable

UsageEnvironment、TaskScheduler用于事件排程,其中包括實作了對事件的異步讀取、對事件句柄的設定及對錯誤資訊的輸出等;

HashTable

LIVE555内部實作了一個簡單哈希表類BasicHashTable。在LIVE555中,有很多地方需要用到該哈希表類。如:媒體檔案名與MediaSession的映射,SessionID與ClientSession的映射,UserName和Password的映射等。

2、BasicUsageEnvironment

主要是對UsageEnvironment中對應類的實作

包含具體環境類和具體TaskScheduler類。UsageEnvironment用于對錯誤資訊的處理,BasicUsageEnvironment類用于以控制台方式輸出錯誤資訊。是以想要以其他方式輸出錯誤資訊的類,可以從UsageEnvironment派生。BasicTaskSchedule類繼承自TaskScheduler抽象類,用以定義具體的排程政策。任何基于LIVE555的應用程式均需要定義自己的BasicEnvironment和TaskScheduler庫。如果建立視窗應用程式,在重定義TaskScheduler時,需要與圖形環境自己的事件處理架構內建。BasicTaskSheduler使用select模型實作事件的擷取和處理。如果想使用更高效的IOCP模型,可以定義自己的BasicTaskScheduler類。BasicTaskScheduler内部有一個循環,循環讀取隊列中的消息并處理。整個基于BasicTaskScheduler的程式隻有一個線程驅動。

3、groupsock

對各種socket操作的封裝,用于收發資料。主要面向多點傳播,但也可以進行單點傳播的收發資料,僅支援UDP,不支援TCP

顧名思義,用于資料包的接收和發送,其同時支援多點傳播和單點傳播。

groupsock庫中包括了GroupEId、Groupsock、GroupsockHelper、NetAddress、NetInterface等類

其中Groupsock類有兩個構造函數,一個是“for a source-independent multicast group”,另一個是“for a source-specific multicast group”;而GroupsockHelper類主要用于讀寫Socket。

4、liveMedia

其不僅包含了實作RTSP Server的類,還包含了針對不同流媒體類型(如TS流、PS流等)編碼的類。在該庫中,基類是Medium,層次關系非常清晰。

在該庫中,有幾個很重要的類,如RTSPServer、ServerMediaSession、RTPSink、RTPInterface、FramedSource等。

SDP

    SDP是Session Description Protocol的縮寫。是一個用來描述多媒體會話的應用層協定,它是基于文本的,用于會話建立過程中的媒體類型和編碼方案的協商等。用戶端會通過DESCRIBE指令請求查詢指定檔案的媒體資訊。有不明白的可以看下上一篇介紹RTSP、RTP、RTCP的文章。

附:

RTSP伺服器執行個體live555源代碼分析

http://hi.baidu.com/studyarea/item/68b7ab3ff02bb8be134b1433

複制去Google翻譯 翻譯結果 FramedSource

繼續閱讀