快速搭建直播服務(wù)大體架構(gòu)srs+ffmpeg+第三方(阿里云,騰訊云等),因?yàn)椴皇菍?zhuān)門(mén)做直播平臺(tái),所以借助第三方平臺(tái)(服務(wù)器,帶寬,cdn可以省不少心)。當(dāng)然如果你想自建一個(gè)視頻直播平臺(tái)也是可以的~~
srs用來(lái)接收從手機(jī)客戶(hù)端推來(lái)的rtmp流,ffmpeg用來(lái)對(duì)視頻進(jìn)行處理,比如增加logo或?yàn)V鏡等,在各種技術(shù)嘗試中,走過(guò)不少?gòu)澛?接收流方面還使用過(guò)netty,nginx-rtmp,流處理方面使用過(guò)javaCV,但效果有些不理想.,java太吃?xún)?nèi)存,cpu。
下面我們來(lái)看一下大致的流程吧
srs的文檔簡(jiǎn)單全面,附上git地址
https://github.com/ossrs/srs/wiki/v2_CN_Home
第一步,獲取SRS。
git clone https://github.com/ossrs/srs
cd srs/trunk
或者使用git更新已有代碼:
git pull
第二步,編譯SRS。
./configure && make
第三步,編寫(xiě)SRS配置文件。
將以下內(nèi)容保存為文件,譬如conf/rtmp.conf,服務(wù)器啟動(dòng)時(shí)指定該配置文件(srs的conf文件夾有該文件)。
# conf/rtmp.conf
listen 1935;
max_connections 1000;
vhost __defaultVhost__ {
}
第四步,啟動(dòng)SRS。
./objs/srs -c conf/rtmp.conf
以上是基本配置,
安裝成功后文件路徑如下
下面是完整配置
listen 1935;
max_connections 1000;
daemon off;
#srs_log_tank console;
srs_log_tank file;
srs_log_file ./objs/srs.log;
http_api {
enabled on;
listen 8085;
crossdomain on;
}
vhost test.xx.com {
dvr {
enabled on;
#dvr_path ./objs/nginx/html/[app]/[stream].[timestamp].flv;
dvr_path ./objs/nginx/html/[stream]/[timestamp].flv;
dvr_plan session;
dvr_duration 30;
dvr_wait_keyframe on;
}
http_hooks {
enabled on;
on_connect http://127.0.0.1:8383/lss/liveItem/LiveItemAction!streamStatus.do ;
on_close http://127.0.0.1:8383/lss/liveItem/LiveItemAction!streamStatus.do ;
on_publish http://127.0.0.1:8383/lss/liveItem/LiveItemAction!streamStatus.do ;
on_unpublish http://127.0.0.1:8383/lss/liveItem/LiveItemAction!streamStatus.do ;
on_dvr http://127.0.0.1:8085/api/v1/dvrs;
#on_play http://127.0.0.1:8085/api/v1/sessions ;
#on_stop http://127.0.0.1:8085/api/v1/sessions ;
}
}
vhost后面要寫(xiě)對(duì)應(yīng)的推流地址或者ip.
http_api 與vhost中的http_hooks為一組配置,當(dāng)srs接收,停止到推流時(shí)會(huì)調(diào)用配置文件中所填地址,并且將各種參數(shù)包括streamId,appid傳到后臺(tái)中。
hvhost中的dvr功能是本地錄制,dvr_plan有多種錄制計(jì)劃
session:按照session來(lái)關(guān)閉flv文件,即編碼器停止推流時(shí)關(guān)閉flv,整個(gè)session錄制為一個(gè)flv。
segment:按照時(shí)間分段錄制,flv文件時(shí)長(zhǎng)配置為dvr_duration和dvr_wait_keyframe。注意:若不按關(guān)鍵幀切flv(即dvr_wait_keyframe配置為off),所以會(huì)導(dǎo)致后面的flv啟動(dòng)時(shí)會(huì)花屏。
至此srs服務(wù)器的搭建結(jié)束。
手機(jī)直播平臺(tái)的搭建;1,采集,iOS是比較簡(jiǎn)單的,Android則要做些機(jī)型適配工作,PC最麻煩各種奇葩攝像頭驅(qū)動(dòng),出了問(wèn)題特別不好處理,建議放棄PC只支持手機(jī)主播,目前幾個(gè)新進(jìn)的直播平臺(tái)都是這樣的。
2,前處理,現(xiàn)在直播美顏已經(jīng)是標(biāo)配了,80%的主播沒(méi)有美顏根本沒(méi)法看。美顏算法需要用到GPU編程,需要懂圖像處理算法的人,沒(méi)有好的開(kāi)源實(shí)現(xiàn),要自己參考論文去研究。難點(diǎn)不在于美顏效果,而在于GPU占用和美顏效果之間找平衡。GPU雖然性能好,但是也是有功耗的,GPU占用太高會(huì)導(dǎo)致手機(jī)發(fā)燙,而手機(jī)發(fā)燙會(huì)導(dǎo)致攝像頭采集掉幀,iPhone6尤其明顯,因?yàn)閕Phone6的CPU和前置攝像頭很近。
3,編碼,肯定要采用硬編碼,軟編碼720p完全沒(méi)希望,勉強(qiáng)能編碼也會(huì)導(dǎo)致CPU過(guò)熱燙到攝像頭。硬編碼兼容性又是一個(gè)大坑,android上要有人去填。編碼要在分辨率,幀率,碼率,GOP等參數(shù)設(shè)計(jì)上找到好平衡點(diǎn)。
4,傳輸,自己做不現(xiàn)實(shí),交給CDN服務(wù)商吧,也就是貴了點(diǎn),相信有志于做直播平臺(tái)改變世界的你不差錢(qián)。假設(shè)2W PCU大約每月帶寬費(fèi)用100萬(wàn)左右,因?yàn)榍逦鲿车?20p要1.5mbps左右。CDN只提供了帶寬和服務(wù)器間傳輸,發(fā)送和接收端的網(wǎng)絡(luò)連接抖動(dòng)緩沖還是要自己寫(xiě)的。不想要卡頓,必然要加大緩沖,會(huì)導(dǎo)致延遲高,延遲高影響互動(dòng)性,要做權(quán)衡。
要想用于推流還必須把音視頻數(shù)據(jù)使用傳輸協(xié)議進(jìn)行封裝,變成流數(shù)據(jù)。常用的流傳輸協(xié)議有RTSP、RTMP、HLS等,使用RTMP傳輸?shù)难訒r(shí)通常在1–3秒,對(duì)于移動(dòng)直播這種實(shí)時(shí)性要求非常高的場(chǎng)景,RTMP也成為移動(dòng)直播中最常用的流傳輸協(xié)議。最后通過(guò)一定的Qos算法將音視頻流數(shù)據(jù)推送到網(wǎng)絡(luò)斷,通過(guò)CDN進(jìn)行分發(fā)。在直播場(chǎng)景中,網(wǎng)絡(luò)不穩(wěn)定是非常常見(jiàn)的,這時(shí)就需要Qos來(lái)保證網(wǎng)絡(luò)不穩(wěn)情況下的用戶(hù)觀看直播的體驗(yàn),通常是通過(guò)主播端和播放端設(shè)置緩存,讓碼率均勻。另外,針對(duì)實(shí)時(shí)變化的網(wǎng)絡(luò)狀況,動(dòng)態(tài)碼率和幀率也是最常用的策略。
當(dāng)然,在網(wǎng)絡(luò)傳輸方面全部自己來(lái)做基本不現(xiàn)實(shí),找提供推流服務(wù)的CDN服務(wù)商提供解決方案是最好的選擇。據(jù)了解,阿里云是國(guó)內(nèi)唯一能自研CDN緩存服務(wù)器的廠商,性能非常有保障。當(dāng)然,大多數(shù)直播平臺(tái)都會(huì)同時(shí)接入多個(gè)視頻云服務(wù)提供商,這樣可以做拉流線路互備,對(duì)推流后視頻集群再進(jìn)行優(yōu)化也可提高直播的流暢性和穩(wěn)定性。
免費(fèi)直播編碼推流軟件現(xiàn)代生活已經(jīng)離不開(kāi)互聯(lián)網(wǎng),離不開(kāi)軟件了。 這說(shuō)法毫不夸張。 比如手機(jī)上各種
APP眼花繚亂 ,各種行業(yè), 各種功能, 各種Logo, 各種的各種。 沒(méi)有良好的整理力,是真的不好意思讓別人看到啊。 這些功能各異的
APP程序大多數(shù)是免費(fèi)
APP。今天創(chuàng)新互聯(lián)來(lái)談?wù)勱P(guān)于直播編碼和推流的免費(fèi)軟件。推薦四款筆者用過(guò)的直播編碼推流軟件,這些免費(fèi)軟件各有功能側(cè)重點(diǎn)。不過(guò)最終這四款能脫穎而出,主要是滿足了以下兩個(gè)基本功能:
1) 支持H264編碼方式,支持MP3或者AAC編碼。H.264是視頻編碼方式,而MP3
與AAC是音頻編碼方式。
H264:又稱(chēng)AVC(高級(jí)視頻編碼),是當(dāng)前選的編碼標(biāo)準(zhǔn)。
MP3:是音頻編碼標(biāo)準(zhǔn),大家都熟悉,不多說(shuō)。
AAC:即高級(jí)音頻編碼,比MP3音質(zhì)還好,是做直播的選,它有AAC-LC與HE-AAC兩個(gè)
檔次,AAC-LC是地復(fù)雜度的AAC,兼容性好,HE-AAC是高效能AAC,壓縮度高,音質(zhì)與
AAC-LC相當(dāng)。
2) 支持RTMP推流。
RTMP:是實(shí)時(shí)消息協(xié)議的簡(jiǎn)稱(chēng),是由Adobe公司開(kāi)發(fā),雖然沒(méi)有變成國(guó)際標(biāo)準(zhǔn),但它是實(shí)
際上的工業(yè)標(biāo)準(zhǔn),無(wú)論哪個(gè)公司,只要做直播,就得用它,當(dāng)今的手機(jī)直播
APP推流所用
的協(xié)議都是RTMP協(xié)議。
四款免費(fèi)推流軟件分別為:
1. Adobe Flash Media Encoder
2. Open Broadcaster Software
3. 800Li Education Podcast
4. iAVcast
1)Flash Media Live Encoder 3.2
由著名的Adobe公司出品,值得信賴(lài),Adobe好長(zhǎng)時(shí)間已經(jīng)停止更新了,時(shí)代比較久遠(yuǎn)了,但仍舊不失為一個(gè)好用的編碼器軟件。
2)Open Broadcaster Software
開(kāi)源并且免費(fèi)的直播軟件,是當(dāng)前非常流行的直播軟件,很多游戲直播就采用它,例如斗魚(yú)直播。
3)800Li Education Podcast
免費(fèi)的抓桌面直播和錄屏軟件。不可多得的免費(fèi)的直播編碼軟件。有畫(huà)中畫(huà)功能及畫(huà)筆標(biāo)注功能,對(duì)于目前在線教育直播不失為一個(gè)好的選擇。 小巧、好用。免費(fèi)但不開(kāi)源。
4)iAVCast(串流直播)
國(guó)內(nèi)串流直播團(tuán)隊(duì)開(kāi)發(fā)的免費(fèi)直播軟件,免費(fèi)但不開(kāi)源。
做直播除了需要直播編碼推流軟件之外,流媒體服務(wù)器系統(tǒng)必不可少。 筆者簡(jiǎn)單列一下可以使用的直播系統(tǒng),選擇開(kāi)源的實(shí)時(shí)直播軟件可以考慮Red 5, 選擇國(guó)外大品牌的可以考慮Adobe Media Server, 選擇有flash P2P功能的可以選擇800Li Media Server。
當(dāng)前標(biāo)題:視頻直播平臺(tái)網(wǎng)站搭建思路
當(dāng)前地址:http://m.rwnh.cn/news14/146364.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站排名、自適應(yīng)網(wǎng)站、小程序開(kāi)發(fā)、網(wǎng)站維護(hù)、網(wǎng)站導(dǎo)航
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)