天天看點

【流媒體】live555—VS2010 下live555編譯、使用及測試

  Live555 是一個為流媒體提供解決方案的跨平台的C++開源項目,它實作了對标準流媒體傳輸協定如RTP/RTCP、RTSP、SIP等的支援。Live555實作了對多種音視訊編碼格式的音視訊資料的流化、接收和處理等支援,包括MPEG、H.263+、DV、JPEG視訊和多種音頻編碼。同時由于良好的設計,Live555非常容易擴充對其他格式的支援。目前,Live555已經被用于多款播放器的流媒體播放功能的實作,如VLC(VideoLan)、MPlayer。

  該項目的源代碼包括四個基本的庫,各種測試代碼以及IVE555 Media Server。四個基本的庫分别是UsageEnvironment&TaskScheduler,groupsock,liveMedia,BasicUsageEnvironment。

0  綜述:利用genWindowsMakefiles.cmd生成VS可用的makefile

1  修改win32config。打開live\win32config檔案,修改如下

TOOLS32 = c:\Program Files\DevStudio\Vc

TOOLS32 =  E:\Program   Files\Microsoft Visual Studio 10.0\VC

将TOOLS32修改為你的VS2010路徑

LINK_OPTS_0   =        $(linkdebug) msvcirt.lib

LINK_OPTS_0   =   $(linkdebug)  msvcrt.lib

編譯器索要的LINK運作庫不同,原本以為可以改為msvcrt100.lib,但沒找着

2  新增Makefile設定。打開live\groupsock\Makefile.head,修改如下

INCLUDES =   -Iinclude -I../UsageEnvironment/include

INCLUDES =   -Iinclude -I../UsageEnvironment/include   -DNO_STRSTREAM

3  建立makefile

  方法:運作live\genWindowsMakefiles.cmd,生成VS能夠編譯的*.mak檔案

4  建立build.bat指令

  建立live\complie.bat,并添加内容如下:

【流媒體】live555—VS2010 下live555編譯、使用及測試
【流媒體】live555—VS2010 下live555編譯、使用及測試

5  開始編譯:(指令行下)執行complie.bat

6  編譯結果:

6-1  在對應的檔案下,如下圖

① 生成與cpp檔案對應的obj檔案(Object File中間代碼檔案,源檔案complie生成,在linux下為o檔案)

② 生成lib庫: libBasicUsageEnvironment.lib、libgroupsock.lib、libUsageEnvironment.lib、libliveMedia.lib

【流媒體】live555—VS2010 下live555編譯、使用及測試

6-2 在對應的檔案下,如下圖:生成對應的obj檔案和exe檔案

【流媒體】live555—VS2010 下live555編譯、使用及測試

說明:若要用VS2010對代碼進行調試跟蹤,那麼編譯時需要做相應修改,修改方法如下:

  方法一:修改*.mak檔案下的NODEBUG 。不帶DEBUG,NODEBUG=1(預設);帶DEBUG,DEBUG=1

  方法二:在win32config加入一行 "NODEBUG=1" (不推薦)

  如果需要自己調試修改源碼,采用編譯器的方式會更好些,這種方式也更利于源碼分析,步驟如下:

0  綜述:分别為每個庫單獨編譯生成lib

1  建立解決方案和lib工程,分别如下:

  完整解決方案的結構如下圖

【流媒體】live555—VS2010 下live555編譯、使用及測試

2  添加頭檔案

  方法1:采用全局包含方式(絕對路徑)。需要添加的include檔案包括

  方法2:采用局部(目前工程)包含方式(相對路徑)。推薦

  描述:工程->屬性->配置屬性->C/C++->正常->附加包含目錄

3  添加檔案。

    在上述lib工程中添加對應的所有的cpp檔案。

4  設定工程的輸出目錄。

  路徑:E:\My Document\Visual Studio 2010\Projects\myLive555\lib

  方法:項目-》屬性-》正常-》輸出目錄

5  編譯解決方案

  結果:在lib目錄下生成 BasicUsageEnvironment.lib、groupsock.lib、UsageEnvironment.lib、liveMedia.lib

1   添加庫

①步驟一:

  方法1. 将編譯生成的四個lib庫庫拷貝到“*:\Program Files\Microsoft Visual Studio 10.0\VC\lib”下面

  方法2. 将編譯生成的四個lib庫庫拷貝到目前工程的cpp檔案下

  方法3. 将編譯生成的四個lib庫作為全局庫的形式添進工程

②步驟二:

  方法1. [菜單]“項目->屬性->配置屬性->連接配接器->輸入->附加依賴項”裡填寫

      “libUsageEnvironment.lib;libliveMedia.lib;libgroupsock.lib;libBasicUsageEnvironment.lib;Ws2_32.lib”

  方法2.  pragma 方式  

說明:如果采用方式二編譯的,那麼此步驟可以省去

①步驟一:将所有的.h檔案放到一起,如myLive555Header裡面,再添加include

  方法1. “項目->屬性->配置屬性->C/C++->正常->附加包含目錄”

  方法2. “工具->選項->項目和解決方案->C++ 目錄”,選擇對應平台,然後添加所需“包括檔案”目錄(此法VS2010不通)

3  測試代碼

  直接用testProgs裡面的例子,我用的是testOnDemandRTSPServer.cpp,測試成功,如下圖

【流媒體】live555—VS2010 下live555編譯、使用及測試

1 把媒體檔案放到和live555MediaServer.exe同一目錄

2 運作live555MediaServer.exe,彈出的dos框裡面有位址,如下圖

【流媒體】live555—VS2010 下live555編譯、使用及測試

3 用戶端,dos下進入到ffplay所在檔案夾下,然後輸入如下指令

    ffplay.exe rtsp://10.120.2.18/<媒體檔案名>

  彈出視訊播放畫面,如下圖

【流媒體】live555—VS2010 下live555編譯、使用及測試

2 打開vlc plaer,打開網絡串流,輸入rtsp,如下圖

【流媒體】live555—VS2010 下live555編譯、使用及測試

3 點播放,開始播放,如下圖

【流媒體】live555—VS2010 下live555編譯、使用及測試

繼續閱讀