iOS直播技術原理

直播的技術

直播技術概況來說,可以分為 采集,前處理,編碼,傳輸,解碼,渲染 這幾個環(huán)節(jié)

一個完整直播app實現流程

image.png

一個完整直播app架構

image.png

音視頻采集

  • 音視頻的采集是直播架構的第一個環(huán)節(jié),也是直播的視頻來源
  • 采集的來源包括:
    • PC端:屏幕攝像頭(攝像頭驅動適配)
    • OS端:攝像頭采集(屏幕采集?)
    • Android端:屏幕攝像頭采集(硬件過多,適配一堆坑)

前處理

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

編碼

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

傳輸

  • 從推流端到服務端
    • 數據經過推流端采集和預處理,編碼之后推流到服務端
    • 流傳輸就涉及到相應的傳輸協(xié)議,最常用的協(xié)議是RTMP、RTSP、HLS

流分發(fā)

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

播放

  • 拉流獲取音視頻數據后,需要通過解碼器解碼,渲染才能在播放器上播放
  • 總體步驟概覽:
    • 解協(xié)議:取出網絡傳輸過程中一些無用信息
    • 解封裝:獲取到的是音頻&視頻放在一起的封裝文件
    • 音視頻解碼:音視頻都是經過壓縮編碼的內容,解碼后才能進行播放
    • 音視頻同步:視頻&音頻文件需要通過同步播放
    • 音視頻播放:聲卡&顯卡等對音視頻進行播放
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容