1. 程式人生 > >Win7(Windows 7)下用VS2013(Visual Studio 2013)編譯crtmpserver

Win7(Windows 7)下用VS2013(Visual Studio 2013)編譯crtmpserver

一.準備工作

1.下載crtmpserver原始碼crtmpserver-centosinit.rar

2.下載並編譯crtmpserver的依賴庫openSSL

本文主要想說明如何編譯crtmpserver,openSSL的編譯過程略,只提供其已經編譯好的標頭檔案和靜態庫。

二.開始編譯

1.解壓crtmpserver-centosinit.rar到E盤,將openSSL的標頭檔案和靜態庫檔案拷貝到E:\crtmpserver-centosinit\3rdparty,如下圖所示。


雙擊E:\crtmpserver-centosinit\builders\VS2010\VS2010.sln,這裡雖然是VS2010.sln,卻預設是由VS2013開啟的。用記事本開啟VS1010.sln,前兩行如下圖所示,說明確實關聯到了VS2013。


那就用VS2013編譯吧,反正也差不多。這個解決方案一共包含了13個專案,如下圖所示。


將編譯的選項設定為Release。

2.將openSSL的標頭檔案和靜態庫檔案新增到13個專案中,最好使用相對路徑,這樣的話專案換到其他目錄也不影響編譯。需要注意的是,相對路徑是相對專案檔案.vcxproj的。如下圖所示。


libeay32.lib和ssleay32.lib已經被原始碼維護者新增到了連結器的附加依賴項,如下圖所示,我們就不需要添加了。


3.在這13個專案中,common、lua和thelib是基礎,crtmpserver是最後需要得到的專案,其他的若干專案是crtmpserver的示例應用。所以需要先編譯common、lua和thelib,然後右鍵解決方案——>重新生成解決方案,幸運的是,編譯過程中並無錯誤,最後在E:\crtmpserver-centosinit\builders\VS2010目錄中生成Release資料夾。但是該Release資料夾中包含了一些編譯生成的中間檔案,雙擊E:\crtmpserver-centosinit\builders\VS2010目錄下的release.bat,可以將這些中間檔案刪除,刪除後的Release資料夾如下圖所示。


三.啟動伺服器(重要)

開啟命令提示符,進行如下圖所示操作來啟動伺服器。


可是伺服器並未啟動,所以有網友反映編譯成功了,但是啟動未看到 go go go (http://ask.csdn.net/questions/72610)。這是因為伺服器沒有配置好,配置檔案crtmpserver.lua是一個Lua指令碼,可用為程式提供靈活的擴充套件和定製功能。

這裡先對crtmpserver.lua做基本的配置,讓伺服器可用啟動,更深入的配置等以後用到了再說。

1.在E:\crtmpserver-centosinit\builders\VS2010\Release中新建log和meida資料夾,將crtmpserver.lua中下圖藍色行改為fileName="./log/crtmpserver",,表示日誌檔案將以crtmpserver為字首,儲存在當前目錄(crtmpserver.exe所在目錄)的log資料夾中,“./”不要也行。


然後將下圖藍色行改為mediaFolder="./media",。


需要說明的是name="flvplayback",,表示伺服器例項的名字,所有的例項都在E:\crtmpserver-centosinit\builders\VS2010\Release\applications目錄中,裡面的每個資料夾表示一個例項。

mediaFolder表示例項的內容存放的位置,可以任意指定。

“aliases”表示別名組,所以在推拉流時,rtmp地址中的用別名組中的任意一個別名,比如說“live”來代替例項名“flvplayback”,可以達到同樣的效果

2.將下圖所示部分註釋掉,註釋方法--[[......]]--,圖中給出的是註釋後的結果。


其他的配置預設,再次通過命令提示符啟動服務,雖然還是失敗,但是有提示出現了,如下圖所示。


根據提示可以看出,應該是9999埠被佔用了,回到crtmpserver.lua,將下圖藍色行的埠改成其他數字,比如說8888。當然,這個錯誤並不是每個人都會遇到,因為這個埠可能沒被佔用。


再次通過命令提示符啟動服務,這次終於啟動成功了,出現了久違的go go go,如下圖所示。


關閉服務很簡單,Ctrl+C即可,再次啟動還是執行指令crtmpserver.exe crtmpserver.lua

四.測試

1.找個.flv格式的視訊放在E:\crtmpserver-centosinit\builders\VS2010\Release\media目錄中,這裡用的是sample.flv。

2.啟動伺服器。

3.啟動VLC播放器,我用的版本是vlc-2.2.4,其他版本為測試。

選擇選單“媒體”——>“流”,在彈出的視窗中選擇“網路”標籤,如下圖所示。


輸入圖中所示的URL地址,然後點選“串流”按鈕,彈出下圖所示視窗。


點選“下一步”按鈕,彈出下圖所示視窗。


勾選“在本地顯示”,點選“下一步”按鈕,彈出下圖所示視窗。


不勾選“啟用轉碼”,這裡不需要轉碼,然後點選“下一步”按鈕,彈出下圖所示視窗。


點選“流”按鈕,開始播放伺服器中的sample.flv,如下圖所示。