基於開源Red5搭建的視頻直播平臺

開始以前,爲了便於你們瞭解Red5,此處引用網絡文字,非原創

 

引言

流媒體文件是目前很是流行的網絡媒體格式之一,這種文件容許用戶一邊下載一邊播放,從而大大減小了用戶等待播放的時間。另外經過網絡播放流媒體文件時,文件自己不會在本地磁盤中存儲,這樣就節省了大量的磁盤空間開銷。正是這些優勢,使得流媒體文件被普遍應用於網絡播放。git

流媒體服務器是經過創建發佈點來發布流媒體內容和管理用戶鏈接的。流媒體服務器可以發佈從視頻採集卡或攝像機等設備中傳來的實況流,也能夠發佈事先存儲的流媒體文件,而且發佈實況流和流媒體文件的結合體。一個媒體流能夠由一個媒體文件構成,也能夠由多個媒體文件組合而成,還能夠由一個媒體文件目錄組成。github

Flash Media Server,簡稱 FMS,是 Flash 你們庭裏的一員,被稱爲是目前開發 Web 音視頻應用程序(好比,視頻聊天室、視頻會議系統、播客系統、音視頻留言等等)的最方便最快捷的解決方案。也在 web 應用程序開發上有着愈來愈普遍的應用。固然 FMS 這種優良功能並非免費提供給廣大用戶的,幾千美金每一個點的價格讓不少開發人員望而卻步。因而,你們開始嘗試尋找一種更合適的解決方案,開源的 Red5 便成爲了人們的新寵。web

Red5 是一個採用 Java 開發的開源的 Flash 流媒體服務器,功能上與 FMS 相似。它支持:把音頻(MP3)和視頻(FLV)轉換成播放流;錄製客戶端播放流(只支持 FLV);共享對象;現場直播流發佈;遠程調用。Red5 使用 RSTP 做爲流媒體傳輸協議,包括在線錄製,Flash 流媒體播放,在線聊天,視頻會議等一些基本功能。國內外基於 Red5 的流媒體應用產品也在不斷推廣,例如在線視頻會議 Openmeeting,大型 Flash 網遊功夫之王 2。瀏覽器

流媒體簡介

隨着 Internet 發展,單純的文字和圖形已經遠遠不能知足需求,而是逐漸向聲音和視頻等多媒體方向過渡。目前在網絡上傳輸音頻/視頻等多媒體文件時,通常有下載和流式傳輸兩種選擇。因爲音頻/視頻包含大量的數據,因此他們佔據的存儲空間都比較大,在帶寬受限的網絡環境中下載可能要耗費數分鐘甚至數小時,因此這種處理方法的延遲很大。若是換用流式傳輸的話,聲音、影像、動畫等多媒體文件將由專門的流媒體服務器負責向用戶連續、實時地發送,這樣用戶能夠沒必要等到整個文件所有下載完畢,而只須要通過幾秒鐘的啓動延時就能夠了,當這些多媒體數據在客戶機上播放時,文件的剩餘部分將繼續從流媒體服務器下載。tomcat

流(Streaming)是近年在 Internet 上出現的新概念,其定義很是普遍,主要是指經過網絡傳輸多媒體數據的技術總稱。流媒體包含廣義和狹義兩種內涵:廣義上的流媒體指的是使音頻和視頻造成穩定和連續的傳輸流和回放流的一系列技術、方法和協議的總稱,即流媒體技術;狹義上的流媒體是相對於傳統的下載-回放方式而言的,指的是一種從 Internet 上獲取音頻和視頻等多媒體數據的新方法,它可以支持多媒體數據流的實時傳輸和實時播放。經過運用流媒體技術,服務器可以向客戶機發送穩定和連續的多媒體數據流,客戶機在接收數據的同時以一個穩定的速率回放,而不用等數據所有下載完以後再進行回放。服務器

因爲受網絡帶寬、計算機處理能力和協議規範等方面的限制,要想從 Internet 上下載大量的音頻和視頻數據,不管從下載時間和存儲空間上來說都是不太現實的,而流媒體技術的出現則很好地解決了這一難題。目前實現流媒體傳輸主要有兩種方法:順序流(progressive streaming)傳輸和實時流(realtime streaming)傳輸,它們分別適合於不一樣的應用場合。網絡

順序流傳輸

順序流傳輸採用順序下載的方式進行傳輸,在下載的同時用戶能夠在線回放多媒體數據,但給定時刻只能觀看已經下載的部分,不能跳到還沒有下載的部分,也不能在傳輸期間根據網絡情況對下載速度進行調整。因爲標準的 HTTP 服務器就能夠發送這種形式的流媒體,而不須要其餘特殊協議的支持,所以也經常被稱做 HTTP 流式傳輸。順序流式傳輸比較適合於高質量的多媒體片斷,如片頭、片尾或者廣告等。併發

實時流傳輸

實時流式傳輸保證媒體信號帶寬可以與當前網絡情況相匹配,從而使得流媒體數據老是被實時地傳送,所以特別適合於現場事件。實時流傳輸支持隨機訪問,即用戶能夠經過快進或者後退操做來觀看前面或者後面的內容。從理論上講,實時流媒體一經播放就不會停頓,但事實上仍有可能發生週期性的暫停現象,尤爲是在網絡情況惡化時更是如此。與順序流傳輸不一樣的是,實時流傳輸須要用到特定的流媒體服務器,並且還須要特定網絡協議的支持。性能

Red5 概述

Red5 是一個採用 Java 開發開源的 Flash 流媒體服務器。免費開源使軟件更加容易擴展,下載後你能夠對源代碼進行修改;更加經濟,比起 FMS 高昂的費用,Red5 能爲通常的應用節約大筆費用;同時服務器端的 Java 面嚮對象語言比起 FMS 服務器端的 ActionScript2 語言更加成熟。鑑於 Red5 的種種優點,推出不久便被廣大用戶所接受。測試

Red 5 支持:

1. 把音頻(MP3)和視頻(FLV, F4V, MP4, 3GP)轉換成播放流;

2. 錄製客戶端播放流, 把攝像頭,麥克風等傳入的音頻視頻錄製保存到服務器;

3. 共享對象;

4. 現場直播流發佈;

5. 遠程調用;

6. 協議:RTMP, RTMPT, RTMPS, and RTMPE。

 

====================================================================================================

如下內容爲原創

沒有服務器,使用我的筆記本搭建,操做系統:win7 64位 旗艦版

一、安裝jdk1.8,涉及環境變量的配置,請自行百度;

二、下載Red5 Server,下載地址:https://github.com/Red5/red5-server,我下載的是最新的1.0.10版本;

三、直接解壓,文件目錄以下:

四、雙擊運行red5.bat,基於tomcat運行的小窗口能夠先不用管,打開瀏覽器,訪問:http://localhost:5080,若是出現此頁面,則red5 server正常啓動;

五、由於Red5也是基於Flash的,記得將瀏覽器設置爲容許Flash運行;

六、點擊頁面上的Launch a demo,並找到Publisher;

七、鏈接到推流服務器;

八、切換到publish標籤,選擇本身電腦的攝像頭,模擬視頻直播源;

九、選擇好Device以後,點擊Start,會有一個設置的提示框,點擊容許;

十、這個時候咱們在預覽窗口中其實已經能夠看到服務器端的視頻畫面,點擊publish按鈕,就開啓直播了;

 

十一、那如何從客戶端觀看呢?有不少方式,這裏我借用VLC播放器來拉取視頻流進行實時播放,取流地址以下:

這裏的stream1520409915970,能夠理解爲直播的房間號。必須和server端配置的一致。播放效果就是:

十二、經測試,直播存在必定的延遲,且客戶端視頻流的畫面質量有必定程度的損失。固然這只是我的初步測試結果,真正商用的話,應該還有優化的餘地。

1三、能夠在其餘電腦上同步取流實時播放,併發數、服務器性能等未作進一步測試,感興趣的朋友能夠自行測試。

1四、另外推薦你們研究一下Red5 Pro,針對移動端也有解決方案,不過並非免費的。

相關文章
相關標籤/搜索