如何用直播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
3. 從輸入流中讀取音視訊包
二. 服務端
服務端可以選擇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好壞的標準。
最後,除上述問題之外,還有登入,許可權管理,狀態管理等,各種應用服務,訊息推送,聊天,禮品系統,支付系統,操作支援系統,統計系統等,以及資料庫,快取記憶體,分散式檔案儲存,訊息佇列以及操作和維護系統。
由此可見,開發一個直播系統有著許多技術難點,一個程式設計師是很難搞定的,一般直播系統開發的團隊都由十幾到幾十人間構成。
本作品採用《CC 協議》,轉載必須註明作者和本文連結