移動端實時音視頻直播技術詳解(一):開篇


1、引言


隨着互聯網用戶消費內容和交互方式的升級,支撐這些內容和交互方式的基礎設施也正在悄悄發生變革。手機設備拍攝視頻能力和網絡的升級催生了大家對視頻直播領域的關注,吸引了很多互聯網創業者或者成熟企業進入該領域。

本文由七牛雲技術團隊原創分享,結合實時流網絡 LiveNet 和直播雲解決方案的實踐,將用七篇文章,更系統化地介紹當下大熱的視頻直播各環節的關鍵技術,幫助視頻直播創業者們更全面、深入地了解視頻直播技術,更好地技術選型。

本文是《移動端實時音視頻直播技術詳解》系列文章之第一篇,我們將從整體介紹直播中的各個環節。
<ignore_js_op>移動端實時音視頻直播技術詳解(一):開篇_1 16.49.51.jpeg 

2、系列文章


本文是系列文章中的第1篇,本系列文章的大綱如下:

 

3、音視頻采集


采集是播放環節中的第一環,iOS 系統因為軟硬件種類不多,硬件適配性較好,所以比較簡單。Android 則不同,市面上硬件機型非常多,難以做到一個庫適配所有硬件。PC 端的采集也跟各種攝像頭驅動有關,推薦使用目前市面上最好用的 PC 端開源免費軟件 OBS。

4、音視頻處理


「80% 的主播沒有美顏根本沒法看。」不光是美顏,很多其它的視頻處理如模糊效果、水印等也都是在這個環節做。目前 iOS 端比較知名的是 GPUImage 這個庫,提供了豐富端預處理效果,還可以基於這個庫自己寫算法實現更豐富端效果。Android 也有 GPUImage 這個庫的移植,叫做 android-gpuimage。同時,Google 官方開源了一個偉大的庫,覆蓋了 Android 上面很多多媒體和圖形圖像相關的處理。

5、音視頻編碼


編碼主要難點有兩個:

  • 處理硬件兼容性問題。
  • 在高 fps、低 bitrate 和音質畫質之間找到平衡。


iOS 端硬件兼容性較好,可以直接采用硬編。而 Android 的硬編的支持則難得多,需要支持各種硬件機型,推薦使用軟編。

6、推流和傳輸


傳輸涉及到很多端:

  • 從主播端到服務端;
  • 從收流服務端到邊緣節點;
  • 以及再從邊緣節點到觀眾端。


推流端和分發端理論上需要支持的並發用戶數應該都是億級的,不過畢竟產生內容的推流端在少數,和消費內容端播放端不是一個量級,但是他們對推流穩定性和速度的要求比播放端高很多,這涉及到所有播放端能否看到直播,以及直播端質量如何。

很多人吐槽現在的 CDN 不靠譜,我也承認傳統的 CDN 在新時代顯得心有余力不足。你能夠借助 CDN 快速實現大規模的流分發,但是穩定高速的推流上傳可能還需要自己做很多工作。因此,我們打造了一個直播專屬的實時流網絡,接下來我們會重點介紹這個網絡和傳統 CDN 的差別。

7、實時音視頻轉碼


為了讓主播推上來的流適配各個平台端各種不同協議,需要在服務端做一些流處理工作,比如轉碼成不同格式支持不同協議如 RTMP、HLS 和 FLV,一路轉多路流來適配各種不同的網絡狀況和不同分辨率的終端設備。

同時,為了配合一些運營需求,比如一些監管部門的要求,我們在服務端也提供了內容識別如鑒黃的功能。

8、解碼和渲染


解碼和渲染,也即音視頻的播放,目前 iOS 端的播放兼容性較好,在延遲可接受的情況下使用 HLS 協議是最好的選擇,我們也提供了能夠播放 RTMP 和 HLS 的播放器 SDK。Android 的硬件解碼和編碼一樣也存在兼容性問題,目前比較好的開源播放器是基於 ffplay 的 ijkplayer,我們也基於此實現了一個更好的 Android SDK。

除了 SDK 的介紹之外,我們將重點介紹播放器的原理,以及現代視頻播放器的基本架構。

9、直播場景化解決方案


除了整個直播流程的介紹之外,我們將圍繞當下最火的直播場景如社交直播和游戲直播,介紹它背后的技術方案。這些技術方案不僅涉及到七牛這樣的直播基礎服務,還可能涉及到和場景相關的其它技術,如社交直播下的聊天、點贊和彈幕的支持。

10、下篇內容提要


在下一篇連載中,我們將詳細介紹下直播播放環節的前兩個環節:采集和處理。

  • 面對市場上各種視頻采集源,直播應用開發者應該如何去完整的覆蓋?
  • 市場上主播的各種需求如美顏、水印、連麥互動等該怎么去滿足?


盡請期待。

附錄:更多實時音視頻技術文章


[1] 開源實時音視頻技術WebRTC的文章:
開源實時音視頻技術WebRTC的現狀
簡述開源實時音視頻技術WebRTC的優缺點
訪談WebRTC標准之父:WebRTC的過去、現在和未來
良心分享:WebRTC 零基礎開發者教程(中文)[附件下載]
WebRTC實時音視頻技術的整體架構介紹
新手入門:到底什么是WebRTC服務器,以及它是如何聯接通話的?
WebRTC實時音視頻技術基礎:基本架構和協議棧
淺談開發實時視頻直播平台的技術要點
[觀點] WebRTC應該選擇H.264視頻編碼的四大理由
基於開源WebRTC開發實時音視頻靠譜嗎?第3方SDK有哪些?
開源實時音視頻技術WebRTC中RTP/RTCP數據傳輸協議的應用
簡述實時音視頻聊天中端到端加密(E2EE)的工作原理
實時通信RTC技術棧之:視頻編解碼
開源實時音視頻技術WebRTC在Windows下的簡明編譯教程
網頁端實時音視頻技術WebRTC:看起來很美,但離生產應用還有多少坑要填?
>> 更多同類文章 ……

[2] 實時音視頻開發的其它精華資料:
專訪微信視頻技術負責人:微信實時視頻聊天技術的演進
實時語音聊天中的音頻處理與編碼壓縮技術簡述
網易視頻雲技術分享:音頻處理與壓縮技術快速入門
學習RFC3550:RTP/RTCP實時傳輸協議基礎知識
基於RTMP數據傳輸協議的實時流媒體技術研究(論文全文)
聲網架構師談實時音視頻雲的實現難點(視頻采訪)
淺談開發實時視頻直播平台的技術要點
還在靠“喂喂喂”測試實時語音通話質量?本文教你科學的評測方法!
實現延遲低於500毫秒的1080P實時音視頻直播的實踐分享
移動端實時視頻直播技術實踐:如何做到實時秒開、流暢不卡
如何用最簡單的方法測試你的實時音視頻方案
技術揭秘:支持百萬級粉絲互動的Facebook實時視頻直播
簡述實時音視頻聊天中端到端加密(E2EE)的工作原理
移動端實時音視頻直播技術詳解(一):開篇
移動端實時音視頻直播技術詳解(二):采集
移動端實時音視頻直播技術詳解(三):處理
移動端實時音視頻直播技術詳解(四):編碼和封裝
移動端實時音視頻直播技術詳解(五):推流和傳輸
移動端實時音視頻直播技術詳解(六):延遲優化
理論聯系實際:實現一個簡單地基於HTML5的實時視頻直播
IM實時音視頻聊天時的回聲消除技術詳解
淺談實時音視頻直播中直接影響用戶體驗的幾項關鍵技術指標
如何優化傳輸機制來實現實時音視頻的超低延遲?
首次披露:快手是如何做到百萬觀眾同場看直播仍能秒開且不卡頓的?
Android直播入門實踐:動手搭建一套簡單的直播系統
網易雲信實時視頻直播在TCP數據傳輸層的一些優化思路
實時音視頻聊天技術分享:面向不可靠網絡的抗丟包編解碼器
>> 更多同類文章 ……

(原文鏈接:點此進入


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM