1. 程式人生 > >《音視訊直播------總體概述》

《音視訊直播------總體概述》

概述

  • 直播的現狀
    • 2016年,是一個直播年。直播行業快速發展,同時也滋生了大大小小上千家相關的公司。
    • 直播和是典型的“社會化視訊”2012-2015 年是中國網路直播行業高速發展的四年:娛樂直播使用者突破 1 億,娛樂直播收入突破 100 億,微博、陌陌也通過直播找到了新的生命力。

  • 直播的技術
    • 直播技術概況來說,可以分為 採集,前處理,編碼,傳輸,解碼,渲染 這幾個環節

技術整體概覽

  • 圖例:

分步解析

音視訊採集

  • 音視訊的採集是直播架構的第一個環節,也是直播的視訊來源
  • 採集的來源包括:
    • PC端:螢幕攝像頭(攝像頭驅動適配)
    • iOS端:攝像頭採集(螢幕採集?)
    • Android端:螢幕攝像頭採集(硬體過多,適配一堆坑)

前處理

  • 使用美顏相機&美圖秀秀已經是網路發照片&發視訊必備技能了
    • 80%的主播沒有美顏簡直不能看(當然還是有美女的)
    • 不能看如何吸引使用者&觀眾
    • 對視訊進行美顏,已成標配
  • 處理主要包括,美顏、模糊效果、水印等
    • 總之就是讓人變美、變帥
  • 各個平臺處理方式
    • PC端:美顏鏡頭、一些美顏軟體
    • iOS端:影象處理庫是GPUImage,提供了豐富的預處理效果,也可利用該庫自定義設計
    • Android端:Google開源的grafika,是一個非常強大的圖形處理庫

編碼

  • 不經編碼的視訊非常龐大,儲存起來都麻煩,更何況網路傳輸
    • 編碼通過壓縮音視訊資料來減少資料體積,方便音視訊資料的推流,拉流和儲存,能大大提高儲存傳輸效率
    • 音視訊必須經過壓縮編碼才能進行儲存和傳輸
  • 編碼方式:
    • 硬編碼:使用非CPU進行編碼,如顯示卡GPU、專用的DSP晶片等
    • 軟編碼:使用CPU進行編碼(手機容易發熱)
  • 各個平臺處理:
    • iOS端:硬體相容性較好,可以直接進行硬編碼
    • Android端:硬編碼較難,難找到統一的庫相容各個平臺(推薦使用軟編)
  • 編碼標準:
    • 視訊編碼:H.265、H.264、VP8、VP9等
    • 音訊編碼:AAC、Opus

傳輸

  • 從推流端到服務端
    • 資料經過推流端採集和預處理,編碼之後推流到服務端
    • 流傳輸就涉及到相應的傳輸協議,最常用的協議是RTMP、RTSP、HLS
  • 搭建nginx+rtmp伺服器進行推流演示

流分發

  • 音訊流推到伺服器後,為了適配各個平臺端各種不同協議,需要在服務端做一些流處理工作,比如轉碼成不同格式支援不同協議如 RTMP、HLS 和 FLV,以適應各個平臺
    • 比如:iOS、Android、PC、網頁
  • 甚至,為了配合一些運營需求,比如一些監管部門的要求,我們在服務端也提供了內容識別如鑑黃的功能

播放

  • 拉流獲取音視訊資料後,需要通過解碼器解碼,渲染才能在播放器上播放
  • 總體步驟概覽:
    • 解協議:取出網路傳輸過程中一些無用資訊
    • 解封裝:獲取到的是音訊&視訊放在一起的封裝檔案
    • 音視訊解碼:音視訊都是經過壓縮編碼的內容,解碼後才能進行播放
    • 音視訊同步:視訊&音訊檔案需要通過播放
    • 音視訊播放:音效卡&顯示卡等對音視訊進行播放