流媒體之老黃談流媒體服務與視頻網站研發

今天應公司領導的要求做完了來公司的第三個項目流媒體服務與視頻網站開發,接近年終,博客停更了好久,心裏一直不甘,上週六和北理工的好兄弟安老闆定下誓言,每天保證五篇技術博客的更新量,年終上線三大社區。作爲第一篇我來和大家分享下我做流媒體搭建和視頻網站研發的一些心得體會。

在這裏插入圖片描述

流媒體服務器

服務器
流媒體服務器我們首先要明白他的本質是什麼,還是回到我之前說的,服務器,單純的服務器就是一臺機器,就像我上邊的這張圖片,大家可以把它看做就是一臺電腦主機,寡而無味。但在我們“耳聞”中聽到的往往是什麼應用服務器,數據庫服務器,文件服務器,流媒體服務器,Web服務器等等,區別是什麼呢?就是在該服務器裝了擁有哪些特殊功能的應用,譬如你在這臺機器上搭建了FTP,那麼他就可以叫做FTP文件服務器,你在上邊安裝了流媒體相關的軟件那他就可以叫流媒體服務器,當然爲什麼可以安裝這些呢?就是我在之前的博客提到的虛擬化和容器技術(感興趣的可以去翻看我的老黃談容器的博客),服務器機房我每天都接觸而且也多次參與過機房服務器的搭建擴展工作,所有這些東西彙集起來我們就稱之爲雲計算,所以流媒體服務器也是雲計算的一種只不過功能用於處理流媒體文件。作爲視頻流技術的核心,無論是我們接觸的各大直播網站像Bilibili,虎牙直播,鬥魚直播,還是現在流行的移動終端APP像抖音,快手,流媒體服務器都扮演着至關重要的角色,市面上我們大多接觸的是第三方的流媒體服務,像我之前開發過的基於環信SDK的直播類APP,原理便是通過第三方接口進行主播推流和用戶拉流的技術。但我在這邊博文中要說的是如何搭建我們自己的流媒體服務器在下邊的模塊概述中我將詳細介紹具體步驟。

直播和點播的原理

直播和點播是完全不同的兩種視頻技術,直播講究實時性,我們需要實時的處理視頻流數據,根據支持顯示的格式,甚至需要實時的進行視頻流的轉碼和解碼,對服務器而言直播不會佔用存儲,當主播推流結束的時候整個直播也就宣告結束了。點播則不同,點播處理的是固定格式的視頻文件,我們往往是自己手中擁有一個某種格式的譬如MP4,FLV,M3U8的固定大小的視頻文件,然後在具體的應用中由UP主上傳到流媒體服務器,我們在網站或者APP中點播完成的。所以我們可以這樣理解直播是網紅主播的技術,比如你昨天看到的LPL賽區的AllStar,點播則是UP主上傳視頻的技術例如B站某位定時上傳VLog的女裝大佬。在流媒體數據傳輸方面直播需要終端實時進行視頻推流,在推流的過程中實現視頻轉碼,同時生成拉流的URL,點播則不同,我們只需要將視頻文件放到固定位置,然後通過配置靜態服務器進行訪問就可以了。

強大的轉碼工具和前端組件實現

在用Nginx搭建流媒體服務器的過程中主要用到的是包含rtmp模塊的軟件,首先需要下載nginx。在nginx官網上下載的nginx是不帶rtmp模塊的,所以在http://nginx-win.ecsds.eu/download/中下載nginx 1.7.11.3 Gryphon.zip,該版本的nginx包含rtmp組件,通過rtmp組件,才能提供流媒體服務,使nginx成爲rtmp流媒體服務器。具體安裝配置我不在多說比較簡單,大家也可以百度。這裏重點說下ffmpeg,這一個功能強大的視頻流轉換工具,你可要將固定格式的視頻文件進行轉換,也可以將終端攝像頭的實時畫面進行轉換(親測可用),但在轉換之前必須將Nginx啓動,因爲我們在轉換命令中會生成基於本地IP的URL。當然Nginx只是其中的一種你也可以用微軟的IIS或者Apache進行搭建,詳細流程不在概述。前端實現因爲我搭建的是RTMP流媒體服務所以用到了Video.js這個組件,當然國產的CKPlayer也不錯(API比較齊全),作爲有過Android開發經驗的我前端開發不要太簡單,其實配合關係型數據庫進行界面設計,我們完全可以做出可以媲美任何一個我們熟知的視頻網站的效果,後續我也將在我的柯小胖二次元社區網站進行實踐,感興趣的可以關注我的博客動態。

聊聊Nginx

在這裏插入圖片描述
Nginx這裏引用百度百科的一段話:“Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫爲俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發佈於2004年10月4日。其將源代碼以類BSD許可證的形式發佈,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4發佈。Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特點是佔有內存少,併發能力強,事實上nginx的併發能力在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。”總結來說就是小而強大,其採用的異步單進程方式遠勝過老牌Web服務器Apache同步多進程的併發處理能力。在當下的分佈式集羣中Nginx主要有以下幾點核心功能:1、動靜分離。動靜分離往往是動態文件以及業務邏輯代碼交由應用服務器,Nginx負責處理靜態文件。 2、負載均衡指的是動態文件靜態文件都在應用服務器,Nginx通過反向代理接受客戶請求,然後根據算法或者配置好的權重進行請求的轉發(Hash算法)。3、 針對不同的應用提供不同映射的URL。

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