iOS直播類APP開(kāi)發(fā)流程解析

來源:網絡轉載作者:網絡轉載時(shí)間:2017-01-11

[摘要] 近段時(shí)間以來,視頻直播APP開(kāi)發(f近愛ā)掀起(qǐ)了創業大潮,一時在水(shí)間使得直播類産品迅速崛起(qǐ)。但是在競争激烈的應用市場中,創業商有者爲了避免産品石沉大海,需要爲用戶實金下現優質的體驗。

一 . 音視頻處理的一般流程:

數據采集→數據編碼→數據傳輸(流媒體服務器) →解碼數據→播放顯示計紙

1、數據采集:

攝像機及拾音器收集視頻及音頻數據,此時(shí)得到的爲原始玩又數據

涉及技術或協議:

攝像機:CCD、CMOS

拾音器:聲電轉換裝置(咪頭)、音頻放大電路

2、數據編碼:

使用相關硬件或軟件對(duì)音視頻原始數據進(jìn)行編碼處紙吃理(數字化)及加工(如音視頻混合、打包封裝等),得到可用的音視頻數據

涉及技術或協議:

編碼方式:CBR、VBR

編碼格式

視頻:H.265、H.264、MPEG-4等,封她高裝容器有TS、MKV、AVI、MP4等

音頻:G.711μ、AAC、Opus等紅船,封裝有MP3、OGG、AAC等

3、數據傳輸:

將(jiāng)編碼完成(chéng)見事後(hòu)的音視頻數據進(jìn)行傳輸,早期你拍的音視頻通過(guò)同軸電纜之類的線黃要纜進(jìn)行傳輸,IP網絡發(fā)展後(hòu),使用內空IP網絡優傳輸

涉及技術或協議:

傳輸協議:RTP與RTCP、RTSP、RTMP、HTTP、HLS(HTTP少腦 Live Streaming)等

控制信令:SIP和SDP、SNMP等

4、解碼數據:

使用相關硬件或軟件對(duì)接收到的編碼後(hòu我市)的音視頻數據進(jìn)行解碼,得到可以吧開直接顯示的圖像/聲音

涉及技術或協議:

一般對(duì)應的編碼器都(dōu)會(h的數uì)帶有相應的解碼器,也有一些第三方解碼插件等

5、播放顯示:

在顯示器(電視、監視屏等)或揚山這聲器(耳機、喇叭等)裡(lǐ),顯示相應的謝通圖像畫面(miàn)或聲音

涉及技術或協議:

顯示器、揚聲器、3D眼鏡等


(二) 視頻推流與視頻拉流的工作過(guò)程解析:

1.視頻推流端

推流,就(jiù)是將(jiāng)采集到的音頻,視頻數據通過(guò)流媒開見體協議發(fā)送到流媒體服務器。

一、選擇流媒體協議

現在直播應用,采用RTMP協議技商居多,也有部分使用HLS協議。

采用RTMP協議,就(jiù)要看下它與流媒體服務器交互的過(guò)程,可城RTMP協議的默認端口是1935,采用TCP用人協議。并且需要了解FLV的封裝格式。

采用HLS協議,因爲涉及到切片,延時(shí)會(huì)比較大,需線如要了解TS流。

二、采集音視頻數據

做直播,數據的來源不可缺少,就(jiù)是采集攝像頭,麥克風的數據。音件

iOS平台上采集音視頻數據,需要使用AVFoundation.Fra店銀mework框架,從captureSessi著如on會(huì)話的回調中獲取下嗎音頻,視頻數據。


三、硬編碼,軟編碼音視頻數據


軟編碼就(jiù)是利用CPU資源來壓縮音視頻數廠嗎據,硬編碼與之相反。

軟編碼的話,現在廣泛采用FFmpeg庫結合編小城碼庫來實現,FFmpeg+X624來編碼視頻數據冷去YUV/RGB輸出H264數據,

FFmpeg+fdk_aac來編碼音頻數據PCM輸出AAC數據。


四、根據所選流媒體協議封包音視頻數據公器

將(jiāng)音頻,視頻打包成(chéng)pac見多ket。


五、與服務器交互發(fā)送封包數據

根據所選流媒體協議,發(fā)送相應拿坐指令連接服務器,連接服務器成(chéng)功後自地(hòu),就(jiù)可以發(fā)送pack術得et數據了。

Part 2. 拉流端

拉流,就(jiù)是從流媒體服務器獲取音頻,視頻遠服數據。

一)、解析協議

播放器端根據URL解析所用的流媒體協議(R醫用TMP,HLS)。

二)、解封裝

解封裝,就(jiù)是demux的過(guò)程,媽我從容器格式(FLV,TS)中,分離出音視頻數用北據。

三)、解碼

解碼,就(jiù)是把獲取到的數據解壓縮,恢複成(chéng)原始數據。解碼數商就(jiù)是將(jiāng)H2師新64變成(chéng)YUV,AAC變成(chéng)PCM。

解碼可以使用軟解碼,硬解碼。

軟解碼就(jiù)是利用CPU資源去解長人壓縮數據,采用的方式是FFmpeg解碼。

硬解碼,對(duì)于iOS平台來說(shuō),可以使用V拿計ideoToolbox.Fra這匠mework(該框架隻能(néng)在iOS 紅綠8.0及以上系統使用)

硬解碼視頻數據。Android平台上,可以使用Media花什Codec來硬解碼視頻數據。

四)、渲染數據

采用OpenGL渲染YUV數據,呈現視頻畫面(miàn)。將(jiāng)P國制CM送入設備的硬件資源播放,産生聲音。

iOS播放流式音頻,使用Audio Queue 的方式,即,利用Audio懂花Toolbox.Framework 框架。

三、 iOS開(kāi)發(fā)之iOS直播平台有用的第做她三方資源共享:

1.  實時(shí)美顔參考網址:https:/些城/altitudelabs.co章話m/blog/real-time-filt好錯er/

2. 直播測試地址:

HLS:https://live.3gv.女劇ifeng.com/live/hongkong.m3u8 鳳凰衛視香在好港台

SMTP:rtmp://live.hkstv.hk.lxdns湖弟.com/live/hks 香港衛視

RSTP:rtsp://rtsp.vdowowza.tvb.com/tvb些也live/mobileinews200木不.stream 互動新聞台1

3.  HLS streaming工具下載,用于銀資處理m3u8音、視頻源的HLS Streaming Tool Do吃很wnload

4. 直播相關SDK

1). VideoCore 在新浪雲你自上有文檔說(shuō)明,可閱讀iO好風S推流SDK使用文檔

2). 網易雲信直播SDK 好(hǎo)像是收費的,價格公朋還(hái)不便宜,一般公司可能(néng)這靜也不會(huì)用,不過(guò)可以購水嘗試看看,了解一下,有助于學(xué)習!

iossdk.html

4). 融雲直播   &n聽海bsp; https://www.rongcloud.cn/live

iossdk.html


5. 直播相關開(kāi)源庫

1). BeautifyFaceDemo 基店視于GPUImage的圖片處理,做美顔方面(miàn)可以參考一下

2).   lf.swift明們 開(kāi)源RTMP Swift版的,可以學(xué)習一下!好(hǎ微能o)像作者是日本的,或者是在日本工作的,寫了不少日文!

3).  PLPlayerKit 一匠老個不依賴FFmpeg的播放器,支持R街分TMP

4).  HLS-Demo  湖下; httpss://github.com/yangchao0033/HL我什S-Demo  HLS播放demo

5). SmarterStreaming  https學月s://github.com/daniulive/Smar文動terStreaming  直亮費播SDK(支持私有協議和RTMP推流,如windows推流/andro地女id推流/iOS推流/windows播放器/a事玩ndroid播放器/iOS播放器)


四、 iOS開(kāi)發(fā)之 iOS 直哥學播平台 常見的視頻直播相關協議詳解


1、RTMP(Real Time Messaging見暗 Protocol,實時(shí)消息傳送協議)

RTMP是Adobe Systems公司爲Flash播呢友放器和服務器之間音頻、視頻和數據傳輸開(kāi)發(fā些白)的開(kāi)放協議。它有三種(zhǒng)變看報種(zhǒng):

1)、工作在TCP之上的明文協議,使用端口1935;

2)、RTMPT封裝在HTTP請求之中,可穿越器數防火牆;

3)、RTMPS類似RTMPT,但使用的是HTTPS連接;

RTMP協議是被(bèi)Flash用于對(du關都ì)象、視頻、音頻的傳輸。這(zhè)個協議建立在TCP協議或者輪務相詢HTTP協議之上。RTMP協議就(jiù)像一個用聽又來裝數據包的容器,這(zhè)些數據既可以是AMF格式的數據,也可以短用是FLV中的視音頻數據。一個單一歌大的連接可以通過(guò)不同的信事通道(dào)傳輸多路網絡流,這公喝(zhè)些通道(dào)中的包都(dōu)是按照固定大小的包傳什多輸的。


2、RTSP(Real Time Stre內筆aming Protocol,實時(shí)流傳輸協議)

RTSP定義了一對(duì)多應用程序如何有效地通過(guò)IP網絡傳送多那知媒體數據。RTSP提供了一個可擴展框架,數據源可以包括實時(shí)林線數據與已有的存儲的數據。該協議目的在于控制多個數據發(fā)送放務連接,爲選擇發(fā)送通道(dào)如UDP、組播U體鐘DP與TCP提供途徑,并爲選擇基于RTP上發(fā)送機制提供方法。

RTSP語法和運作跟HTTP/1.1類似,但并不特别山也強調時(shí)間同步,所以比較能(nén綠些g)容忍網絡延遲。代理服務器的緩存功能(néng)也同女雪樣(yàng)适用于RTSP,并且為物因爲RTSP具有重新導向(xiàng)功能(néng),可根據實際負載情火山況來切換提供服務的服務器,以避討北免過(guò)大的負載集中于同一服務器而造成(chéng)延遲。


3、RTP(Real-time Transport 熱信Protocol,實時(shí)傳輸協議)

RTP是針對(duì)多媒體數據流的一種(zhǒng)傳輸層協議,詳水門細說(shuō)明了在互聯網上傳遞音頻和視頻的标準數據包格務線式。RTP協議常用于流媒體系統(配合RTCP協議),視頻會(huì)議和一鍵東購通系統(配合H.323或SIP),使它成(chéng)爲IP電話産村舞業的技術基礎。

RTP是建立在UDP協議上的,常與RTCP一起(qǐ)使用,其本些湖身并沒(méi)有提供按時(shí)發(fā男熱)送機制或其它服務質量(QoS)保證,它依賴于低層服務去實現這(zh熱哥è)一過(guò)程。

RTP 并不保證傳送或防止無序傳送,也不确定底層網絡的可靠性,們土隻管發(fā)送,不管傳輸是否丢包,也不管接收方是否有收到包。RTP 城門實行有序傳送,RTP中的序列号允許接收方重組發(fā)送方林人的包序列,同時(shí)序列号也能(nén雨事g)用于決定适當的包位置,如在視頻解碼中,就(jiù)不需要順序解碼。


4、RTCP(Real-tim可我e Transport Control P西下rotocol,實時(shí)傳輸控制協議)

RTCP是RTP的配套協議,爲RTP媒體流提供信道(d草女ào)外的控制。RTCP和RTP一起(qǐ)協作將水友(jiāng)多媒體數據打包和發(fā)送票吧,定期在多媒體流會(huì)話參與者之間傳輸控制數據。

RTCP的主要功能(néng)是爲RTP所提供的服地愛務質量(QoS)提供反饋,收集相關媒體連接的統計信息,例如傳輸字節數都照,傳輸分組數,丢失分組數,單向(xiàng)和雙向(xiàng)網絡延遲等等。日愛網絡應用程序可以利用RTCP所提供的信息來提高相校服務質量,比如限制流量或改用壓縮比小的編解碼器。


本文鏈接/index/news/vi的數ew/id/145.html轉載請注明來自會間廣州易動維信息科技!


本文标簽:Default


020-82486599