live555開源RTSP流媒體解決方案說明
liveMedia 專案(http://www.live555.com/)的原始碼包括四個基本的庫、測試程式碼及Media Server。 四個基本庫分別是:UsageEnvironment&TaskScheduler、groupsock、liveMedia、BasicUsageEnvironment。
(1) UsageEnvironment 和TaskScheduler類,用於事件排程,實現非同步讀取事件的控制代碼的設定、錯誤資訊輸出。還有一個HashTable類,定義了一個通用的hash表。這些都是抽象類,在程式中實現自己的子類。
(2) groupsock類,是對網路介面的封裝,用於收發資料包。主要面向多播資料的收發,同時也支援單播資料的收發。
(3) liveMedia庫,是Live555最重要的模組。該模組聲明瞭一個抽象類Medium,其他所有類都派生自該類,下面簡要介紹這些類:
? RTSPClient:該類實現RTSP請求的傳送和響應的解析,同時根據解析的結果建立對應的RTP會話。
1) MediaSession:用於表示一個RTP會話,一個MediaSession可能包含多個子會話(MediaSubSession),子會話可以是音訊子會話、視訊子會話等。
2) RTCPInstance:該類實現RTCP協議的通訊。
3) Source和Sink:Source抽象了資料來源,比如通過RTP讀取資料。Sink是資料消費者的抽象,比如把接收到資料儲存到檔案,該檔案就是一個 Sink。資料的流動可能經過多個Source和Sink。MediaSink是各種型別的Sink的基類,MediaSource是各種型別 Source的基類,各種型別的流媒體格式和編碼的支援即是通過對這兩個類的派生實現的。Source和Sink通過RTP子會話 (MediaSubSession)聯絡在一起。
(4) BasicUsageEnvironment 是UsageEnvironment 和TaskScheduler類的一個基本實現。
(5) 測試程式碼,在testProgram目錄下,比如openRTSP等,這些程式碼有助於理解liveMedia的應用。
(6) Media Server是一個純粹的RTSP伺服器。支援多種格式的媒體檔案:
* TS流檔案,MPEG傳輸流檔案,副檔名 ts
* MPEG-1 or 2 Rogram (audio+video)流檔案,副檔名 mpg
* MPEG-4視訊基本流檔案,副檔名 m4e
* H.264 視訊基本流檔案,副檔名 .264
* DV視訊檔案,副檔名 .dv
* MP3檔案,副檔名 mp3
* WAV檔案(PCM),副檔名 wav
* AMR音訊檔案,副檔名 amr
* AAC檔案,ADTS格式,副檔名 aac