背景
由于工作需要键耕,研究了一下關(guān)于移動(dòng)端直播的實(shí)現(xiàn)方式“送海現(xiàn)在市場(chǎng)上有一些比較成熟的嵌入微信或者其他移動(dòng)平臺(tái)的直播系統(tǒng)屿储,但大多收費(fèi)較貴项玛,處于經(jīng)濟(jì)原因還是決定自己研究一下肉微。
思路
- 首先我們需要了解一下直播的概念與整體架構(gòu)
簡(jiǎn)要的概況一下業(yè)務(wù)流程:
- 直播人員通過(guò)usb Camera等物理設(shè)備講數(shù)據(jù)流傳入電腦
- 電腦采集數(shù)據(jù)以RTSP,RTMP,HLS傳輸協(xié)議發(fā)送到服務(wù)器
RTSP協(xié)議由于一般使用于專(zhuān)線(xiàn)抱环,直播容易遺漏和丟失數(shù)據(jù)敬拓,所以一般不采用老速;RTMP是主流的直播傳輸協(xié)議,延遲低畏腕,可用于pc和移動(dòng)端(不適合蘋(píng)果)缴川;HLS就是專(zhuān)門(mén)為適應(yīng)蘋(píng)果的一種直播協(xié)議,但它的延遲比RTMP要高描馅,在移動(dòng)web端一般采用HLS協(xié)議把夸。 - 直播服務(wù)器。
主流服務(wù)器功能
圖片截自上面那個(gè)鏈接的博文铭污。這里想說(shuō)一下的是nginx-rtmp是大家普遍推薦使用的服務(wù)器,但我沒(méi)有使用恋日,有機(jī)會(huì)可以試試,網(wǎng)上也有很多用它搭建流媒體環(huán)境的優(yōu)秀博文嘹狞。red5出來(lái)了很久岂膳,是開(kāi)源項(xiàng)目,在Git上都可以下載磅网,但更新的速度比較慢谈截,維護(hù)的人也比較少,是java寫(xiě)的涧偷。 - 服務(wù)器采集了流媒體數(shù)據(jù)根據(jù)需要選擇分層CDN節(jié)點(diǎn)簸喂,然后推送到觀眾的移動(dòng)設(shè)備上。
- 關(guān)于直播平臺(tái)搭建燎潮,還有一種WebRTC技術(shù)喻鳄,源自谷歌,還飽受爭(zhēng)議跟啤,但我覺(jué)得未來(lái)會(huì)有希望诽表。
操作
- red5有很多版本,到現(xiàn)在隅肥,在Git上最新的就是v1.0.7竿奏,根據(jù)后綴不同,是不同的包腥放。以-RELEASE結(jié)尾的是編譯好來(lái)的server泛啸,里面有開(kāi)啟服務(wù)器的文件red5.bat或red5.sh等其他功能文件。在這里以windows系統(tǒng)為例秃症。以-server-master命名的是server的maven工程候址,里面也有編譯好的命令直接打開(kāi)服務(wù)器,但也包括src种柑。
-
打開(kāi)服務(wù)器后岗仑,在瀏覽器中輸入127.0.0.1:5080,會(huì)出現(xiàn)
red5首頁(yè),這說(shuō)明安裝是成功的聚请。
-
點(diǎn)擊左下角的install會(huì)出現(xiàn)報(bào)錯(cuò)荠雕,也無(wú)法加載本地的demo
Install無(wú)法顯示稳其,后臺(tái)也會(huì)有報(bào)錯(cuò),我記得好像是找不到某個(gè)方法炸卑,查閱了很多資料也沒(méi)有解決這個(gè)問(wèn)題既鞠。大多數(shù)人說(shuō)這個(gè)和版本有關(guān)系,也可能和JDK有關(guān)系盖文,官方給的是JDK1.6嘱蛋。
-
回到首頁(yè)點(diǎn)擊左下角的demo
demo -
再點(diǎn)擊OFLA Demo中的任意一個(gè),點(diǎn)擊
JWPlayer demo 出現(xiàn)
[JWPlayer demo](http://127.0.0.1:5080/oflaDemo/index.html) - 而點(diǎn)擊Classic demo出現(xiàn)
Classic demo
oflaDemo
點(diǎn)擊文件名即可播放播放文件成功
能夠出現(xiàn)以上畫(huà)面都說(shuō)明你成功生成了流媒體文件,也可以在VLC media player中打開(kāi)流媒體文件VLC 打開(kāi)流媒體
輸入rtmp://localhost:1935/oflaDemo/Avengers2.mp4或者不加端口rtmp://localhost/oflaDemo/Avengers2.mp4(默認(rèn)端口是1935不是50807蹬痢)桐玻,可以打開(kāi)流媒體文件VLC 播放 - 注意由于各種原因很多同志是無(wú)法實(shí)現(xiàn)以上功能的,給一篇博文荆萤,按照他的方法可以解決無(wú)法找到本地demo的錯(cuò)誤。
http://blog.csdn.net/oldmtn/article/details/47110351我用的是v1.0.7然后替換了博主說(shuō)的那個(gè)wepapp所有文件才出現(xiàn)的classic Demo铣卡。估計(jì)大家用這個(gè)方法也是可以得链韭。
- 構(gòu)建直播平臺(tái)。找一個(gè)可以檢測(cè)到電腦物理設(shè)備(攝像頭和音頻)的瀏覽器煮落,我試過(guò)chrome不行敞峭,會(huì)顯示no viedo和no audio ,最好用的是firefox,打開(kāi)http://localhost:5080/demos/publisher.html,設(shè)置(選擇)好viedo和audio并start蝉仇,再到server中connect即可出現(xiàn)即時(shí)畫(huà)面與音頻旋讹,效果還行有一定延遲。
效果圖 - 裝red5-HLS插件并編譯轿衔。待更
博主在寫(xiě)完這些之后沉迹。。發(fā)現(xiàn)red5官方回復(fù)叫我不要用red5-HLS插件了害驹。鞭呕。轉(zhuǎn)戰(zhàn)red5Pro..傷心一把淚。下面對(duì)red5進(jìn)行一個(gè)小概括宛官。葫松。
之所以red5的hls插件基本無(wú)法使用,有兩個(gè)原因底洗,red5官方轉(zhuǎn)戰(zhàn)pro了腋么,這個(gè)已經(jīng)棄置三年沒(méi)更新。亥揖。第二珊擂,它是一個(gè)maven項(xiàng)目,在執(zhí)行install時(shí)下載依賴(lài)包會(huì)有四五個(gè)無(wú)法下載,因?yàn)榕渲玫牡刂芬呀?jīng)失效未玻,找了很久發(fā)現(xiàn)外國(guó)友人給了一些下載鏈接直接下載這幾個(gè)缺失的jar包下載在下面的link ,除此之外灾而,就算配好了插件,貌似運(yùn)行也會(huì)有些bug無(wú)法修復(fù)扳剿。所以已經(jīng)不推薦使用了旁趟。
red5 pro 搭建比較簡(jiǎn)單,而且在安卓和ios上都有demo庇绽,用起來(lái)會(huì)比較容易上手锡搜。red5pro 在git上下載地址Red5 Pro Server Examples,然而我想做的是移動(dòng)H5平臺(tái)的直播,官方還沒(méi)有支持瞧掺,但是有一個(gè)插件Red5 Pro HTML5 HLS Example,是用node.js執(zhí)行并建立的例子耕餐,我試了一下有報(bào)錯(cuò)就沒(méi)有繼續(xù)了,大家可以嘗試辟狈。
我沒(méi)有繼續(xù)的原因肠缔。。哼转。red5pro是需要付費(fèi)的明未,它只支持并發(fā)在10人以下的流媒體推送,2000人的是需要每月55刀壹蔓,由于沒(méi)有時(shí)間繼續(xù)研究就沒(méi)再試那個(gè)H5的demo了趟妥,大家如果只是想搭直播玩玩還是可以嘗試的。
博主已經(jīng)轉(zhuǎn)戰(zhàn)到nginx rtmp model + hls 了佣蓉,這個(gè)搭流媒體服務(wù)器也很簡(jiǎn)單披摄,并且采集端也有很多開(kāi)源軟件,比如obs和easydawin,但這都是C的工程勇凭,接下來(lái)等我有時(shí)間會(huì)寫(xiě)寫(xiě)這個(gè)搭建的過(guò)程疚膊。