iOS動手做一個直播(原理篇)

開篇

傳輸簡單示意圖

上篇文章主要給出了代碼,但是并沒有詳細(xì)說明直播相關(guān)的知識,這篇文章就說一下直播的相關(guān)理論知識冯乘。附上直播代碼篇地址。

推流

騰訊直播平臺,阿里直播平臺,百度直播平臺提供均為RTMP的推流和HLS/RTMP等拉流.
推流是一個直播不可缺少的成分咱台,說起推流都會說基于RTMP協(xié)議蛤奢,那什么是RTMP呢?
RTMP全稱:Real Time Messaging Protocol(實時消息傳送協(xié)議)
1)饵骨、工作在TCP之上的明文協(xié)議翘悉,使用端口1935;
2)居触、RTMPT封裝在HTTP請求之中妖混,可穿越防火墻;
3)轮洋、RTMPS類似RTMPT制市,但使用的是HTTPS連接;
RTMP協(xié)議是被Flash用 于對象弊予、視頻祥楣、音頻的傳輸。這個協(xié)議建立在TCP協(xié)議或者輪詢HTTP協(xié)議之上汉柒。RTMP協(xié)議就像一個用來裝數(shù)據(jù)包的容器误褪,這些數(shù)據(jù)既可以是AMF格式的 數(shù)據(jù),也可以是FLV中的視音頻數(shù)據(jù)碾褂。一個單一的連接可以通過不同的通道傳輸多路網(wǎng)絡(luò)流兽间,這些通道中的包都是按照固定大小的包傳輸?shù)摹?/p>

直播中常見的協(xié)議還有
  • RTSP(Real Time Streaming Protocol,實時流傳輸協(xié)議):定義了一對多應(yīng)用程序 如何有效地通過IP網(wǎng)絡(luò)傳送多媒體數(shù)據(jù)斋扰。

  • RTP(Real-time Transport Protocol渡八,實時傳輸協(xié)議):RTP是針對多媒體數(shù)據(jù)流的一種傳輸層協(xié)議啃洋,詳細(xì)說明了在互聯(lián)網(wǎng)上傳遞音頻和視頻的標(biāo)準(zhǔn)數(shù)據(jù)包格式。RTP協(xié)議常用于流媒體系統(tǒng)(配合RTCP協(xié)議)屎鳍,視頻會議和一鍵通系統(tǒng)(配合H.323或SIP)宏娄,使它成為IP電話產(chǎn)業(yè)的技術(shù)基礎(chǔ)。

  • RTCP(Real-time Transport Control Protocol逮壁,實時傳輸控制協(xié)議):RTCP是RTP的配套協(xié)議孵坚,為RTP媒體流提供信道外的控制。RTCP和RTP一起協(xié)作將多媒體數(shù)據(jù)打包和發(fā)送窥淆,定期在多媒體流會話參與者之間傳輸控制數(shù)據(jù)卖宠。
    RTCP的主要功能是為RTP所提供的服務(wù)質(zhì)量(QoS)提供反饋,收集相關(guān)媒體連接的統(tǒng)計信息忧饭,例如傳輸字節(jié)數(shù)扛伍,傳輸分組數(shù),丟失分組數(shù)词裤,單向和雙向網(wǎng)絡(luò)延遲等等刺洒。網(wǎng)絡(luò)應(yīng)用程序可以利用RTCP所提供的信息來提高服務(wù)質(zhì)量,比如限制流量或改用壓縮比小的編解碼器吼砂。

步驟

在客戶端上要完成直播視頻的采集及RTMP上推逆航,主要需要以下幾個步驟:
1.音視頻的采集;
2.對視頻進行H264編碼渔肩,對音頻進行AAC編碼因俐;
3.對編碼后的音、視頻數(shù)據(jù)進行FLV封包周偎;
4.建立RTMP連接并上推到服務(wù)端抹剩。
而在將原始視頻編碼過程中,有兩種方案:一種是利用第三方庫FFmpeg 進行編碼栏饮,一種是利用iOS自身的AVAssetWriter 或VideoToolBox.framework的VTCompressionSession進行編碼吧兔。FFmpeg因其跨平臺及功能豐富等諸多優(yōu)勢磷仰,被廣泛使用袍嬉。而使用AVAssetWriter編碼需要將視頻寫入本地文件,然后通過實時監(jiān)聽文件內(nèi)容的改變灶平,讀取文件并處理封包伺通。從iOS8開始,VideoToolBox提供了硬件編碼支持逢享,可以使用VTCompressionSession進行編碼罐监。

H264編碼與AAC編碼

服務(wù)器的搭建

說了這么多到服務(wù)器的搭建了复亏,這里提供兩個流媒體服務(wù)器搭建的地址,按照這個地址我們可以自己搭建服務(wù)器進行推流缭嫡。因為過程和截圖實在是比較詳細(xì)缔御,我就不再重復(fù)截圖一遍了,傳送門:iOS基于RTMP 的視頻推流
HLS-搭建Nginx流媒體服務(wù)器(3)
以及IOS手機直播Demo技術(shù)簡介妇蛀。需要知道的就是刹淌,現(xiàn)在直播應(yīng)用,采用RTMP協(xié)議居多讥耗,也有部分使用HLS協(xié)議有勾。
采用RTMP協(xié)議,就要看下它與流媒體服務(wù)器交互的過程古程,RTMP協(xié)議的默認(rèn)端口是1935蔼卡,采用TCP協(xié)議。并且需要了解FLV的封裝格式挣磨。

拉流

直播測試的實現(xiàn)的總體思路大致就是雇逞,(開源推流框架:騰訊,優(yōu)酷等)+ (Nginx+RTMP) + (ijkplayer)茁裙。
我們要實現(xiàn)我們的直播播放塘砸,就是把獲取到的數(shù)據(jù)解壓縮,恢復(fù)成原始數(shù)據(jù)晤锥。解碼就是將H264變成YUV掉蔬,AAC變成PCM。
解碼可以使用軟解碼矾瘾,硬解碼女轿。
軟解碼就是利用CPU資源去解壓縮數(shù)據(jù),采用的方式是FFmpeg解碼壕翩。
硬解碼蛉迹,對于iOS平臺來說,可以使用VideoToolbox.Framework(該框架只能在iOS 8.0及以上系統(tǒng)使用)放妈。為了方便我們的實現(xiàn)北救,我們采用的一般方式是第三方的SDK荐操,網(wǎng)易云直播,暴風(fēng)云直播珍策,騰訊云直播淀零,新浪云,VideoCore 膛壹,以及嗶哩嗶哩的ijkplayer等驾中。
有比較多的SDk可以幫助我們?nèi)崿F(xiàn)播放和推流 。

名詞介紹

后記

本來還想自己多寫寫來著匀借,但是知道看了一篇知乎,覺得自己確實漲了不少知識平窘,這里放上鏈接吓肋,如何搭建一個完整的視頻直播系統(tǒng)?我自己先去好好看看了瑰艘。
通過我的學(xué)習(xí)與研究后續(xù)再更新吧是鬼。 轉(zhuǎn)載注明出處和網(wǎng)址。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末磅叛,一起剝皮案震驚了整個濱河市屑咳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弊琴,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杖爽,死亡現(xiàn)場離奇詭異敲董,居然都是意外死亡紫皇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門腋寨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來聪铺,“玉大人,你說我怎么就攤上這事萄窜×逄蓿” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵查刻,是天一觀的道長键兜。 經(jīng)常有香客問我,道長穗泵,這世上最難降的妖魔是什么普气? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮佃延,結(jié)果婚禮上现诀,老公的妹妹穿的比我還像新娘。我一直安慰自己履肃,他們只是感情好仔沿,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尺棋,像睡著了一般于未。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陡鹃,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天烘浦,我揣著相機與錄音,去河邊找鬼萍鲸。 笑死闷叉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的脊阴。 我是一名探鬼主播握侧,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嘿期!你這毒婦竟也來了品擎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤备徐,失蹤者是張志新(化名)和其女友劉穎萄传,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜜猾,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡秀菱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年振诬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衍菱。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡赶么,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出脊串,到底是詐尸還是另有隱情辫呻,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布琼锋,位于F島的核電站放闺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏斩例。R本人自食惡果不足惜雄人,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望念赶。 院中可真熱鬧础钠,春花似錦、人聲如沸叉谜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽停局。三九已至很钓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間董栽,已是汗流浹背码倦。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锭碳,地道東北人袁稽。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像擒抛,于是被迫代替她去往敵國和親推汽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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