一、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)