- 怎樣錄制直播視訊(流媒體源/編碼/封裝)
- 怎樣實時上傳直播視訊(視訊推流: 如何推/往哪裡推/推流伺服器)
- 怎樣播放直播視訊(如何看: HLS/rtmp/flv)
- 直播間的使用者是如何互動(送禮物/聊天室/彈幕)
直播系統解決方案-搭建你自己的直播平台
- 視訊采集與編碼: JavaCV FFmpeg
- 直播流伺服器: SRS
- 播放器: 網頁端 Video.js 安卓端 Vitamio
直播原理:把主播錄制的視訊,推送到伺服器,在由伺服器分發給觀衆觀看。
直播環節:推流端(采集、美顔處理、編碼、推流)、服務端處理(轉碼、錄制、截圖、鑒黃)、播放器(拉流、解碼、渲染)、互動系統(聊天室、禮物系統、贊)
一個完整直播app實作流程:采集/濾鏡處理/編碼/推流/CDN分發/拉流/解碼/播放/聊天互動

到底什麼是HLS協定?
簡單講就是把整個流分成一個個小的,基于HTTP的檔案來下載下傳,每次隻下載下傳一些,前面提到了用于H5播放直播視訊時引入的一個.m3u8(extended M3U playlist)的檔案,這個檔案就是基于HLS協定,存放視訊流中繼資料的檔案。
WEB 上主流的視訊直播方案有 HLS 和 RTMP,移動 WEB 端目前以 HLS 為主(HLS存在延遲性問題,也可以借助 video.js 采用RTMP),PC端則以 RTMP 為主實時性較好
移動端 iOS 和 Android 都天然支援HLS協定,做好視訊采集端、視訊流推流服務之後,便可以直接在H5頁面配置 video 标簽播放直播視訊, HLS 在 PC 端僅支援safari浏覽器,類似chrome浏覽器使用HTML5 video标簽無法播放 m3u8 格式,可直接采用網上一些比較成熟的方案
Web 前端如何播放 HLS(.m3u8) 視訊
- 移動端可直接通過
标簽來播放<video>
格式的視訊: mobile-hls-video.html.m3u8
- PC端需要通過其他手段(例如 videojs-contrib-hls)來解碼
格式的視訊, 才能夠通過.m3u8
标簽或者 flash 來播放: pc-hls-video.html<video>