服務器搭建七——流媒體服務器架設

寫在最前面的話:前面實驗服務器搭建都很快完成了,但是這個因為涉及很多問題,所以一直到現(xiàn)在才把實驗的過程寫出來。最后測試還是失敗的,中間經歷很多錯誤什么。。。。編譯。。。庫文件。。。nginx。。。redis等等

1.測試環(huán)境

a)安裝在虛擬機上的centos6.9
b)軟件EasyDarwin、helix

2.流媒體傳輸原理

流媒體是指利用流式傳輸技術傳送音頻視頻等連續(xù)媒體數據。核心是串流技術和數據壓縮技術。
特點:連續(xù)性、實時性、時序性
傳輸方式:順序流式傳輸、實時流式傳輸
實現(xiàn)流式傳輸需要緩存機制。這就是我們在看視頻過程中會發(fā)現(xiàn)在我們電腦中緩存文件,并且當你看完一部電影,有些網站實際上就是已經把視頻文件放到你電腦上面了,可以直接播放這個文件。還有些網站的緩存是分成好幾個文件,分段傳輸,但是不是所有的緩存都可以用播放器再次播放的,因為緩存使用的時候有些會丟棄前面的播放的內容。最后我們看到的緩存文件是不完整的。

流媒體原理圖

上圖是在網絡上面找的,主要是解釋流媒體的原理,web服務知識為用戶提供使用流媒體的操作界面,首先通過web頁面操作之后,流媒體播放器與流媒體服務器直接連接,使用RTP/UDP傳輸協(xié)議??刂茀f(xié)議使用RTSP(tcp)協(xié)議554端口,數據的傳輸是基于UDP的RTP。
播放方式:單播(每個客戶端都與流媒體服務器建立單獨的數據通道),廣播(直播節(jié)目,電視廣播,用戶不可以暫??爝M后退,降低了服務器的壓力),組播(將數據包發(fā)送給多個用戶,保證數據包占用最小的帶寬)現(xiàn)在網絡視頻網站,我們感覺自己可以暫停,快進,播放。網絡電視節(jié)目也是可以后退。其實很多采用的都是組播方式。
再就是廣播方式現(xiàn)在比較流行的就是直播平臺實時直播。
流媒體壓縮格式:AVI 、MPEG、REALVIDEO、QuickTime 、ASF和WMV

3. Helix Server的安裝運行(失敗了)

查詢知道Helix Sever軟件在yum列表是沒有的,系統(tǒng)也不會自帶需要下載安裝。
并且是商業(yè)軟件,使用需要付費的,我們測試可以使用試用評估的版本。當然也可以在網絡上找尋免費的軟件,下面是十款免費的:
  1.Free Cast:個使用Java語言編寫的P2P的流媒體開源平臺?!?br>   2.Easy Darwin:是款由國內開源流媒體團隊開發(fā)和維護的開源流媒體平臺框架。
  3.Live555:是個為流媒體提供解決方案的跨平臺的C++開源項目,它實現(xiàn)了對標準流媒體傳輸協(xié)議如RTP/RTCP、RTSP、SIP等的支持。
  4.Red5是個采用Java開發(fā)開源的Flash流媒體服務器。它支持:把音頻(MP3)和視頻(FLV)轉換成播放流;錄制客戶端播放流(只支持FLV);共享對象;現(xiàn)場直播流發(fā)布;遠程調用?!?br>   5.Free UPnP Entertainment Service:是個開源的多平臺通用的即插即用的音頻、視頻的媒體服務器,支持在線對ogg/vorbis,musepack/mpc,FLAC和AAC/MP3進行轉碼到MP3、mp2、wav或者pcm,還包括圖片轉換、縮放等。
  6.Cumulus Server:又名open rtmfp,是個完全開源和跨平臺的可擴展的RTMFP服務器腳本。Cumulus Server在GPL框架下遵循速度、優(yōu)勢、跨平臺、輕量和高質量代碼。
  7.Open AMF:是免費的開放源碼替代Macromedia的遠程Java Flash。這是因為能夠提供作為應用服務,以FlashMX的大媒體的專有解決方案。
  8.cmzacfunmsg:個修改自php-rtmp-client的開源軟件,可以精確模擬flash客戶端向FMS發(fā)送格式化的AMF消息,所以在沒有flash插件的情況下也可以進行與FMS交互。
  9.Open Streaming Server:是個數字媒體傳送器,主要功能包括支持mp4、3gp、WMF和qt文件格式;動態(tài)帶寬適配;負載均衡。
  10.Ffmpeg:是套可以用來記錄、轉換數字音頻、視頻,并能將其轉化為流的開源計算機程序。它包括了目前先的音/視頻編碼庫libavcodec。
當然具體使用什么樣軟件根據自己需要來選擇,本來是希望測試Helix Server但是沒有下載到軟件。到官網查詢安裝時候發(fā)現(xiàn)了如下文件信息:

helix已經更新

如果我在想使用之前的版本安裝測試需要到其他找破解版本的安裝,官網沒有找到安裝下載地方,和免費獲得的地方,發(fā)送的郵件也沒有結果:
現(xiàn)在的

搞了幾天都沒有結果。因此需要測試的朋友可以到其他地方下載;
redhat6
redhat5
這個兩個都是14年的版本還可以下載但是沒有許可信息。rhel6在redhat6或者是centos6中安裝,rhel5在redhat5或centos5安裝。下載之后解壓出來如下圖:

下載后文件

修改下chmod 777 servinst_mobile_linux-rhel6-x86_64.bin的權限
運行安裝./servinst_mobile_linux-rhel6-x86_64.bin

安裝沒有許可文件

沒有授權文件測試。Windows上的測試大家可以自行百度網上有很多文章和版本。最流行的是兩個版本9.0和11.

4. 下面測試安裝EasyDarwin

可以在github上面下載EasyDarwin的代碼,如下圖所示DOWNLOAD ZIP文件

下載EasyDrawin

解壓之后文件如下圖。

解壓文件

下面是編譯腳本,需要賦予執(zhí)行的權限chmod +x Buildit 因為我的系統(tǒng)是64位的所以使用./Buildit x64

編譯
編譯

運行在過程中遇到報錯,是C++11無法識別的問題。原因是我們系統(tǒng)安裝的gcc-4.4.7-18.el6.x86_64 是這個版本需要更新到4.8.2,才可以支持。關于這個安裝浪費了好長時間才安裝上4.8.2的版本。至于怎么安裝這里我就不在說明了。

編譯報錯

最后個人建議在網上找到編譯后版本再部署,其實在github上面也有單獨的版本,如果想用這個一定要搞清楚里面幾個主要組件的關系:
  1. EasyCMS 開源的設備接入與管理服務,具體見https://github.com/EasyDarwin/EasyDarwin/tree/master/EasyCMS
  2. EasyDarwin 核心流媒體服務!具體接口調用方法和流程見:https://github.com/EasyDarwin/EasyDarwin/tree/master/EasyDarwin;
  3.EasyCamera 設備端(攝像機、移動設備、桌面程序)對接EasyDarwin平臺的方案,跨平臺,支持Windows、Linux、ARM,具體接入方法見https://github.com/EasyDarwin/EasyCamera
  4.EasyClient 是EasyDarwin開源流媒體云平臺的客戶端實現(xiàn),項目地址:https://github.com/EasyDarwin/EasyClient 功能包含:Windows、Android、iOS、H5(支持微信)四個部分,其主要功能包括:“云平臺設備列表獲取;設備實時碼流請求與播放;設備云臺控制;設備語音對講;”
  5. EasyNVR 攝像機(通用RTSP、Onvif攝像機)接入服務,具體接入方法見https://github.com/EasyDarwin/EasyNVR;

EasyDrawin結構關系

  EasyDarwin 是流媒體核心服務,需要和HTTP服務一起使用才能實現(xiàn)web頁面訪問的功能,這里是使用nginx。也就是說我們平時網絡上使用視頻播放功能其實都是使用瀏覽器先進入一個頁面,點擊視頻播放之后才會和流媒體服務器通信?;蛘呤褂每蛻舳撕土髅襟w服務器連接。EasyCMS相當于一個設備管理器主要用來管理遠程的設備,和設備怎么接入。既然是流媒體服務器,如果使用的現(xiàn)成的視頻文件存儲在數據庫中就可以了。EasyCamera ,EasyNVR 都是實時獲取遠端視頻信息,遠端設備是通過CMS管理,視頻文件通過EasyDarwin處理,放到數據庫中。EasyClient是一個客戶管理端實現(xiàn)對云平臺的信息管理工作和視頻播放,比如獲取視頻播放列表等等。那么我們如何訪問播放視頻呢,這就是HTTP要實現(xiàn)的了,或者做一個視頻播放客戶端直接和流媒體連接,現(xiàn)在比較火直播平臺,就是通過攝像頭獲取信息,上傳到EasyDarwin處理在經過推流,大家用網頁或者客戶端就可以看到了。當然這里面要實現(xiàn)各種問題,穩(wěn)定性了,并發(fā)了,再就是加入打賞等等,但是整個平臺大致流程是不變的,其他的業(yè)務需要在說吧。
  下面我會以網絡上別人搭建好的nginx和EasyDarwin組合來說明,因我這邊沒有公共網絡IP可以使用,可能無法實現(xiàn)視頻實時獲取,但是可以提供別人做好的APP客戶端,非常簡單的,只需要填下你的IP地址,設置好接口參數就可以。
下載地址:https://pan.baidu.com/s/1sluDEPn#list/path=%2F里面有windows和linux兩個版本。
EasyCameraAPP下載地址:https://fir.im/EasyCamera
EasyClientAPP下載地址:https://fir.im/EasyClient
對于不需要云平臺,只使用EasyDarwin流媒體服務器的用戶,可以只運行其中的EasyDarwin。然后使用EasyPusher進行推流,EasyPlayer、VLC等播放器就可以直接播放。

文件
Paste_Image.png

上面是別人搭建好的內容pdf文檔是說明文檔。但是如果希望自己搭建的話可以,需要自己安裝nginx和redis。然后需要使用源碼進行編譯,我上面自己編譯時候發(fā)現(xiàn)GCC版本不對等等,用了很長時間才弄好。個人建議每個人可以去嘗試編譯,如果不行再使用別人編譯好的這樣是個學習的過程。至于nginx和redis不了解可以自行查找安裝資料。也可以和我一樣為了實驗,使用別人配置好的,按照PDF里面內容運行測試。當然需要使用公網IP測試,可以找個阿里云,騰訊云什么去測試。

5.流媒體的配置文件

主要涉及到文件夾,如果是自行安裝的nginx和redis是你自己安裝的路徑。


解壓后文件

主要的配置文件:


EasyDarwin的配置文件
EasyCMS配置文件

Nginx的配置文件和網頁目錄,當然你自己安裝話目錄肯定不是這個了。具體你可以查看Nginx的文檔去學習下。


nginx

不知道redis是什么的,去自行百度學習吧。你記住他是數據庫就可以了。其他現(xiàn)在不知道沒有關系


redis

需要修改的配置文件內容:
EasyDarwin(easydarwin.xml):
rtsp_port:10554
rtsp_wan_port:10554
Service_lan_port :10008
Service_wan_port:10008
Service_wan_ip:192.168.197.128(或者你的主機公網IP)
EasyDarwin的配置文件
EasyDarwin的配置文件

數據庫連接的設置,如果數據庫不在本地服務器還需要設置好ip,端口,登錄密碼


數據庫部分
EasyCMS

至于nginx和redis的配置文件在這里不用修改,如果是自己安裝請自行按照nginx和redis要求配置就可以了。這里nginx的服務端口是10080

nginx

Redis的端口好要和上面的一直6379。這樣所有的配置文件就都修改好了。

6. 測試

我在測試遇到一個問題就是下面的報錯信息。這個報錯是說沒有找到libpcre.so.3這個庫文件,當我在上找的時候發(fā)現(xiàn)大家大部分都是libpcre.so.1的報錯和我的還是不一樣的,不斷摸索之后,重新安裝庫文件,(重新安裝PCRE)都沒有成功解決。最后找到一篇和我的一樣報錯的文章是說是nginx編譯的版本問題,也有可能我下載這個編譯好的版本和我系統(tǒng)不兼容。因此我后面自行安裝nginx之后在測試http提供服務的問題。再就是我們測試使用apache是否可以。但是數據庫可以不使用redis可以使用mysql等等。

nginx報錯

查詢pcre

ldd $(which /usr/local/src/EasyDarwin/nginx/sbin/nginx)

報錯

運行EasyDarwin,提示一些文件夾不存在,但是服務器已經成功了。
已經成功運行了

運行redis時候也遇到了錯誤,也是庫文件的報錯。因此后面也需要自行安裝測試
redis

運行EasyCMS會報連接數據庫的錯誤。
EasyCMS

雖然EasyDrawin已經可以運行,但是nginx和redis沒有運行好,再就是EasyDrawin只有核心程序沒有后天管理。Helix安裝好之后是有后臺管理的。
如果希望使用在EasyDrawin項目中有演示的網站,可以自行查看
也許你看到這里會很氣憤你寫了半天的文章,最后卻沒有測試成功,那你寫出來干嘛,我想說這個是我學習的一個過程,在這次對流媒體服務器安裝調試的過程中,學會到以下:
1)對于庫文件有了一定的了解(以前只對windows系統(tǒng)有點了解)
2)對于編譯安裝有新的認識
3)再次發(fā)現(xiàn)做些事情,在網絡找資料的能力很重要,使用google搜索可能找的解決方案更好,當然這是個人感覺,至于怎么使用,前面我在之前文章說過翻墻的問題。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容