Live555學習之(一)-------Live555的基本介紹
前一陣子,因為專案需要,研究了一下Live555開源框架,研究的不是很深入,基本上把Live555當做API用了一下,但是畢竟也是本人看的第一個開源框架,在此記錄總結一下。
Live555是一個實現了RTSP協議的開源流媒體框架,Live555包含RTSP伺服器端的實現以及RTSP客戶端的實現。Live555可以將若干種格式的視訊檔案或者音訊檔案轉換成視訊流或者音訊流在網路中通過RTSP協議分發傳播,這便是流媒體伺服器最核心的功能。Live555支援以下幾種檔案格式的流化:
- A MPEG Transport Stream file (with file name suffix ".ts")
- A Matroska or WebM file (with filename suffix ".mkv" or ".webm")
- An Ogg file (with filename suffix ".ogg", "ogv", or ".opus")
- A MPEG-1 or 2 Program Stream file (with file name suffix ".mpg")
- A MPEG-4 Video Elementary Stream file (with file name suffix ".m4e")
- A H.264 Video Elementary Stream file (with file name suffix ".264")
- A H.265 Video Elementary Stream file (with file name suffix ".265")
- A VOB video+audio file (with file name suffix ".vob")
- A DV video file (with file name suffix ".dv")
- A MPEG-1 or 2 (including layer III - i.e., 'MP3') audio file (with file name suffix ".mp3")
- A WAV (PCM) audio file (with file name suffix ".wav")
- An AMR audio file (with file name suffix ".amr")
- An AC-3 audio file (with file name suffix ".ac3")
- An AAC (ADTS format) audio file (with file name suffix ".aac")
經過Live555流化後的視訊流或者音訊流可以通過實現了標準RTSP協議的播放器(如VLC)來播放。
下載原始碼後解壓得到live目錄,目錄結構如下,lib目錄是編譯後產生的目錄:
主要使用其中的四個目錄,分別對應Live555的四個庫:
UsageEnvironment目錄,生成的靜態庫為libUsageEnvironment.lib,這個庫主要包含一些基本資料結構以及工具類的定義
groupsock目錄,生成的靜態庫為libgroupsock.lib,這個庫主要包含網路相關類的定義和實現
liveMedia目錄,生成的靜態庫為libliveMedia.lib,這個庫包含了Live555核心功能的實現
BasicUsageEnvironment目錄,生成的靜態庫為libBasicUsageEnvironment.lib,這個庫主要包含對UsageEnvironment庫中一些類的實現
mediaServer目錄中包含Live555流媒體伺服器的標準示例程式,執行live555MediaServer.exe後出現如下介面:
在mediaServer目錄中放入你的媒體檔案,如test.mp3,在VLC播放器中選擇“媒體”-“開啟網路串流”,然後輸入 rtsp://127.0.0.1:8554/test.mp3 就可以播放剛才的mp3檔案了。
proxyServer目錄中是live555實現的代理伺服器的例子程式,這個程式可以從其他的流媒體伺服器(如支援RTSP的攝像機)取實時的視訊流然後轉發給多個RTSP客戶端,這個程式很有用,可以轉發攝像機的實時視訊流。
testProgs目錄中包含很多的測試例子程式,我經常用的是testOnDemandRTSPServer.cpp,我是從這個例子程式開始學習Live555的。