Windows10系統中用VS2019編譯live555

一、Win10(64位)系統中,首先下載live555源碼:

live555下載地址:http://www.live555.com/liveMedia/public/

其中264文件夾下是264格式的測試文件,點擊【live555-latest.tar.gz】進行下載,下載的是一個壓縮包,解壓:

 

這裏給出live555壓縮文件的百度網盤下載鏈接:

鏈接:https://pan.baidu.com/s/1axLGSAlOhFMtOg_NiQTd0g 
提取碼:mkhu 

 二、在VS2019中創建 BasicUsageEnvironment、UsageEnvironment、groupsock、liveMedia4個項目:

2.1 打開VS2019,選擇【創建新項目】:

2.2 在 語言處選擇 C++,選擇【Windows 桌面嚮導】,單擊【下一步】:

2.3.1 輸入項目名稱 BasicUsageEnvironment,解決方案名稱可以任意填,這裏填寫MyLive555,點擊【創建】:

2.3.2 在彈出的Windows桌面項目窗口中的 應用程序類型中 選擇 【靜態庫(.lib)】,其他選項 中 勾選【空項目】,點擊【確定】:

2.3.3 過程如下圖:

2.3.4 創建結果在【解決方案資源管理器】中,如下圖所示:

2.4 添加 UsageEnvironment 項目:

2.4.1 選擇【文件】 --【添加】--【新建項目】:

2.4.2 同樣選擇【Windows桌面嚮導】 ,點擊【下一步】:

2.4.3  項目名稱輸入 UsageEnvironment ,點擊【創建】:

2.4.4 在彈出的Windows桌面嚮導 中的 應用程序類型中 選擇 【靜態庫(.lib)】,其他選項 中 勾選【空項目】,點擊【確定】:

2.4.5 創建之後的結果如下圖:

2.5 用同樣的方法 添加 groupsock 項目,在最後彈出的Windows桌面嚮導 中的 應用程序類型中 選擇 【靜態庫(.lib)】,其他選項 中 勾選【空項目】:

2.6 用同樣的方法 添加 liveMedia 項目,在最後彈出的Windows桌面嚮導 中的 應用程序類型中 選擇 【靜態庫(.lib)】,其他選項 中 勾選【空項目】:

2.7 結果如下圖:

至此,在MyLive555解決方案下有4個項目,分別是 BasicUsageEnvironment、UsageEnvironment、groupsock、liveMedia。

三、在VS2019中創建 mediaServer項目:

3.1 同樣的方法,在VC2019中依次點擊【文件】--【添加】--【新建項目】,選擇【Windows桌面嚮導】,項目名稱 填寫mediaServer,點擊【創建】按鈕,在彈出的 Windows桌面項目中,應用程序類型 選擇 【控制檯應用程序(.exe)】,其他選項 勾選 【空項目】,點擊【確定】按鈕:

3.2 結果如下圖所示:

現在 在 解決方案'MyLive555' 下共有5個項目,與下載的源碼中的庫文件名相對應:

四、將源文件加入工程:

4.1 將 下載下來的BasicUsageEnvironment 中的源文件加入vS2019中對應的BasicUsageEnvironment工程中:

4.1.1 首先查看在下載的Live555源碼中的 BasicUsageEnvironment 下的一些文件:

include中的文件: 

 

4.1.2 在VS2019中的 BasicUsageEnvironment 項目處單擊鼠標右鍵,選擇 【在文件資源管理器中打開文件夾】:

4.1.3 【在文件資源管理器中打開文件夾】的結果如下圖:

 

4.1.4 將 4.1.1中  BasicUsageEnvironment 目錄下的include目錄、cpp文件、c文件、.hh和.h文件拷貝到4.1.3中打開的工程目錄下:

 

複製好後的  BasicUsageEnvironment工程目錄文件夾如上圖。

4.2 用同樣的方法將UsageEnvironment、groupsock、liveMedia、mediaServer目錄下的include目錄、cpp文件、c文件、.hh和.h文件拷貝到對應的工程目錄下:

 

 

liveMedia下的方法:liveMedia下的文件較多,複製過程中先在 下載的liveMedia文件夾中Ctrl+A全部選中文件,再按住Ctrl鍵點擊一下4個文件,

這樣就把剩餘的文件全部選中,再進行復制操作。 

五、 將每個工程中複製好的文件添加進對應的工程中:

首先將每個工程下的 include下的頭文件 添加到 頭文件篩選器下,再將 .cpp、.c、.hh 和 .h  文件 添加到 源文件篩選器下。

5.1 對 BasicUsageEnvironment 工程進行的操作:

5.1.1 在VS2019中 BasicUsageEnvironment 工程下面的 【頭文件】處單擊右鍵,選擇【添加】-->【現有項】:

5.1.2 選擇之前複製過來的 BasicUsageEnvironment 文件夾下 的 include文件夾下的所有文件,點擊【添加】:

5.1.3 這樣對應的頭文件就被添加進來了;

 

5.1.4 對在VS2019中 BasicUsageEnvironment 工程下面的 【源文件】處單擊右鍵,選擇【添加】-->【現有項】:

5.1.5 選擇 之前複製過來的 BasicUsageEnvironment 文件夾下 除了include文件夾下、 .vcxproj、 .filters和  .user文件之外的 所有 .cpp、.c、.hh 和 .h  文件,點擊【添加】:

5.1.6 VS2019中BasicUsageEnvironment項目添加完畢後的結果如下圖:

5.2 按照同樣的方法 將其他4個工程 複製好的文件添加進對應的工程中:

liveMedia中 添加的項目較多,可參考4.2中的liveMedia下的方法。

mediaServer下沒有include目錄,直接選擇.hh文件添加進頭文件,.cpp文件添加進源文件,如上圖所示。

六、爲每個項目添加依賴頭文件(這只是其中的一種參考方法):

6.1 以BasicUsageEnvironment項目爲例:

6.1.1 在vs2019中的BasicUsageEnvironment項目處單擊鼠標右鍵,選擇【屬性】:

6.1.2 在BasicUsageEnvironment屬性頁的 【配置屬性】--【常規】--【輸出目錄】中填寫

$(SolutionDir)$(Configuration)\lib\

未修改前默認的輸出目錄是

$(SolutionDir)$(Configuration)\

 結果如下圖所示:

(注意)這裏的lib文件夾會在後來第七步的Debug過程中在Debug文件夾下自動生成,這樣填寫完全是爲了最後mediaServer的屬性頁的【鏈接器】--【常規】--【附加庫目錄】中方便。

通過點擊【輸出目錄】右側對應的 倒三角按鈕選擇<編輯...>,可以看到對應的輸出目錄:

6.1.3 在BasicUsageEnvironment屬性頁的【C/C++】--【常規】--【附加庫目錄】中輸入:

..\BasicUsageEnvironment\include;..\groupsock\include;..\liveMedia\include;..\UsageEnvironment\include

(將這4個全部包含只是爲了方便,相互之間的關係可以不用考慮了)

結果:

6.1.4 點擊【附加包含目錄】那行 最右側的 倒三角型按鈕,選擇<編輯...>:

6.1.5 在彈出的 附加包含目錄面板中  勾選 從父級或項目默認設置繼承:

連續點擊【確定】返回即可 。

6.2 採用同樣的方法將剩餘的UsageEnvironment、groupsock和liveMedia這3個項目進行設置:UsageEnvironment項目:

 

6.3 groupsock項目:

 

6.4 liveMedia項目:

6.5.1 mediaServer項目中的屬性頁的 【配置屬性】--【常規】--【輸出目錄】不用改寫,默認即可:

6.5.2 mediaServer項目中的屬性頁的 【C/C++】--【常規】--【附加包含目錄】中同樣輸入

..\BasicUsageEnvironment\include;..\groupsock\include;..\liveMedia\include;..\UsageEnvironment\include

6.5.3 別忘記 勾選 從父級或項目默認設置繼承:

6.5.4 從mediaServer屬性頁的【鏈接器】--【常規】--【附加庫目錄】填入

$(SolutionDir)$(Configuration)\lib\

這個目錄就是前面4個工程設置的【配置屬性】 --【常規】--【輸出目錄】,同樣別忘記 勾選 從父級或項目默認設置繼承:

6.5.5 從mediaServer屬性頁的【鏈接器】--【常規】--【輸入】填入

UsageEnvironment.lib
liveMedia.lib
groupsock.lib
BasicUsageEnvironment.lib
Ws2_32.lib

一定要有Ws2_32.lib,否則編譯生成時會報錯,依次點擊【確定】 返回即可。

七、分別編譯生成 :

先編譯 BasicUsageEnvironment、groupsock、liveMedia、UsageEnvironment 這四個工程,最後再編譯 mediaServer 這個工程,注意是 mediaServer是最後再編譯的。

在vs2019中對應的項目處單擊鼠標右鍵,選擇【生成】:

生成過程中:

7.1 BasicUsageEnvironment生成成功:

 

7.2 groupsock遇到問題:

 主要有2個錯誤和1個警告:

錯誤1:

error C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.See online help for details.

錯誤2: 

error C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings

警告1: 

\source\repos\MyLive555\groupsock\GroupsockHelper.cpp(840): warning C4244: “=”: 從“time_t”轉換到“long”,可能丟失數據

改正錯誤的方法:更改預處理定義:

VS2019中groupsock處單擊鼠標右鍵,選擇【屬性】,【C/C++】-->【預處理器】-->【預處理器定義】中增加:

_CRT_SECURE_NO_WARNINGS
_WINSOCK_DEPRECATED_NO_WARNINGS

依次單擊【確定】,返回即可。對於警告,暫時還無法處理 。

在VS2019中groupsock工程處單擊鼠標右鍵選擇【重新生成】:發現生成成功,但是警告還是存在。

7.3 liveMedia遇到問題: 也有錯誤和警告,採用與7.2同樣的方法解決:

 生成成功:

但是2個警告還在:

C:\Users\Wenxi\source\repos\MyLive555\liveMedia\H264or5VideoStreamFramer.cpp(670): warning C4018: “<”: 有符號/無符號不匹配
C:\Users\Wenxi\source\repos\MyLive555\liveMedia\OggFileSink.cpp(228): warning C4334: “<<”: 32 位移位的結果被隱式轉換爲 64 位(是否希望進行 64 位移位?)

 7.4 UsageEnvironment生成成功:

7.5 mediaServer生成遇到2個錯誤:

在mediaServer【屬性】,【C/C++】-->【預處理器】-->【預處理器定義】中增加:

_CRT_SECURE_NO_WARNINGS

重新生成成功:

 

八、測試:

8.1 在VS2019中mediaServer項目處單擊鼠標右鍵,選擇【設爲啓動項目】:

8.2 重新生成mediaServer:

8.3 在VS2019中,按下鍵盤中的F5 開始調試,可以看到彈出的mediaServer.exe命令行窗口:

8.4 在VS2019的【解決方案資源管理器】 中的 mediaServer工程處 單擊鼠標右鍵,選擇 【在文件資源管理器中打開文件夾】,

將測試文件 test.264 複製到打開的文件夾中:

 test.264可在第一部分提到的llive555官網下載,現給出h264文件的百度網盤下載鏈接:

鏈接:https://pan.baidu.com/s/1lA37_sKzoTacYZE31xWpIw 
提取碼:mqe1 
8.5 打開VLC播放器,選擇【媒體】--【打開網絡串流】,在【網絡】下面的請輸入網絡URL中輸入8.3步驟mediaServer.exe命令行窗口中的第4行 的格式 ,rtsp://192.168.1.6/<filename>,在這裏輸入 rtsp://192.168.1.6/test.264

rtsp://192.168.1.6/<filename>的意思:前面表示rtsp協議,中間的是ip地址,後面的是文件名稱,

VLC播放器可在VLC官網上下載,現給出百度網盤下載鏈接:

鏈接:https://pan.baidu.com/s/1DjwmGHr6hZ-Ecun_A0itAA 
提取碼:u5yp 

點擊【播放】 ,結果如下圖:可以正常播放測試文件test.264。

 8.6 關掉VLC播放器,關掉mediaServer.exe窗口,在VS2019輸出中:顯示有異常,暫時還無法處理。

0x752EC632 處(位於 mediaServer.exe 中)引發的異常: Microsoft C++ 異常: int,位於內存位置 0x009CCA4C 處。

 9.參考:

https://blog.csdn.net/qq_29350001/article/details/77962082

https://blog.csdn.net/lbc2100/article/details/80744888

https://blog.csdn.net/rznice/article/details/51657593 

https://www.jianshu.com/p/c48ecd92c692

注意: BasicUsageEnvironment、groupsock、liveMedia、UsageEnvironment這4個工程的屬性 中的【配置屬性】--【常規】--【項目默認值】--【配置類型】中的 都是 靜態庫(.lib)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章