分享數(shù):9快速搭建直播服務大體架構srs+ffmpeg+第三方(阿里云,騰訊云等),因為不是專門做直播平臺,所以借助第三方平臺(服務器,帶寬,cdn可以省不少心)。當然如果你想自建一個視頻直播平臺也是可以的~~srs用來接收從手機客戶端推來的rtmp流,ffmpeg用來對視頻進行處理,比如增加logo或濾鏡等,在各種技術嘗試中,走過不少彎路,接收流方面還使用過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/srscd srs/trunk或者使用git更新已有代碼:git pull第二步,編譯SRS。./configure && make第三步,編寫SRS配置文件。將以下內(nèi)容保存為文件,譬如conf/rtmp.conf,服務器啟動時指定該配置文件(srs的conf文件夾有該文件)。# conf/rtmp.conflisten 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 :8383/lss/liveItem/LiveItemAction!streamStatus.do ; on_close :8383/lss/liveItem/LiveItemAction!streamStatus.do ; on_publish :8383/lss/liveItem/LiveItemAction!streamStatus.do ; on_unpublish :8383/lss/liveItem/LiveItemAction!streamStatus.do ; on_dvr :8085/api/v1/dvrs; #on_play :8085/api/v1/sessions ; #on_stop :8085/api/v1/sessions ; }}vhost后面要寫對應的推流地址或者ip.http_api 與vhost中的http_hooks為一組配置,當srs接收,停止到推流時會調用配置文件中所填地址,并且將各種參數(shù)包括streamId,appid傳到后臺中。hvhost中的dvr功能是本地錄制,dvr_plan有多種錄制計劃 session:按照session來關閉flv文件,即編碼器停止推流時關閉flv,整個session錄制為一個flv。 segment:按照時間分段錄制,flv文件時長配置為dvr_duration和dvr_wait_keyframe。注意:若不按關鍵幀切flv(即dvr_wait_keyframe配置為off),所以會導致后面的flv啟動時會花屏。至此srs服務器的搭建結束。手機直播平臺的搭建;1,采集,iOS是比較簡單的,Android則要做些機型適配工作,PC最麻煩各種奇葩攝像頭驅動,出了問題特別不好處理,建議放棄PC只支持手機主播,目前幾個新進的直播平臺都是這樣的。2,前處理,現(xiàn)在直播美顏已經(jīng)是標配了,80%的主播沒有美顏根本沒法看。美顏算法需要用到GPU編程,需要懂圖像處理算法的人,沒有好的開源實現(xiàn),要自己參考論文去研究。難點不在于美顏效果,而在于GPU占用和美顏效果之間找平衡。GPU雖然性能好,但是也是有功耗的,GPU占用太高會導致手機發(fā)燙,而手機發(fā)燙會導致攝像頭采集掉幀,iPhone6尤其明顯,因為iPhone6的CPU和前置攝像頭很近。3,編碼,肯定要采用硬編碼,軟編碼720p完全沒希望,勉強能編碼也會導致CPU過熱燙到攝像頭。硬編碼兼容性又是一個大坑,android上要有人去填。編碼要在分辨率,幀率,碼率,GOP等參數(shù)設計上找到最佳平衡點。4,傳輸,自己做不現(xiàn)實,交給CDN服務商吧,也就是貴了點,相信有志于做直播平臺改變世界的你不差錢。假設2W PCU大約每月帶寬費用100萬左右,因為清晰流暢的720p要1.5mbps左右。CDN只提供了帶寬和服務器間傳輸,發(fā)送和接收端的網(wǎng)絡連接抖動緩沖還是要自己寫的。不想要卡頓,必然要加大緩沖,會導致延遲高,延遲高影響互動性,要做權衡。要想用于推流還必須把音視頻數(shù)據(jù)使用傳輸協(xié)議進行封裝,變成流數(shù)據(jù)。常用的流傳輸協(xié)議有RTSP、RTMP、HLS等,使用RTMP傳輸?shù)难訒r通常在1–3秒,對于移動直播這種實時性要求非常高的場景,RTMP也成為移動直播中最常用的流傳輸協(xié)議。最后通過一定的Qos算法將音視頻流數(shù)據(jù)推送到網(wǎng)絡斷,通過CDN進行分發(fā)。在直播場景中,網(wǎng)絡不穩(wěn)定是非常常見的,這時就需要Qos來保證網(wǎng)絡不穩(wěn)情況下的用戶觀看直播的體驗,通常是通過主播端和播放端設置緩存,讓碼率均勻。另外,針對實時變化的網(wǎng)絡狀況,動態(tài)碼率和幀率也是最常用的策略。當然,在網(wǎng)絡傳輸方面全部自己來做基本不現(xiàn)實,找提供推流服務的CDN服務商提供解決方案是最好的選擇。據(jù)了解,阿里云是國內(nèi)唯一能自研CDN緩存服務器的廠商,性能非常有保障。當然,大多數(shù)直播平臺都會同時接入多個視頻云服務提供商,這樣可以做拉流線路互備,對推流后視頻集群再進行優(yōu)化也可提高直播的流暢性和穩(wěn)定性。
免費直播編碼推流軟件現(xiàn)代生活已經(jīng)離不開互聯(lián)網(wǎng),離不開軟件了。 這說法毫不夸張。 比如手機上各種APP眼花繚亂 ,各種行業(yè), 各種功能, 各種Logo, 各種的各種。 沒有良好的整理力,是真的不好意思讓別人看到啊。 這些功能各異的APP程序大多數(shù)是免費APP。今天我們來談談關于直播編碼和推流的免費軟件。推薦四款筆者用過的直播編碼推流軟件,這些免費軟件各有功能側重點。不過最終這四款能脫穎而出,主要是滿足了以下兩個基本功能:1) 支持H264編碼方式,支持MP3或者AAC編碼。H.264是視頻編碼方式,而MP3與AAC是音頻編碼方式。H264:又稱AVC(高級視頻編碼),是當前首選的編碼標準。MP3:是音頻編碼標準,大家都熟悉,不多說。AAC:即高級音頻編碼,比MP3音質還好,是做直播的首選,它有AAC-LC與HE-AAC兩個檔次,AAC-LC是地復雜度的AAC,兼容性好,HE-AAC是高效能AAC,壓縮度高,音質與AAC-LC相當。2) 支持RTMP推流。RTMP:是實時消息協(xié)議的簡稱,是由Adobe公司開發(fā),雖然沒有變成國際標準,但它是實際上的工業(yè)標準,無論哪個公司,只要做直播,就得用它,當今的手機直播APP推流所用的協(xié)議都是RTMP協(xié)議。四款免費推流軟件分別為:1. Adobe Flash Media Encoder2. Open Broadcaster Software3. 800Li Education Podcast4. iAVcast1)Flash Media Live Encoder 3.2由著名的Adobe公司出品,值得信賴,Adobe好長時間已經(jīng)停止更新了,時代比較久遠了,但仍舊不失為一個好用的編碼器軟件。2)Open Broadcaster Software開源并且免費的直播軟件,是當前非常流行的直播軟件,很多游戲直播就采用它,例如斗魚直播。3)800Li Education Podcast免費的抓桌面直播和錄屏軟件。不可多得的免費的直播編碼軟件。有畫中畫功能及畫筆標注功能,對于目前在線教育直播不失為一個好的選擇。 小巧、好用。免費但不開源。4)iAVCast(串流直播)國內(nèi)串流直播團隊開發(fā)的免費直播軟件,免費但不開源。做直播除了需要直播編碼推流軟件之外,流媒體服務器系統(tǒng)必不可少。 筆者簡單列一下可以使用的直播系統(tǒng),選擇開源的實時直播軟件可以考慮Red 5, 選擇國外大品牌的可以考慮Adobe Media Server, 選擇有flash P2P功能的可以選擇800Li Media Server。
TAG標簽耗時:0.0022909641265869 秒
如沒特殊注明,文章均為江浙滬網(wǎng)絡推廣,轉載請注明來自http://www.0898bike.com/html/news/