天天看點

直播APP源碼搭建簡易直播平台及個人開發直播系統的難點

直播APP源碼搭建簡易直播平台及個人開發直播系統的難點

如何用直播APP源碼搭建一個簡易的直播平台

一.前端推流

1.推流可以采用指令: ffmpeg -i input -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/cgstream0input 可以是實時流,也可以是檔案,如果是檔案 需要加上-re。運用中需要将127.0.0.1換成rtmp所在機器的ip位址。

用指令推流時間戳資訊不能任意修改,想要達到一個滿意的結果還是要用代碼實作。

主要方法代碼如下:

1.打開視訊流,filename可以檔案名稱也可以是實時流url.

2.建立輸出上下文以及輸出流,輸出流的格式需要設定成flv

  1. 從輸入流中讀取音視訊包

二. 服務端

服務端可以選擇crtmpserver,crtmpserver開源,在windows平台以及linux平台下都可以運作。

随着人們對視訊品質要求的提高,基本上視訊的分辨率都是高清(1080p),碼率基本會在4M以上。試想如果伺服器網卡選擇千兆網卡,單個網卡最多也就支援兩百多路。一般來講,伺服器的cpu配置會比普通電腦高很多,支援幾百路并發是不會出現性能問題。

三. 播放端

如果在網頁上播放(IE),可以選擇JwPlayer,如果用插件的也是可以。Android端播放器如果底層基于ffmpeg,也可以播放CrtmpServer

轉發的音視訊流(ffmpeg需要引入librtmp庫),IOS系統 同理。播放的url是rtmp:/

四. 如何搭建

1.首先 下載下傳CrtmpServer服務,運作輕按兩下檔案夾下的crtmpserver.exe,如果沒有閃退,說明運作成功.

2.下載下傳ffmpeg.exe,在指令行執行 ffmpeg -i input -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/cgstream0 127.0.0.1改成crtmpserver.exe所在伺服器的位址.如果你在linux下推流,需要linux版本的ffmpeg。cgstream0可以根據需要任意修改。在 windows平台下如果推流成功ffmpeg會一直列印資訊,出錯也會有相應的提示。

3.播放:播放可以用ffplayer.exe(這個工具對rtmp流支援不是很好 ,播放的位址是rtmp://127.0.0.1/live/cgstream0 live=1),還可以用CGPlayer播放器。

**個人開發直播系統的難點

**1、機型配适問題,網絡直播系統至少需要面向全國觀衆,這樣一來,系統與機型的廣泛适配就成了非常痛苦的工作。行動電話系統大緻可以分為Android和iOS。iOS還好,隻有幾個型号,是以,直播系統開發可以在規範和大小等編碼問題上節省大量精力。有了一個,其他機型進行小的修改就可以被完全應用。Android市場上手機型号産品衆多,買賣得火熱的少說都有七八個,而且在安卓開源的基礎上,每個品牌都有自己的手機系統,這使得産品應用程式開發人員更難開發,是以機型配置是一個非常令人頭疼的問題。

2、網絡不佳狀況下保證直播品質,網絡直播系統在營運時,非常怕的一點是在弱網情況下産生卡頓。同樣是弱網絡别人家的直播就能正常進行,而你家的系統就卡卡頓頓,那不是很尴尬嘛,這對于使用者使用感也是非常大的打擊。cdn分銷網絡對使用者來說是不可見的,但使用者的體驗和清晰度與之密切相關。當然,随着5G網絡的搭建部署完成,出現卡頓的情況會大大減少。

3、畫面延遲狀況,直播最主要的要求就是流暢快捷。主播開始直播後,直播視訊資料就會及時被網絡直播系統内置的編碼器壓縮編碼并推流到伺服器,待使用者打開伺服器就會進行拉流和解碼,方可觀看,在這時,如果解碼時間過慢,畫面延遲情況就會産生,是以如何優化解碼器也考驗着開發人員。

4、防盜鍊機制,平台營運期間,原創的唯一性是非常關鍵的,如果你随邊讓一個小平台連結到防盜,那麼這個防盜機制就做得不算好了。

5、 美顔技術的好壞,通常我們會将美顔SDK嵌入網絡直播系統,實作在直播過程中進行美顔。美顔SDK基于人臉識别技術,根據人臉關鍵點部位進行美顔、美型等操作。美顔的同時是否會影響畫面清晰度以及美顔效果的穩定性、自然度都是判斷美顔SDK好壞的标準。

最後,除上述問題之外,還有登入,權限管理,狀态管理等,各種應用服務,消息推送,聊天,禮品系統,支付系統,操作支援系統,統計系統等,以及資料庫,高速緩存,分布式檔案存儲,消息隊列以及操作和維護系統。

由此可見,開發一個直播系統有着許多技術難點,一個程式員是很難搞定的,一般直播系統開發的團隊都由十幾到幾十人間構成。

繼續閱讀