1.live555源代碼簡介
liveMedia項目的源代碼包括四個基本的庫,各種測試代碼以及IVE555 Media Server。
四個基本的庫分別是UsageEnvironment&TaskScheduler,groupsock,liveMedia,BasicUsageEnvironment。
UsageEnvironment 和TaskScheduler類用於事件的調度,實現異步讀取事件的句柄的設置以及錯誤信息的輸出。另外,還有一個HashTable類定義了一個通用的 hash表,其它代碼要用到這個表。這些都是抽象類,在應用程序中基於這些類實現自己的子類。
groupsock類是對網絡接口的封裝,用於收發數據包。正如名字本身,Groupsock主要是面向多播數據的收發的,它也同時支持單播數據的收發。Groupsock定義了兩個構造函數
Groupsock(UsageEnvironment& env, struct in_addr const& groupAddr,
Port port, u_int8_t ttl);
Groupsock(UsageEnvironment& env, struct in_addr const& groupAddr,
struct in_addr const& sourceFilterAddr,
Port port);
前者是用於SIM(source-independent multicast)組,後者用於SSM(source-specific multicast)組。groupsock庫中的Helper例程提供了讀寫socket等函數,並且屏蔽了不同的操作系統之間的區別,這是在 GroupsockHelper.cpp文件中實現的。
liveMedia庫中有一系列類,基類是Medium,這些類針對不同的流媒體類型和編碼。
各種測試代碼在testProgram目錄下,比如openRTSP等,這些代碼有助於理解liveMedia的應用。
LIVE555 Media Server是一個純粹的RTSP服務器。支持多種格式的媒體文件:
* TS流文件,擴展名ts。
* PS流文件,擴展名mpg。
* MPEG-4視頻基本流文件,擴展名m4e。
* MP3文件,擴展名mp3。
* WAV文件(PCM),擴展名wav。
* AMR音頻文件,擴展名.amr。
* AAC文件,ADTS格式,擴展名aac。
2.在windows下編譯live555
(1).下載live555,http://www.live555.com/
(2). 編輯 win32config,TOOLS32=C:\Program Files\Microsoft Visual Studio 9.0\VC
即保證這個路徑是你的Vs2008 路徑。
(3). 編輯"LINK_OPTS_0 = $(linkdebug) msvcirt.lib" in win32config to "LINK_OPTS_0 = $(linkdebug) msvcrt.lib",由於編譯器所要LINK的運行庫不一樣了
(4). 修改groupsock/makefile.head,替換"INCLUDES = -Iinclude -I../UsageEnvironment/include" 爲"INCLUDES = -Iinclude -I../UsageEnvironment/include -DNO_STRSTREAM".
(5). 運行genWindowsMakefiles.cmd 生成VS能夠編譯的*.mak文件
(6). 將以下內容保存爲live/compile.bat
call "C:\Program Files\Microsoft Visual Studio 9\VC\vcvarsall.bat"
cd liveMedia
nmake /B -f liveMedia.mak
cd ../groupsock
nmake /B -f groupsock.mak
cd ../UsageEnvironment
nmake /B -f UsageEnvironment.mak
cd ../BasicUsageEnvironment
nmake /B -f BasicUsageEnvironment.mak
cd ../testProgs
nmake /B -f testProgs.mak
cd ../mediaServer
nmake /B -f mediaServer.mak
有關這一點來說,建議把vs2008的編譯環境加入到環境變量中,那麼以後需用命令行編譯程序都可行了,可以參考http://blog.chinaunix.net/u3/94873/showart_1907792.html的前部分設置VS2008的環境設置。
(7). 在命令行下運行compile.bat,就會看到很多編譯過程出現在CMD中了。
以上的編譯並不是DEBUG模式,要調試時,應先在win32config加入一行"NODEBUG=1"
進行編譯後,可以在要調試的程序路徑下輸入如:C:\works\VCCode\video\live555-latest\live\testProgs>devenv openRTSP.exe,這樣就會把相關的調試環境搭建起來進行調試了。