公司項目需求,最近在學習流媒體方面的知識,瞭解到live555可以將視頻,音頻流化,通過rtsp協議傳輸,正符合公司項目的要求。
網上看了幾篇關於如何在VS2010下編譯live555的博客,但是在編譯過程中還是遇到了很多問題,浪費了很多時間,現在把自己的編譯過程整理下來,希望能給其他人提供一點幫助,讓他們少走一點彎路。
-----------------------------------------------------------------------------------
1.參考博客
http://www.cnblogs.com/skyseraph/archive/2012/04/11/2442840.html
http://blog.csdn.net/lf8289/article/details/7785898
特別感謝這兩位的博客,講的很詳細!!!
2.live555介紹
Live555 是一個爲流媒體提供解決方案的跨平臺的C++開源項目,它實現了對標準流媒體傳輸協議如RTP/RTCP、RTSP、SIP等的支持。Live555實現了對多種音視頻編碼格式的音視頻數據的流化、接收和處理等支持,包括MPEG、H.263+、DV、JPEG視頻和多種音頻編碼。同時由於良好的設計,Live555非常容易擴展對其他格式的支持。目前,Live555已經被用於多款播放器的流媒體播放功能的實現,如VLC(VideoLan)、MPlayer。(摘自百度百科:live555)
3.live555源碼下載
live555官網提供了整套源碼供我們下載,參考,我們下載live555-latest.tar.gz即可。
http://www.live555.com/liveMedia/public/
4.lib編譯
(1)打開VS2010,新建一個解決方案,此處我命名爲myLive555,在該解決方案下新建BasicUsageEnvironment,groupsock,liveMedia,UsageEnvironment四個工程,應用類型爲靜態庫
(即生成的是lib動態鏈接庫,我們也可以在工程名右擊->屬性->配置屬性->常規->項目默認值->配置類型中配置這個屬性)。
(2)將源碼對應目錄下的文件複製到對應目錄下(*.cpp,*.c,*.hh,*.h以及include目錄),我們可以使用控制檯的命令去完成複製工作,這樣比較省事。
指令格式:copy源目錄(文件) 目標路徑
然後將對應的文件添加到對應的項目目錄(*.c,*.cpp添加至源文件,*.hh,*.h添加至頭文件)
(3)分別對四個工程做以下配置
設置動態鏈接庫的輸出屬性,屬性->配置屬性->常規->輸出目錄,設置爲..\outFile,他生成的lib文件將保存在上級目錄的outFile文件夾下
導入頭文件,屬性->配置屬性->C/C++->附加包含目錄。
BasicUsageEnviroment除了需要引入自己的include文件夾下的文件外,同時還需要引入groupsock、UsageEnvironment文件夾下的include文件。
groupsock需要引入的文件爲:自己include下的文件,BasicUsageEnvironment、UsageEnvironment文件夾下的include文件。
liveMedia需要引入的文件爲:自己include下的文件,BasicUsageEnvironment、groupsock、UsageEnvironment文件夾下的include文件。
UsageEnvironment需要引入的文件爲:自己include下的文件,BasicUsageEnvironment、groupsock文件夾下的include文件。
(4)分別編譯4個工程,我們可以在outFile下找到編譯生成的四個動態鏈接庫。
5.mediaServer編譯
mediaServer是一個支持rtsp協議傳輸的服務程序,他生成一個exe可執行程序。
(1)在myLive555下創建mediaServer工程,程序類型爲控制檯應用程序(win32),並把源碼中的文件拷貝到對應的目錄下。
(2)將mediaServer設置成啓動項目(右擊解決方案->屬性->通用屬性->啓動項目)
(3)添加頭文件,在mediaServer目錄下創建一個文件夾include,將其他4個工程下的所有頭文件拷貝到這個include文件夾下(*.hh,*.h,包括這四個工程下的include文件夾下的內容),設置附加頭文件目錄。
(4)將生成的動態鏈接庫拷貝到..\Debug下(..\Debug需要mediaSever編譯過一次纔會生成,不管編譯正確與否)。
(5)設置引用的庫目錄。
(6)添加相關的依賴項Ws2_32.lib;BasicUsageEnvironment.lib;groupsock.lib;liveMedia.lib;UsageEnvironment.lib;
(7)編譯完成後編譯運行即可看到效果啦。
打開Debug下的mediaServer.exe,可以開到如下,說明成功了。
6.使用VLC流媒體視頻播放器測試
找一個MP3,mkv等格式的文件,放在Debug目錄下,與mediaServer.exe在同一個目錄下面。
-----------------------------------------------------------------------------------
至此,在VS2010下編譯live555就成功了,我們也可以通過局域網內的其他計算機使用vlc播放服務端的視頻。
如果想要編譯好的庫文件,請猛擊這裏
如果想要編譯好的整個工程,請猛擊這裏