如何用直播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地址。linux
用命令推流時間戳信息不能任意修改,想要達到一個滿意的結果仍是要用代碼實現。程序員
主要方法代碼以下:數據庫
1.打開視頻流,filename能夠文件名稱也能夠是實時流url.
2.建立輸出上下文以及輸出流,輸出流的格式須要設置成flv
3.從輸入流中讀取音視頻包windows
二. 服務端
服務端能夠選擇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播放器。網絡
我的開發直播系統的難點
一、機型配適問題,網絡直播系統至少須要面向全國觀衆,這樣一來,系統與機型的普遍適配就成了很是痛苦的工做。移動電話系統大體能夠分爲Android和iOS。iOS還好,只有幾個型號,所以,直播系統開發能夠在規範和大小等編碼問題上節省大量精力。有了一個,其餘機型進行小的修改就能夠被徹底應用。Android市場上手機型號產品衆多,買賣得火熱的少說都有七八個,並且在安卓開源的基礎上,每一個品牌都有本身的手機系統,這使得產品應用程序開發人員更難開發,因此機型配置是一個很是使人頭疼的問題。併發
二、網絡不佳情況下保證直播質量,網絡直播系統在運營時,很是怕的一點是在弱網狀況下產生卡頓。一樣是弱網絡別人家的直播就能正常進行,而你家的系統就卡卡頓頓,那不是很尷尬嘛,這對於用戶使用感也是很是大的打擊。cdn分銷網絡對用戶來講是不可見的,但用戶的體驗和清晰度與之密切相關。固然,隨着5G網絡的搭建部署完成,出現卡頓的狀況會大大減小。分佈式
三、畫面延遲情況,直播最主要的要求就是流暢快捷。主播開始直播後,直播視頻數據就會及時被網絡直播系統內置的編碼器壓縮編碼並推流到服務器,待用戶打開服務器就會進行拉流和解碼,方可觀看,在這時,若是解碼時間過慢,畫面延遲狀況就會產生,因此如何優化解碼器也考驗着開發人員。
四、防盜鏈機制,平臺運營期間,原創的惟一性是很是關鍵的,若是你隨邊讓一個小平臺連接到防盜,那麼這個防盜機制就作得不算好了。
五、 美顏技術的好壞,一般咱們會將美顏SDK嵌入網絡直播系統,實如今直播過程當中進行美顏。美顏SDK基於人臉識別技術,根據人臉關鍵點部位進行美顏、美型等操做。美顏的同時是否會影響畫面清晰度以及美顏效果的穩定性、天然度都是判斷美顏SDK好壞的標準。
最後,除上述問題以外,還有登陸,權限管理,狀態管理等,各類應用服務,消息推送,聊天,禮品系統,支付系統,操做支持系統,統計系統等,以及數據庫,高速緩存,分佈式文件存儲,消息隊列以及操做和維護系統。
因而可知,開發一個直播系統有着許多技術難點,一個程序員是很難搞定的,通常直播系統開發的團隊都由十幾到幾十人間構成。