直播原理

通過計算機上的音視頻輸入設備或者手機端攝像頭和麥克風實時錄制的音視頻流洪灯,編好碼后通過直播協(xié)議將數(shù)據(jù)包實時發(fā)送給服務器端,服務器端通過流媒體協(xié)議把實時流分發(fā)出去竟痰,其他終端通過直播協(xié)議實時請求數(shù)據(jù)包签钩,并進行解碼解放掏呼。

下圖可以看下直播的大致架構(gòu)
直播架構(gòu).png

直播過程主要設計采集數(shù)據(jù)、渲染處理边臼、編碼數(shù)據(jù)哄尔、推流假消、CDN分發(fā)柠并、拉流、播放流數(shù)據(jù)等富拗。

渲染處理

這里所說的渲染處理臼予,主要是對從相機中采集來的數(shù)據(jù)進行二次處理,如果自己做美顏封裝啃沪,可用的開源庫主要是GPUImage.
GPU工作原理:GPU 指圖像運算工作的微處理器粘拾,GPU只要利用顯卡對圖像的頂點左邊,通過圖元組配创千,進行光柵化缰雇,頂點著色等一系列管線操作。
GPUImage:基于OpenGL圖像和視頻處理的跨平臺框架追驴。提供了各種各樣的濾鏡械哟。
濾鏡處理的原理:把靜態(tài)圖像或者視頻的每一幀進行圖片轉(zhuǎn)換后展示出來。它的本質(zhì)是像素點坐標的坐標和顏色變化殿雪。
GPUImage處理畫面的原理:GPU采用鏈條式方式處理畫面暇咆,通過addTarget函數(shù)為鏈條添加每個環(huán)節(jié)的對象,處理完一個target丙曙,就回把上一個環(huán)節(jié)處理好的圖像數(shù)據(jù)傳遞給下一個target區(qū)域處理,這被稱為GPUImage處理鏈亏镰。

編碼數(shù)據(jù)

視頻編碼指的是通過特定的壓縮技術索抓,將某個視頻格式文件轉(zhuǎn)換成另一種視頻格式文件的方式。
壓縮原理
巨大的原始視頻壓縮成小的視頻核心的思想就是去除冗余信息惰瓜。
1.空間冗余汉矿。在很多圖像數(shù)據(jù)中,像素間在行奈揍、列方向上都有很大的相關性,相鄰像素的值比較接近或者完全相同男翰,這種數(shù)據(jù)冗余叫做空間冗余。
2.時間冗余昆箕。在視頻圖像序列中租冠,相鄰兩幀圖像數(shù)據(jù)有許多共通的地方顽爹,這種共通性叫做時間冗余,可采用運動補償算法來去除冗余信息捏题。
3.視覺冗余肉渴。視覺冗余是相對人眼的視覺特性而言的,人類視覺系統(tǒng)對圖像的敏感性是非均勻和非線形的稚矿,即人眼觀察不到圖像中的所有變化捻浦。
常用的壓縮編碼方法


常用編碼方法.png

推流

推流過程就是把編碼后的數(shù)據(jù)打包并通過直播協(xié)議發(fā)送給流媒體服務器的過程朱灿。
常用的推流協(xié)議
1.RTMP

RTMP是基于TCP,是一種被設計用來實行數(shù)據(jù)通信的網(wǎng)絡協(xié)議跪楞,主要用在Flash平臺和支持RTMP協(xié)議的流媒體/交互服務器之間進行音視頻和數(shù)據(jù)通信侣灶。
RTMP是主流的流媒體傳輸協(xié)議胰舆,廣泛用于直播領域啰脚,可以說市面上絕大多數(shù)直播都采用了這個協(xié)議俏脊。
優(yōu)點:
1.對CDN友好,主流的CDN廠商都支持該協(xié)議
2.協(xié)議簡單寨典,在各個平臺實現(xiàn)容易
缺點:
1.基于TCP,傳輸成本高报亩,在弱網(wǎng)環(huán)境丟包率高的情況下問題明顯墓猎。
2.不支持瀏覽器推送
3.Adobe私有協(xié)議赚楚,Adobe已經(jīng)不再更新該協(xié)議。

2.WebRTC
3.基于UDP的私有協(xié)議

有些直播應用會通過UDP作為底層協(xié)議開發(fā)自己的私有協(xié)議左胞。由于UDP在弱網(wǎng)環(huán)境下的優(yōu)勢烤宙,因此通過一些定制化的調(diào)優(yōu)可以達到比較好的弱網(wǎng)優(yōu)化效果俭嘁。
優(yōu)點:
有更多的空間進行定制化優(yōu)化
缺點:

  • 開發(fā)成本高
  • 對CDN不友好,需要自建CDN或者和CDN達成協(xié)議

CDN分發(fā)

CDN即內(nèi)容分發(fā)網(wǎng)絡拐云,是一個策略型部署的整理系統(tǒng)近她,主要用來解決由于網(wǎng)絡帶寬小、用戶訪問量大薇缅、網(wǎng)點分布不均勻等造成的用戶訪問網(wǎng)絡速度慢的問題泳桦。簡單理解就是相當于讓計算機選擇最優(yōu)網(wǎng)絡娩缰。具體實現(xiàn)是通過在現(xiàn)有的網(wǎng)絡中增加一層新的網(wǎng)絡架構(gòu),將網(wǎng)站內(nèi)容發(fā)布到離用戶最近的網(wǎng)絡節(jié)點上梧奢。這樣用戶可以就近獲取所需內(nèi)容,解決之前的網(wǎng)絡擁塞趋惨。訪問延時高的問題惦蚊,提高用戶體驗。
CDN主要包含源站兆沙、緩存服務器莉掂、智能DNS、客戶端等幾個主要組成部分库正。
整個流程如下
主播進行直播厘唾,向智能DNS發(fā)送解析請求;智能DNS返回最優(yōu)的CDN節(jié)點的IP地址喷楣;主播端采用音視頻數(shù)據(jù)鹤树,發(fā)送CDN節(jié)點铣焊,CDN節(jié)點進行緩存處理粗截;觀眾要觀看這個主播的視頻熊昌,向智能DNS發(fā)送解析請求,智能DNS返回最優(yōu)CDN節(jié)點的IP地址婿屹;觀眾向CDN節(jié)點請求音視頻數(shù)據(jù)昂利;CDN節(jié)點同步其他節(jié)點的音視頻數(shù)據(jù);CDN節(jié)點將音視頻發(fā)給觀眾犁苏。
CDN缺點
播放延時:從主播端采集到觀眾播放之間的時間差扩所。
網(wǎng)絡抖動:數(shù)據(jù)包的到達順序,間隔等與發(fā)出時不一致助赞。
網(wǎng)絡丟包:當網(wǎng)絡中丟包率開始升高時袁勺,重傳會導致延時不斷增大,甚至導致不斷嘗試重連等情況群叶,這樣不能有效緩存咐汞,在嚴重情況下會導致用戶端無法觀看視頻。

拉流

根據(jù)協(xié)議類型(如RTMP,RTP约炎,HTTP等)與服務器建立連接并接受數(shù)據(jù)。

播放流數(shù)據(jù)

播放流數(shù)據(jù)掠手,一般涉及幾個過程喷鸽。首先進行access操作灸拍,也就是獲取數(shù)據(jù)流;然后進行demux操作混槐,也就是解復用轩性,將數(shù)據(jù)流分離成音頻流和視頻流;接著將音頻流送入音頻解碼器悯嗓,將視頻流送入視頻解碼器;最后進行音視頻同步輸出芦圾。通常使用第三方播放器俄认。

end

文字來源《 Android 音視頻開發(fā)》-何俊林 著

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末眯杏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子茫经,更是在濱河造成了極大的恐慌萎津,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荤傲,死亡現(xiàn)場離奇詭異遂黍,居然都是意外死亡俊嗽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門芯咧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來敬飒,“玉大人鬼佣,你說我怎么就攤上這事【е裕” “怎么了阴孟?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵永丝,是天一觀的道長慕嚷。 經(jīng)常有香客問我毕泌,道長,這世上最難降的妖魔是什么挠说? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任损俭,我火速辦了婚禮潘酗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘琐脏。我一直安慰自己囚灼,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蝎抽,像睡著了一般路克。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上精算,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天灰羽,我揣著相機與錄音鱼辙,去河邊找鬼玫镐。 笑死,一個胖子當著我的面吹牛恐似,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播葛闷,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼淑趾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了治笨?” 一聲冷哼從身側(cè)響起赤嚼,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤更卒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后俯萌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡咐熙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年棋恼,在試婚紗的時候發(fā)現(xiàn)自己被綠了锈玉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡师崎,死狀恐怖椅棺,靈堂內(nèi)的尸體忽然破棺而出齐蔽,到底是詐尸還是另有隱情肴熏,我是刑警寧澤顷窒,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站鞋吉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏泼诱。R本人自食惡果不足惜赊锚,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望耸袜。 院中可真熱鬧牲平,春花似錦、人聲如沸蜈抓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽格带。三九已至,卻和暖如春屈呕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蟋软。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留岳守,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓涝缝,卻偏偏與公主長得像譬重,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子臀规,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容