本文僅僅盤點(diǎn)iOS端直播技術(shù)的搭建
話不多說先上圖,讓大家對(duì)直播技術(shù)有一個(gè)全局的認(rèn)識(shí)。

手殘 簡(jiǎn)單劃了一下,如果有不對(duì)的地方請(qǐng)私信我,大概技術(shù)用到的就這么多 ,其他的也沒有羅列出來,比如說聊天系統(tǒng),禮物系統(tǒng),總結(jié)一下,一個(gè)完整的直播 需要 ?采集->處理->編碼->推流 - >拉流 - > 播放 細(xì)分的話 就更多了。接下來就讓我為大家慢慢梳理這些知識(shí)吧!本篇最后有驚喜。
1采集
iOS上采集音視頻主要用到AVFoundation這個(gè)框架。 對(duì)于這個(gè)框架詳細(xì)的介紹請(qǐng)移步 ?這里,里面介紹的非常詳細(xì)。一定要仔細(xì)看完。如果觀眾老爺不想看的話,我在這里簡(jiǎn)單的闡述下。
AVFoundation 的幾個(gè)類
1 捕捉會(huì)話:AVCaptureSession
2捕捉設(shè)備:AVCaptureDevice
3捕捉輸入設(shè)備:AVCaptureDeviceInput
4捕捉設(shè)備輸出:AVCaptureOutPut
圖片輸出:AVCaptureStillImageOutPut?
視頻輸出:AVCaputureMovieFileOutput
音頻數(shù)據(jù)輸出 :AVCaputureAudioDataOutput
視頻數(shù)據(jù)輸出 :AVCaputureVideoDataOutput
5捕捉連接????????: AVCaptureConnection
????????????????6捕捉預(yù)覽: AVCaptureVideoPreviewLayer
說了這么多類其實(shí)也很抽象,代碼在這里,請(qǐng)自行閱讀.
2.采集完的視頻的處理
關(guān)于GPUImage 的介紹在這個(gè)章節(jié)里 ,歡迎觀看 。 順便提一句,GPUImage 也可以采集數(shù)據(jù),另外GPUImage 只能處理濾鏡上面的東西,如果你需要做到 大眼,瘦臉 的話,可能很麻煩,需要用到人臉識(shí)別 和算法,這里有一遍大眼的文章,歡迎大家閱讀。?
3.音視頻的編碼與壓縮。
這里有一個(gè)音視頻編碼和解碼的demo 歡迎觀看 順便說下 這里是編碼與解碼(圖片上,是國(guó)內(nèi)知名女大神寫的)

關(guān)于為什么要進(jìn)行編碼和解碼,和編解碼的注意事項(xiàng)在這里:
4推流
這里著重介紹下這個(gè)RTMP
實(shí)時(shí)消息傳輸協(xié)議,Adobe Systems公司為Flash播放器和服務(wù)器之間音頻、視頻和數(shù)據(jù)傳輸開發(fā)的開 ?放協(xié)議,因?yàn)槭情_放協(xié)議所以都可以使用了。RTMP協(xié)議用于對(duì)象、視頻、音頻的傳輸。這個(gè)協(xié)議建立在TCP協(xié)議或者輪詢HTTP協(xié)議之上。RTMP協(xié)議就像一個(gè)用來裝數(shù)據(jù)包的容器,這些數(shù)據(jù)可以是FLV中的視音頻數(shù)據(jù)。一個(gè)單一的連接可以通過不同的通道傳輸多路網(wǎng)絡(luò)流,這些通道中的包都是按照固定大小的包傳輸?shù)?/p>

對(duì)于推流,有一個(gè)很好 而且很全面的框架 包含了 采集,濾鏡 ,編碼 ,?這就是大名頂頂?shù)?LFLiveKit。在Github 上,請(qǐng)自行去下載觀看,而且及其簡(jiǎn)單。 看到這里是不是有些觀眾老爺激動(dòng)了,有這玩意你怎么不早說,??。但是要全自定義,就要一步一步來搭建這個(gè)直播,這些流程還是要走的。 具體的代碼歡迎大家補(bǔ)充,需要服務(wù)器做配合不方便寫。
5.拉流
這個(gè)不想多說 ijkplayer,大廠小廠都在用。有大佬集成過的fameWork,網(wǎng)上有很多,請(qǐng)自行搜索。
直播是一個(gè)非常大的功能,說簡(jiǎn)單簡(jiǎn)單,說復(fù)雜復(fù)雜,說簡(jiǎn)單是因?yàn)槲覀冋驹诰奕说募绨蛏暇幊?,說復(fù)雜是因?yàn)槲覀儗?duì)他底部的那一套東西,原理,概念很陌生 。 寫的不對(duì)的地方,歡迎提出來。還有推流那個(gè)地方 ,如果自行搭建的推流代碼我沒寫 ,有大神 的話,幫忙補(bǔ)充下。(message 封裝 trunk)