視頻直播平臺網(wǎng)站搭建思路

2022-04-25    分類: 網(wǎng)站建設(shè)

快速搭建直播服務(wù)大體架構(gòu)
srs+ffmpeg+第三方(阿里云,騰訊云等),因為不是專門做直播平臺,所以借助第三方平臺(服務(wù)器,帶寬,cdn可以省不少心)。當(dāng)然如果你想自建一個視頻直播平臺也是可以的~~
srs用來接收從手機客戶端推來的rtmp流,ffmpeg用來對視頻進行處理,比如增加logo或濾鏡等,在各種技術(shù)嘗試中,走過不少彎路,接收流方面還使用過netty,nginx-rtmp,流處理方面使用過javaCV,但效果有些不理想.,java太吃內(nèi)存,cpu。
下面我們來看一下大致的流程吧
srs的文檔簡單全面,附上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
第三步,編寫SRS配置文件。
將以下內(nèi)容保存為文件,譬如conf/rtmp.conf,服務(wù)器啟動時指定該配置文件(srs的conf文件夾有該文件)。
# conf/rtmp.conf
listen 1935;
max_connections 1000;
vhost __defaultVhost__ {
}
第四步,啟動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后面要寫對應(yīng)的推流地址或者ip.
http_api 與vhost中的http_hooks為一組配置,當(dāng)srs接收,停止到推流時會調(diào)用配置文件中所填地址,并且將各種參數(shù)包括streamId,appid傳到后臺中。
hvhost中的dvr功能是本地錄制,dvr_plan有多種錄制計劃
session:按照session來關(guān)閉flv文件,即編碼器停止推流時關(guān)閉flv,整個session錄制為一個flv。
segment:按照時間分段錄制,flv文件時長配置為dvr_duration和dvr_wait_keyframe。注意:若不按關(guān)鍵幀切flv(即dvr_wait_keyframe配置為off),所以會導(dǎo)致后面的flv啟動時會花屏。
至此srs服務(wù)器的搭建結(jié)束。
手機直播平臺的搭建;
1,采集,iOS是比較簡單的,Android則要做些機型適配工作,PC最麻煩各種奇葩攝像頭驅(qū)動,出了問題特別不好處理,建議放棄PC只支持手機主播,目前幾個新進的直播平臺都是這樣的。
2,前處理,現(xiàn)在直播美顏已經(jīng)是標(biāo)配了,80%的主播沒有美顏根本沒法看。美顏算法需要用到GPU編程,需要懂圖像處理算法的人,沒有好的開源實現(xiàn),要自己參考論文去研究。難點不在于美顏效果,而在于GPU占用和美顏效果之間找平衡。GPU雖然性能好,但是也是有功耗的,GPU占用太高會導(dǎo)致手機發(fā)燙,而手機發(fā)燙會導(dǎo)致攝像頭采集掉幀,iPhone6尤其明顯,因為iPhone6的CPU和前置攝像頭很近。
3,編碼,肯定要采用硬編碼,軟編碼720p完全沒希望,勉強能編碼也會導(dǎo)致CPU過熱燙到攝像頭。硬編碼兼容性又是一個大坑,android上要有人去填。編碼要在分辨率,幀率,碼率,GOP等參數(shù)設(shè)計上找到好平衡點。
4,傳輸,自己做不現(xiàn)實,交給CDN服務(wù)商吧,也就是貴了點,相信有志于做直播平臺改變世界的你不差錢。假設(shè)2W PCU大約每月帶寬費用100萬左右,因為清晰流暢的720p要1.5mbps左右。CDN只提供了帶寬和服務(wù)器間傳輸,發(fā)送和接收端的網(wǎng)絡(luò)連接抖動緩沖還是要自己寫的。不想要卡頓,必然要加大緩沖,會導(dǎo)致延遲高,延遲高影響互動性,要做權(quán)衡。
要想用于推流還必須把音視頻數(shù)據(jù)使用傳輸協(xié)議進行封裝,變成流數(shù)據(jù)。常用的流傳輸協(xié)議有RTSP、RTMP、HLS等,使用RTMP傳輸?shù)难訒r通常在1–3秒,對于移動直播這種實時性要求非常高的場景,RTMP也成為移動直播中最常用的流傳輸協(xié)議。最后通過一定的Qos算法將音視頻流數(shù)據(jù)推送到網(wǎng)絡(luò)斷,通過CDN進行分發(fā)。在直播場景中,網(wǎng)絡(luò)不穩(wěn)定是非常常見的,這時就需要Qos來保證網(wǎng)絡(luò)不穩(wěn)情況下的用戶觀看直播的體驗,通常是通過主播端和播放端設(shè)置緩存,讓碼率均勻。另外,針對實時變化的網(wǎng)絡(luò)狀況,動態(tài)碼率和幀率也是最常用的策略。
當(dāng)然,在網(wǎng)絡(luò)傳輸方面全部自己來做基本不現(xiàn)實,找提供推流服務(wù)的CDN服務(wù)商提供解決方案是最好的選擇。據(jù)了解,阿里云是國內(nèi)唯一能自研CDN緩存服務(wù)器的廠商,性能非常有保障。當(dāng)然,大多數(shù)直播平臺都會同時接入多個視頻云服務(wù)提供商,這樣可以做拉流線路互備,對推流后視頻集群再進行優(yōu)化也可提高直播的流暢性和穩(wěn)定性。

免費直播編碼推流軟件
現(xiàn)代生活已經(jīng)離不開互聯(lián)網(wǎng),離不開軟件了。 這說法毫不夸張。 比如手機上各種APP眼花繚亂 ,各種行業(yè), 各種功能, 各種Logo, 各種的各種。 沒有良好的整理力,是真的不好意思讓別人看到啊。 這些功能各異的APP程序大多數(shù)是免費APP。今天創(chuàng)新互聯(lián)來談?wù)勱P(guān)于直播編碼和推流的免費軟件。推薦四款筆者用過的直播編碼推流軟件,這些免費軟件各有功能側(cè)重點。不過最終這四款能脫穎而出,主要是滿足了以下兩個基本功能:
1) 支持H264編碼方式,支持MP3或者AAC編碼。H.264是視頻編碼方式,而MP3
與AAC是音頻編碼方式。
H264:又稱AVC(高級視頻編碼),是當(dāng)前選的編碼標(biāo)準(zhǔn)。
MP3:是音頻編碼標(biāo)準(zhǔn),大家都熟悉,不多說。
AAC:即高級音頻編碼,比MP3音質(zhì)還好,是做直播的選,它有AAC-LC與HE-AAC兩個
檔次,AAC-LC是地復(fù)雜度的AAC,兼容性好,HE-AAC是高效能AAC,壓縮度高,音質(zhì)與
AAC-LC相當(dāng)。
2) 支持RTMP推流。
RTMP:是實時消息協(xié)議的簡稱,是由Adobe公司開發(fā),雖然沒有變成國際標(biāo)準(zhǔn),但它是實
際上的工業(yè)標(biāo)準(zhǔn),無論哪個公司,只要做直播,就得用它,當(dāng)今的手機直播APP推流所用
的協(xié)議都是RTMP協(xié)議。
四款免費推流軟件分別為:
1. Adobe Flash Media Encoder
2. Open Broadcaster Software
3. 800Li Education Podcast
4. iAVcast
1)Flash Media Live Encoder 3.2
由著名的Adobe公司出品,值得信賴,Adobe好長時間已經(jīng)停止更新了,時代比較久遠(yuǎn)了,但仍舊不失為一個好用的編碼器軟件。
2)Open Broadcaster Software
開源并且免費的直播軟件,是當(dāng)前非常流行的直播軟件,很多游戲直播就采用它,例如斗魚直播。
3)800Li Education Podcast
免費的抓桌面直播和錄屏軟件。不可多得的免費的直播編碼軟件。有畫中畫功能及畫筆標(biāo)注功能,對于目前在線教育直播不失為一個好的選擇。 小巧、好用。免費但不開源。
4)iAVCast(串流直播)
國內(nèi)串流直播團隊開發(fā)的免費直播軟件,免費但不開源。
做直播除了需要直播編碼推流軟件之外,流媒體服務(wù)器系統(tǒng)必不可少。 筆者簡單列一下可以使用的直播系統(tǒng),選擇開源的實時直播軟件可以考慮Red 5, 選擇國外大品牌的可以考慮Adobe Media Server, 選擇有flash P2P功能的可以選擇800Li Media Server。

當(dāng)前標(biāo)題:視頻直播平臺網(wǎng)站搭建思路
當(dāng)前地址:http://www.muchs.cn/news14/146364.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、網(wǎng)站排名、自適應(yīng)網(wǎng)站小程序開發(fā)、網(wǎng)站維護網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司