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

一、引言


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

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

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

二、系列文章


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

html

 

三、音視頻採集


採集是播放環節中的第一環,iOS 系統由於軟硬件種類很少,硬件適配性較好,因此比較簡單。Android 則不一樣,市面上硬件機型很是多,難以作到一個庫適配全部硬件。PC 端的採集也跟各類攝像頭驅動有關,推薦使用目前市面上最好用的 PC 端開源免費軟件 OBS。android

四、音視頻處理


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

五、音視頻編碼


編碼主要難點有兩個:

服務器

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


iOS 端硬件兼容性較好,能夠直接採用硬編。而 Android 的硬編的支持則可貴多,須要支持各類硬件機型,推薦使用軟編。微信

六、推流和傳輸


傳輸涉及到不少端:

網絡

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


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

不少人吐槽如今的 CDN 不靠譜,我也認可傳統的 CDN 在新時代顯得心有餘力不足。你可以藉助 CDN 快速實現大規模的流分發,可是穩定高速的推流上傳可能還須要本身作不少工做。所以,咱們打造了一個直播專屬的實時流網絡,接下來咱們會重點介紹這個網絡和傳統 CDN 的差異。架構

七、實時音視頻轉碼


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

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

八、解碼和渲染


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

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

九、直播場景化解決方案


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

十、下篇內容提要


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

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


盡請期待。

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


[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數據傳輸層的一些優化思路
實時音視頻聊天技術分享:面向不可靠網絡的抗丟包編解碼器
>> 更多同類文章 ……

(原文連接:點此進入

相關文章
相關標籤/搜索