iOS開(kāi)發(fā)直播app(基礎(chǔ)篇)

1.直播app原理
直播原理:把主播錄制的視頻梗顺,推送到服務(wù)器,然后由服務(wù)器CDN分發(fā)給觀眾车摄。

2.直播app流程
簡(jiǎn)單的流程:采集->濾鏡處理->編碼->推流->CDN分發(fā)->拉流->解碼->播放
直播環(huán)節(jié):推流端(采集寺谤、美顏處理仑鸥、編碼、推流)变屁、服務(wù)端(轉(zhuǎn)碼眼俊、錄制、截圖)敞贡、播放端(拉流泵琳、解碼、渲染)誊役、互動(dòng)(聊天获列、點(diǎn)亮、禮物)
流程圖如下:


直播流程.png

3.直播架構(gòu)

直播架構(gòu).png

二蛔垢、直播基礎(chǔ)知識(shí)

1击孩、采集視頻、音頻
AVFoundation: AVFoundation是用來(lái)播放和創(chuàng)建基于時(shí)間的視聽(tīng)媒體的框架鹏漆,它提供了Objective-C接口來(lái)處理這些數(shù)據(jù)巩梢,比如創(chuàng)建、編輯艺玲、重新編碼括蝠、回放等。

2.視頻處理(美顏)
利用OpenGL ES開(kāi)源圖形嵌入式系統(tǒng)框架饭聚,對(duì)視頻幀進(jìn)行加工忌警,通過(guò)GPU渲染到屏幕,從而實(shí)現(xiàn)各種不同的視頻效果秒梳。一般情況下app的個(gè)各種美顏和視頻特效都是通過(guò)GPUImage這個(gè)框架實(shí)現(xiàn)的法绵。

相關(guān)視頻框架介紹

GPUImage:GPUImage是一個(gè)基于OpenGL ES的一個(gè)圖像視頻處理框架,封裝了多達(dá)120多種常見(jiàn)的濾鏡效果酪碘,同時(shí)也支持自定義編寫(xiě)濾鏡效果朋譬。

OpenGL(Open Graphics Library):是一個(gè)跨編程語(yǔ)言、跨平臺(tái)的編程接口規(guī)定的專業(yè)的圖形程序接口兴垦,是一個(gè)功能強(qiáng)大徙赢、調(diào)用方便的底層圖形庫(kù)。

OpenGL ES(OpenGL for Embedded Systems ):是OpenGL三維圖形API的子集探越,針對(duì)手機(jī)等嵌入式設(shè)備而設(shè)計(jì)狡赐。

3.視頻編碼解碼

視頻編碼框架
FFmpeg:是一個(gè)跨平臺(tái)開(kāi)源視頻框架,提供了視頻錄制扶关、轉(zhuǎn)換以及流化音視頻的解決方案阴汇,也就是視頻編碼数冬、解碼节槐、轉(zhuǎn)碼搀庶、轉(zhuǎn)流、播放等功能铜异。FFmpeg支持了幾乎所有音視頻編解碼哥倔、封裝格式以及播放協(xié)議。它包含非常先進(jìn)的了音頻揍庄、視頻編解碼庫(kù)libavcodec咆蒿,保證了編解碼的質(zhì)量。
ps:
1. X264:把視頻原數(shù)據(jù)YUV編碼壓縮成H.264格式蚂子;
2.VideoToolbox:蘋(píng)果自帶的視頻硬解碼和硬編碼API沃测;
3.AudioToolbox:蘋(píng)果自帶的音頻硬解碼和硬編碼API。

視頻編碼

視頻壓縮標(biāo)準(zhǔn):MPEG食茎、H.264等蒂破,對(duì)視頻進(jìn)行壓縮(視頻編碼)或者解壓縮(視頻解碼)的編碼技術(shù),主要是將視頻像素壓縮成為視頻碼流别渔,從而達(dá)到降低視頻數(shù)量的目的附迷。

1.MPEG:一種視頻壓縮方式,采用幀間壓縮哎媚,存儲(chǔ)連續(xù)幀之間有差別的地方達(dá)到較大的壓縮比喇伯;
2.H.264:一種視頻壓縮方式,采用事先預(yù)測(cè)和與MPEG中的P-B幀一樣的幀間預(yù)測(cè)方法壓縮拨与,可以根據(jù)需要產(chǎn)生適合網(wǎng)絡(luò)情況傳輸?shù)囊曨l流稻据,有更高的壓縮比和更好的圖像質(zhì)量;
3.H.265:基于H.264的一種視頻壓縮方式截珍,保留原有的技術(shù)攀甚,并且對(duì)一些技術(shù)進(jìn)行優(yōu)化以改善碼流、編碼質(zhì)量岗喉、延時(shí)和算法復(fù)雜度之間的關(guān)系秋度。

音頻編碼
AAC、mp3:對(duì)音頻壓縮的音頻編碼技術(shù)钱床。
碼率控制
多碼率:根據(jù)用戶當(dāng)前網(wǎng)絡(luò)環(huán)境自定義碼率荚斯,例如視頻播放軟件中的1024、720查牌、高清事期、標(biāo)清、流暢等就是碼率纸颜。
視頻封裝格式
TS:流媒體封裝格式兽泣,流媒體封裝格式的好處就是不需要加載索引再播放,大大減少了首次載入的延遲胁孙。
FLV:流媒體封裝格式唠倦,由于其形成的文件極小称鳞、加載速度極快,使其成為當(dāng)前主流視頻格式稠鼻。

4.推流
librtmp:數(shù)據(jù)傳輸框架冈止,用來(lái)傳輸RTMP協(xié)議格式的數(shù)據(jù)
RTMP:流媒體數(shù)據(jù)傳輸協(xié)議,是Flash播放器和服務(wù)器之間音頻候齿、視頻和數(shù)據(jù)傳輸開(kāi)發(fā)的開(kāi)發(fā)協(xié)議熙暴,這個(gè)協(xié)議是建立在TCP協(xié)議或者輪訓(xùn)HTTP協(xié)議,主要用于對(duì)象慌盯、視頻周霉、音頻的傳輸。

5.流媒體服務(wù)器
SRS亚皂、BMS诗眨、nginx
5.1數(shù)據(jù)分發(fā)
CDN:(Content Delivery Network),內(nèi)容分發(fā)網(wǎng)絡(luò),是構(gòu)建在網(wǎng)絡(luò)之上的內(nèi)容分發(fā)網(wǎng)絡(luò)孕讳,依靠部署在各地的邊緣服務(wù)器匠楚,通過(guò)中心平臺(tái)的負(fù)載均衡、內(nèi)容分發(fā)厂财、調(diào)度等功能模塊芋簿,使用戶就近獲取所需內(nèi)容,降低網(wǎng)絡(luò)擁塞璃饱,提高用戶訪問(wèn)響應(yīng)速度和命中率与斤。

6.拉流

直播協(xié)議
RTMP、RTSP:即時(shí)要求較高或有互動(dòng)需求
HLS:有回放或者跨平臺(tái)需求

對(duì)比:
HLS是Apple公司定義的用于實(shí)時(shí)流傳輸?shù)膮f(xié)議荚恶,HLS協(xié)議基于HTTP協(xié)議實(shí)現(xiàn)撩穿,可實(shí)現(xiàn)流媒體的直播和點(diǎn)播,主要用于iOS系統(tǒng)谒撼。HLS的自適應(yīng)碼率流播食寡,客戶端可以根據(jù)網(wǎng)絡(luò)狀況自動(dòng)選擇不同碼率的視頻流,保證了移動(dòng)設(shè)備網(wǎng)絡(luò)狀況不穩(wěn)定的條件下流暢播放廓潜。
RTSP:
實(shí)時(shí)流傳輸協(xié)議抵皱,該協(xié)議定義了一對(duì)多應(yīng)用程序如何有效地通過(guò)IP網(wǎng)絡(luò)傳送多媒體數(shù)據(jù)。HTTP與RTSP相比辩蛋,HTTP請(qǐng)求由客戶機(jī)發(fā)出呻畸,服務(wù)器作出響應(yīng);使用RTSP時(shí)悼院,客戶機(jī)和服務(wù)器都可以發(fā)出請(qǐng)求伤为,即RTSP可以是雙向的。
HTTP-FLV:基于HTTP協(xié)議的流式傳輸協(xié)議

7.解碼
硬解碼:使用GPU來(lái)解碼据途,減少CPU運(yùn)算绞愚。播放流暢剑鞍、解碼速度快,但兼容性不好爽醋。
軟解碼:使用CPU來(lái)解碼。兼容性好便脊,但加大CPU負(fù)擔(dān)蚂四,功耗大,解碼速度慢哪痰,沒(méi)有硬解碼流暢遂赠。

8.播放
使用ijkplayer這個(gè)基于FFmpeg的開(kāi)源視頻播放器,iOS晌杰、Android都可集成跷睦,使用簡(jiǎn)單,使用指定拉流URL肋演,自動(dòng)解碼播放抑诸。

9.聊天
IM即時(shí)通訊,在直播中主要是觀眾與主播間的文字互動(dòng)爹殊。
第三方SDK:融云蜕乡、 騰訊云都提供了即時(shí)通訊的SDK,實(shí)現(xiàn)直播聊天的功能。

10.第三方直播SDK
七牛云梗夸、網(wǎng)易視頻云提供了全球化直播流服務(wù)层玲,提供穩(wěn)定流暢、低耗時(shí)反症、高并發(fā)的實(shí)時(shí)音頻服務(wù)辛块,可將視頻直播快速集成到自己的app當(dāng)中。

ps:

mac測(cè)試服務(wù)器:采用nginx+rtmp搭建铅碍,地址:http://www.reibang.com/p/a0397c98d907润绵。

拉流端:bilibili站有一個(gè)開(kāi)源項(xiàng)目叫ijkplayer,用起來(lái)很不錯(cuò)胞谈,地址:https://github.com/Bilibili/ijkplayer授药。

參考文獻(xiàn)
http://blog.csdn.net/leixiaohua1020/article/details/15814587
http://www.reibang.com/p/bd42bacbe4cc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市呜魄,隨后出現(xiàn)的幾起案子悔叽,更是在濱河造成了極大的恐慌,老刑警劉巖爵嗅,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娇澎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡睹晒,警方通過(guò)查閱死者的電腦和手機(jī)趟庄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門括细,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人戚啥,你說(shuō)我怎么就攤上這事奋单。” “怎么了猫十?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵览濒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我拖云,道長(zhǎng)贷笛,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任宙项,我火速辦了婚禮乏苦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘尤筐。我一直安慰自己汇荐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布盆繁。 她就那樣靜靜地躺著拢驾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪改基。 梳的紋絲不亂的頭發(fā)上繁疤,一...
    開(kāi)封第一講書(shū)人閱讀 51,775評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音秕狰,去河邊找鬼稠腊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鸣哀,可吹牛的內(nèi)容都是我干的架忌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼我衬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼叹放!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起挠羔,我...
    開(kāi)封第一講書(shū)人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤井仰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后破加,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體俱恶,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了合是。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片了罪。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖聪全,靈堂內(nèi)的尸體忽然破棺而出泊藕,到底是詐尸還是另有隱情,我是刑警寧澤难礼,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布娃圆,位于F島的核電站,受9級(jí)特大地震影響鹤竭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜景醇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一臀稚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧三痰,春花似錦吧寺、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至获搏,卻和暖如春赖条,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背常熙。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工纬乍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人裸卫。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓仿贬,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親墓贿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茧泪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

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