Live555 是一個爲流媒體提供解決方案的跨平臺的C++開源項目,它實現了對標準流媒體傳輸協議如RTP/RTCP、RTSP、SIP等的支持。Live555實現了對多種音視頻編碼格式的音視頻數據的流化、接收和處理等支持,包括MPEG、H.263+、DV、JPEG視頻和多種音頻編碼。同時由於良好的設計,Live555非常容易擴展對其他格式的支持。目前,Live555已經被用於多款播放器的流媒體播放功能的實現,如VLC(VideoLan)、MPlayer。
從今天開始我們將一起學習live555源碼,第一步就是學習編譯live555源碼。雖然網上有不少已經配置好的工程,但自己動手編譯卻有另外一番樂趣。
Live555源代碼包括四個基本的庫,分別是UsageEnvironmentr、groupsock、liveMedia、BasicUsageEnvironment。Media Server(服務器程序)和各種測試代碼。
本文使用vc2010編譯環境。
一、獲得live555源碼
1. live555官網http://www.live555.com/
2. 從csdn下載獲得http://download.csdn.net/detail/ithzhang/7654535。
解壓後的源碼如下圖所示:
包括上述四個庫和mediaServer服務器程序,以及其他的測試代碼。
二、創建工程
1. 打開vc2010,創建win32控制檯應用程序,項目名稱爲BasicUsageEnvironment,指定新解決方案的位置,解決方案名稱live555,如下圖:
2.點擊確定,在此後的下一步配置中,按下圖配置:
3.添加新建項目,選擇win32控制檯項目,項目名稱爲UsageEnvironment。
4.點擊確定和下一步後,按下圖配置
5. 重複3的步驟,添加groupsock 、liveMedia項目。
6. 添加mediaServer工程,並按如下配置:
三、將源文件加入工程
1. 打開源碼目錄,將BasicUsageEnvironment、UsageEnvironment、groupsock、mediaServer、liveMedia目錄下的include目錄和cpp文件拷貝到上述創建的對應的工程目錄下。BasicUsageEnvironment拷貝後的效果如下圖:
2、接着就是將這些文件添加進對應項目,將每個工程下的cpp添加到源文件篩選器下,頭文件則添加到頭文件篩選器下。添加後工程結構圖:
3.添加依賴頭文件
方法一、把該項目需要的其他庫的頭文件拷貝到該工程的include目錄下。
方法二、在屬性->C/C++->常規->附加包含目錄填寫需要包含的頭文件路徑(推薦)
..\BasicUsageEnvironment\include
..\groupsock\include
..\liveMedia\include
..\UsageEnvironment\include
BasicUsageEnvironment添加後效果如下圖:
添加完畢後,即可編譯生成對應lib。
4. 爲MediaServer添加依賴庫。
MediaServer需要依賴上述工程生成的lib,所以需要將以上生成的lib拷貝到MediaServer工程目錄下。有種方式:
一、使用#pragma
在MediaServer的ive555MediaServer.cpp添加如下代碼:
#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "BasicUsageEnvironment.lib")
#pragma comment (lib, "groupsock.lib")
#pragma comment (lib, "liveMedia.lib")
#pragma comment (lib, "UsageEnvironment.lib")
二、項目->屬性->配置屬性->連接器->輸入->附加依賴項
UsageEnvironment.lib;
liveMedia.lib;
groupsock.lib;
BasicUsageEnvironment.lib;
Ws2_32.lib
此後即可成功編譯並生成MediaServer.exe。
運行後的效果如下圖:
5. 使用VLC測試LIVE555服務器。
此時RTSP服務器已經開始運行,等待來自客戶端的請求。可以使用VLC作爲客戶端進行測試。
一、準備一個錄像文件, 如aa.264,放在MediaServer.exe同一目錄。(沒有錄像文件,點此處)。
二、 打開網絡串流,輸入本機ip+錄像文件名。如rtsp://192.168.0.106/aa.264
配置好的vc2010工程請點擊此處下載。
2014、7、20於浙江杭州