天天看點

直播過程技術難點

  • 怎樣錄制直播視訊(流媒體源/編碼/封裝)
  • 怎樣實時上傳直播視訊(視訊推流: 如何推/往哪裡推/推流伺服器)
  • 怎樣播放直播視訊(如何看: 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>

     标簽來播放 

    .m3u8

     格式的視訊: mobile-hls-video.html
  • PC端需要通過其他手段(例如 videojs-contrib-hls)來解碼 

    .m3u8

     格式的視訊, 才能夠通過 

    <video>

     标簽或者 flash 來播放: pc-hls-video.html