從程序的結構來看,live項目包括了四個基本庫、程序入口類(在mediaServer中)和一些測試代碼(在testProgs中)。四個基本庫是UsageEnvironment、BasicUsageEnvironment、groupsock和liveMedia。 異步
UsageEnvironment包括抽象類UsageEnvironment和抽象類TaskScheduler,這兩個類用於事件調度,其中包括實現了對事件的異步讀取、對事件句柄的設置及對錯誤信息的輸出等;該庫中還有一個HashTable,這是一個通用的HashTable,在整個項目中均可以使用它,固然該HashTable也是一個抽象類。 函數
BasicUsageEnvironment中的類主要是對UsageEnvironment中對應類的實現。 測試
groupsock,顧名思義,用於數據包的接收和發送,其同時支持多播和單播。groupsock庫中包括了GroupEId、Groupsock、GroupsockHelper、NetAddress、NetInterface等類,其中Groupsock類有兩個構造函數,一個是「for a source-independent multicast group」,另外一個是「for a source-specific multicast group」;而GroupsockHelper類主要用於讀寫Socket。 編碼
liveMedia是很重要的一個庫,其不只包含了實現RTSP Server的類,還包含了針對不一樣流媒體類型(如TS流、PS流等)編碼的類。在該庫中,基類是Medium,層次關係很是清晰。在該庫中,有幾個很重要的類,如RTSPServer、ServerMediaSession、RTPSink、RTPInterface、FramedSource等。 spa
在http://www.live555.com上的相關文檔中提到穿透防火牆的問題,方法是開啓一個HTTP的tunnel,而後咱們能夠在liveMedia庫中找到一個RTSPOverHTTPServer的類,該類解決了這樣的問題。 繼承
mediaServer下的live555MediaServer提供了main函數,DynamicRTSPServer繼承了RTSPServer並重寫了虛函數lookupServerMediaSession。 事件