目錄
【如何快速的開發(fā)一個完整的iOS直播app】(原理篇)
【如何快速的開發(fā)一個完整的iOS直播app】(播放篇)
【如何快速的開發(fā)一個完整的iOS直播app】(采集篇)
【如何快速的開發(fā)一個完整的iOS直播app】(美顏篇)
前言
大半年沒寫博客了家肯,但我一直關(guān)注著互聯(lián)網(wǎng)的動向瘦陈,最近會研究很多東西门扇,并分享酝蜒,今年移動直播行業(yè)的興起,誕生了一大批網(wǎng)紅熬北,甚至明星也開始直播了酬土,因此不得不跟上時代的步伐管行,由于第一次接觸的原因,因此花了很多時間了解直播准脂,整理了直播的原理变屁,當前只是原理篇,后續(xù)會持續(xù)發(fā)布實戰(zhàn)篇意狠,教你從零開始搭建一個完整的iOS直播app粟关,希望能幫助到更多的人更快的了解直播。
如果喜歡我的文章环戈,可以關(guān)注我微博:袁崢Seemygo
一闷板、個人見解(直播難與易)
直播難:個人認為要想把直播從零開始做出來,絕對是牛逼中的牛逼院塞,大牛中的大牛遮晚,因為直播中運用到的技術(shù)難點非常之多,視頻/音頻處理拦止,圖形處理县遣,視頻/音頻壓縮,CDN分發(fā)汹族,即時通訊等技術(shù)萧求,每一個技術(shù)都夠你學幾年的。
直播易:已經(jīng)有各個領(lǐng)域的大牛顶瞒,封裝好了許多牛逼的框架夸政,我們只需要用別人寫好的框架,就能快速的搭建一個直播app榴徐,也就是傳說中的站在大牛肩膀上編程守问。
二、了解直播
熱門直播產(chǎn)品
映客坑资,斗魚耗帕,熊貓,虎牙袱贮,花椒等等
直播效果圖
直播效果.jpeg
1.一個完整直播app功能(來自落影l(fā)oyinglin分享)
1仿便、聊天
私聊、聊天室、點亮探越、推送狡赐、黑名單等;
2、禮物
普通禮物钦幔、豪華禮物枕屉、紅包、排行榜鲤氢、第三方充值搀擂、內(nèi)購、禮物動態(tài)更新卷玉、提現(xiàn)等哨颂;
3、直播列表
關(guān)注相种、熱門威恼、最新、分類直播用戶列表等寝并;
4箫措、自己直播
錄制、推流衬潦、解碼斤蔓、播放、美顏镀岛、心跳弦牡、后臺切換、主播對管理員操作漂羊、管理員對用戶等驾锰;
5、房間邏輯
創(chuàng)建房間拨与、進入房間稻据、退出房間艾猜、關(guān)閉房間买喧、切換房間、房間管理員設(shè)置匆赃、房間用戶列表等淤毛;
6、用戶邏輯
普通登陸算柳、第三方登陸低淡、注冊、搜索、修改個人信息蔗蹋、關(guān)注列表何荚、粉絲列表、忘記密碼猪杭、查看個人信息餐塘、收入榜、關(guān)注和取關(guān)皂吮、檢索等戒傻;
7、觀看直播
聊天信息蜂筹、滾屏彈幕需纳、禮物顯示、加載界面等艺挪;
8不翩、統(tǒng)計
APP業(yè)務(wù)統(tǒng)計、第三方統(tǒng)計等麻裳;
9慌盯、超管
禁播、隱藏掂器、審核等亚皂;
2.一個完整直播app原理
直播原理:把主播錄制的視頻,推送到服務(wù)器国瓮,在由服務(wù)器分發(fā)給觀眾觀看灭必。
直播環(huán)節(jié):推流端(采集、美顏處理乃摹、編碼禁漓、推流)、服務(wù)端處理(轉(zhuǎn)碼孵睬、錄制播歼、截圖、鑒黃)掰读、播放器(拉流秘狞、解碼、渲染)蹈集、互動系統(tǒng)(聊天室烁试、禮物系統(tǒng)、贊)
3.一個完整直播app實現(xiàn)流程
1.采集拢肆、2.濾鏡處理减响、3.編碼靖诗、4.推流、5.CDN分發(fā)支示、6.拉流刊橘、7.解碼、8.播放颂鸿、9.聊天互動
直播流程.png
4.一個完整直播app架構(gòu)
直播架構(gòu).png
5.一個完整直播app技術(shù)點
WeChat_1472043345.jpeg
三伤为、了解流媒體(直播需要用到流媒體)
流媒體開發(fā):網(wǎng)絡(luò)層(socket或st)負責傳輸,協(xié)議層(rtmp或hls)負責網(wǎng)絡(luò)打包据途,封裝層(flv绞愚、ts)負責編解碼數(shù)據(jù)的封裝,編碼層(h.264和aac)負責圖像颖医,音頻壓縮位衩。
幀:每幀代表一幅靜止的圖像
GOP:(Group of Pictures)畫面組,一個GOP就是一組連續(xù)的畫面熔萧,每個畫面都是一幀糖驴,一個GOP就是很多幀的集合
直播的數(shù)據(jù),其實是一組圖片佛致,包括I幀贮缕、P幀、B幀俺榆,當用戶第一次觀看的時候感昼,會尋找I幀,而播放器會到服務(wù)器尋找到最近的I幀反饋給用戶罐脊。因此定嗓,GOP Cache增加了端到端延遲,因為它必須要拿到最近的I幀
GOP Cache的長度越長萍桌,畫面質(zhì)量越好
碼率:圖片進行壓縮后每秒顯示的數(shù)據(jù)量宵溅。
幀率:每秒顯示的圖片數(shù)。影響畫面流暢度上炎,與畫面流暢度成正比:幀率越大恃逻,畫面越流暢;幀率越小藕施,畫面越有跳動感寇损。
由于人類眼睛的特殊生理結(jié)構(gòu),如果所看畫面之幀率高于16的時候铅碍,就會認為是連貫的掰吕,此現(xiàn)象稱之為視覺暫留潮瓶。并且當幀速達到一定數(shù)值后芝囤,再增長的話,人眼也不容易察覺到有明顯的流暢度提升了潮饱。
分辨率:(矩形)圖片的長度和寬度,即圖片的尺寸
壓縮前的每秒數(shù)據(jù)量:幀率X分辨率(單位應該是若干個字節(jié))
壓縮比:壓縮前的每秒數(shù)據(jù)量/碼率 (對于同一個視頻源并采用同一種視頻編碼算法澄港,則:壓縮比越高森枪,畫面質(zhì)量越差。)
視頻文件格式:文件的后綴径密,比如.wmv,.mov,.mp4,.mp3,.avi,
主要用處午阵,根據(jù)文件格式,系統(tǒng)會自動判斷用什么軟件打開,
注意: 隨意修改文件格式享扔,對文件的本身不會造成太大的影響底桂,比如把avi改成mp4,文件還是avi.
視頻封裝格式:一種儲存視頻信息的容器,流式封裝可以有TS惧眠、FLV等籽懦,索引式的封裝有MP4,MOV,AVI等,
主要作用:一個視頻文件往往會包含圖像和音頻氛魁,還有一些配置信息(如圖像和音頻的關(guān)聯(lián)暮顺,如何解碼它們等):這些內(nèi)容需要按照一定的規(guī)則組織、封裝起來.
注意:會發(fā)現(xiàn)封裝格式跟文件格式一樣秀存,因為一般視頻文件格式的后綴名即采用相應的視頻封裝格式的名稱,所以視頻文件格式就是視頻封裝格式捶码。
視頻封裝格式和視頻壓縮編碼標準:就好像項目工程和編程語言,封裝格式就是一個項目的工程或链,視頻編碼方式就是編程語言惫恼,一個項目工程可以用不同語言開發(fā)。
四澳盐、直播基礎(chǔ)知識介紹:
1.采集視頻尤筐、音頻
*1.1 采集視頻、音頻編碼框架*
AVFoundation:AVFoundation是用來播放和創(chuàng)建實時的視聽媒體數(shù)據(jù)的框架洞就,同時提供Objective-C接口來操作這些視聽數(shù)據(jù)盆繁,比如編輯,旋轉(zhuǎn)旬蟋,重編碼
*1.2 視頻油昂、音頻硬件設(shè)備*
CCD:圖像傳感器: 用于圖像采集和處理的過程,把圖像轉(zhuǎn)換成電信號倾贰。
拾音器:聲音傳感器: 用于聲音采集和處理的過程冕碟,把聲音轉(zhuǎn)換成電信號。
音頻采樣數(shù)據(jù):一般都是PCM格式
視頻采樣數(shù)據(jù): 一般都是YUV,或RGB格式匆浙,采集到的原始音視頻的體積是非常大的安寺,需要經(jīng)過壓縮技術(shù)處理來提高傳輸效率
2.視頻處理(美顏,水邮啄帷)
視頻處理原理:因為視頻最終也是通過GPU挑庶,一幀一幀渲染到屏幕上的言秸,所以我們可以利用OpenGL ES,對視頻幀進行各種加工迎捺,從而視頻各種不同的效果举畸,就好像一個水龍頭流出的水,經(jīng)過若干節(jié)管道凳枝,然后流向不同的目標
現(xiàn)在的各種美顏和視頻添加特效的app都是利用GPUImage這個框架實現(xiàn)的,.
*視頻處理框架*
GPUImage: GPUImage是一個基于OpenGL ES的一個強大的圖像/視頻處理框架,封裝好了各種濾鏡同時也可以編寫自定義的濾鏡,其本身內(nèi)置了多達120多種常見的濾鏡效果抄沮。
OpenGL:OpenGL(全寫Open Graphics Library)是個定義了一個跨編程語言、跨平臺的編程接口的規(guī)格岖瑰,它用于三維圖象(二維的亦可)叛买。OpenGL是個專業(yè)的圖形程序接口,是一個功能強大蹋订,調(diào)用方便的底層圖形庫率挣。
OpenGL ES:OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三維圖形 API 的子集,針對手機辅辩、PDA和游戲主機等嵌入式設(shè)備而設(shè)計难礼。
3.視頻編碼解碼
*3.1 視頻編碼框架*
FFmpeg:是一個跨平臺的開源視頻框架,能實現(xiàn)如視頻編碼,解碼,轉(zhuǎn)碼,串流,播放等豐富的功能。其支持的視頻格式以及播放協(xié)議非常豐富,幾乎包含了所有音視頻編解碼玫锋、封裝格式以及播放協(xié)議蛾茉。
-Libswresample:可以對音頻進行重采樣,rematrixing 以及轉(zhuǎn)換采樣格式等操 作。
-Libavcodec:提供了一個通用的編解碼框架,包含了許多視頻,音頻,字幕流 等編碼/解碼器撩鹿。
-Libavformat:用于對視頻進行封裝/解封裝谦炬。
-Libavutil:包含一些共用的函數(shù),如隨機數(shù)生成,數(shù)據(jù)結(jié)構(gòu),數(shù)學運算等。
-Libpostproc:用于進行視頻的一些后期處理节沦。
-Libswscale:用于視頻圖像縮放,顏色空間轉(zhuǎn)換等键思。
-Libavfilter:提供濾鏡功能。
X264:把視頻原數(shù)據(jù)YUV編碼壓縮成H.264格式
VideoToolbox:蘋果自帶的視頻硬解碼和硬編碼API甫贯,但是在iOS8之后才開放吼鳞。
AudioToolbox:蘋果自帶的音頻硬解碼和硬編碼API
*3.2 視頻編碼技術(shù)*
視頻壓縮編碼標準:對視頻進行壓縮(視頻編碼)或者解壓縮(視頻解碼)的編碼技術(shù),比如MPEG,H.264,這些視頻編碼技術(shù)是壓縮編碼視頻的
主要作用:是將視頻像素數(shù)據(jù)壓縮成為視頻碼流叫搁,從而降低視頻的數(shù)據(jù)量赔桌。如果視頻不經(jīng)過壓縮編碼的話,體積通常是非常大的渴逻,一部電影可能就要上百G的空間疾党。
注意:最影響視頻質(zhì)量的是其視頻編碼數(shù)據(jù)和音頻編碼數(shù)據(jù),跟封裝格式?jīng)]有多大關(guān)系
MPEG:一種視頻壓縮方式惨奕,它采用了幀間壓縮雪位,僅存儲連續(xù)幀之間有差別的地方 ,從而達到較大的壓縮比
H.264/AVC:一種視頻壓縮方式,采用事先預測和與MPEG中的P-B幀一樣的幀預測方法壓縮梨撞,它可以根據(jù)需要產(chǎn)生適合網(wǎng)絡(luò)情況傳輸?shù)囊曨l流,還有更高的壓縮比雹洗,有更好的圖象質(zhì)量
注意1:如果是從單個畫面清晰度比較香罐,MPEG4有優(yōu)勢;從動作連貫性上的清晰度队伟,H.264有優(yōu)勢
注意2:由于264的算法更加復雜穴吹,程序?qū)崿F(xiàn)煩瑣幽勒,運行它需要更多的處理器和內(nèi)存資源嗜侮。因此,運行264對系統(tǒng)要求是比較高的啥容。
注意3:由于264的實現(xiàn)更加靈活锈颗,它把一些實現(xiàn)留給了廠商自己去實現(xiàn),雖然這樣給實現(xiàn)帶來了很多好處咪惠,但是不同產(chǎn)品之間互通成了很大的問題击吱,造成了通過A公司的編碼器編出的數(shù)據(jù),必須通過A公司的解碼器去解這樣尷尬的事情
H.265/HEVC:一種視頻壓縮方式,基于H.264遥昧,保留原來的某些技術(shù)覆醇,同時對一些相關(guān)的技術(shù)加以改進,以改善碼流炭臭、編碼質(zhì)量永脓、延時和算法復雜度之間的關(guān)系,達到最優(yōu)化設(shè)置鞋仍。
H.265 是一種更為高效的編碼標準常摧,能夠在同等畫質(zhì)效果下將內(nèi)容的體積壓縮得更小,傳輸時更快更省帶寬
I幀:(關(guān)鍵幀)保留一副完整的畫面威创,解碼時只需要本幀數(shù)據(jù)就可以完成(因為包含完整畫面)
P幀:(差別幀)保留這一幀跟之前幀的差別落午,解碼時需要用之前緩存的畫面疊加上本幀定義的差別,生成最終畫面肚豺。(P幀沒有完整畫面數(shù)據(jù)溃斋,只有與前一幀的畫面差別的數(shù)據(jù))
B幀:(雙向差別幀)保留的是本幀與前后幀的差別,解碼B幀吸申,不僅要取得之前的緩存畫面梗劫,還要解碼之后的畫面,通過前后畫面的與本幀數(shù)據(jù)的疊加取得最終的畫面呛谜。B幀壓縮率高在跳,但是解碼時CPU會比較累
幀內(nèi)(Intraframe)壓縮:當壓縮一幀圖像時,僅考慮本幀的數(shù)據(jù)而不考慮相鄰幀之間的冗余信息,幀內(nèi)一般采用有損壓縮算法
幀間(Interframe)壓縮:時間壓縮(Temporal compression)隐岛,它通過比較時間軸上不同幀之間的數(shù)據(jù)進行壓縮猫妙。幀間壓縮一般是無損的
muxing(合成):將視頻流、音頻流甚至是字幕流封裝到一個文件中(容器格式(FLV聚凹,TS))割坠,作為一個信號進行傳輸齐帚。
*3.3 音頻編碼技術(shù)*
AAC,mp3:這些屬于音頻編碼技術(shù),壓縮音頻用
*3.4碼率控制*
多碼率:觀眾所處的網(wǎng)絡(luò)情況是非常復雜的彼哼,有可能是WiFi对妄,有可能4G、3G敢朱、甚至2G剪菱,那么怎么滿足多方需求呢?多搞幾條線路拴签,根據(jù)當前網(wǎng)絡(luò)環(huán)境自定義碼率孝常。
列如:常常看見視頻播放軟件中的1024蚓哩,720构灸,高清,標清岸梨,流暢等喜颁,指的就是各種碼率。
*3.5 視頻封裝格式*
TS: 一種流媒體封裝格式曹阔,流媒體封裝有一個好處半开,就是不需要加載索引再播放,大大減少了首次載入的延遲次兆,如果片子比較長稿茉,mp4文件的索引相當大,影響用戶體驗
為什么要用TS:這是因為兩個TS片段可以無縫拼接芥炭,播放器能連續(xù)播放
FLV: 一種流媒體封裝格式,由于它形成的文件極小漓库、加載速度極快,使得網(wǎng)絡(luò)觀看視頻文件成為可能,因此FLV格式成為了當今主流視頻格式
4.推流
*4.1 數(shù)據(jù)傳輸框架*
librtmp:用來傳輸RTMP協(xié)議格式的數(shù)據(jù)
*4.2 流媒體數(shù)據(jù)傳輸協(xié)議*
RTMP:實時消息傳輸協(xié)議,Adobe Systems公司為Flash播放器和服務(wù)器之間音頻园蝠、視頻和數(shù)據(jù)傳輸開發(fā)的開放協(xié)議渺蒿,因為是開放協(xié)議所以都可以使用了。
RTMP協(xié)議用于對象彪薛、視頻茂装、音頻的傳輸。
這個協(xié)議建立在TCP協(xié)議或者輪詢HTTP協(xié)議之上善延。
RTMP協(xié)議就像一個用來裝數(shù)據(jù)包的容器少态,這些數(shù)據(jù)可以是FLV中的視音頻數(shù)據(jù)。一個單一的連接可以通過不同的通道傳輸多路網(wǎng)絡(luò)流易遣,這些通道中的包都是按照固定大小的包傳輸?shù)?/p>
chunk:消息包
5.流媒體服務(wù)器
*5.1常用服務(wù)器*
SRS:一款國人開發(fā)的優(yōu)秀開源流媒體服務(wù)器系統(tǒng)
BMS:也是一款流媒體服務(wù)器系統(tǒng)彼妻,但不開源,是SRS的商業(yè)版,比SRS功能更多
nginx:免費開源web服務(wù)器侨歉,常用來配置流媒體服務(wù)器屋摇。
*5.2數(shù)據(jù)分發(fā)*
CDN:(Content Delivery Network),即內(nèi)容分發(fā)網(wǎng)絡(luò),將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)”邊緣”幽邓,使用戶可以就近取得所需的內(nèi)容炮温,解決 Internet網(wǎng)絡(luò)擁擠的狀況,提高用戶訪問網(wǎng)站的響應速度.
CDN:代理服務(wù)器牵舵,相當于一個中介柒啤。
CDN工作原理:比如請求流媒體數(shù)據(jù)
1.上傳流媒體數(shù)據(jù)到服務(wù)器(源站)
2.源站存儲流媒體數(shù)據(jù)
3.客戶端播放流媒體,向CDN請求編碼后的流媒體數(shù)據(jù)
4.CDN的服務(wù)器響應請求棋枕,若節(jié)點上沒有該流媒體數(shù)據(jù)存在白修,則向源站繼續(xù)請求流媒體數(shù)據(jù)妒峦;若節(jié)點上已經(jīng)緩存了該視頻文件重斑,則跳到第6步。
5.源站響應CDN的請求肯骇,將流媒體分發(fā)到相應的CDN節(jié)點上
6.CDN將流媒體數(shù)據(jù)發(fā)送到客戶端
回源:當有用戶訪問某一個URL的時候窥浪,如果被解析到的那個CDN節(jié)點沒有緩存響應的內(nèi)容,或者是緩存已經(jīng)到期笛丙,就會回源站去獲取搜索漾脂。如果沒有人訪問,那么CDN節(jié)點不會主動去源站拿.
帶寬:在固定的時間可傳輸?shù)臄?shù)據(jù)總量胚鸯,
比如64位骨稿、800MHz的前端總線,它的數(shù)據(jù)傳輸率就等于64bit×800MHz÷8(Byte)=6.4GB/s
負載均衡: 由多臺服務(wù)器以對稱的方式組成一個服務(wù)器集合姜钳,每臺服務(wù)器都具有等價的地位坦冠,都可以單獨對外提供服務(wù)而無須其他服務(wù)器的輔助.
通過某種負載分擔技術(shù),將外部發(fā)送來的請求均勻分配到對稱結(jié)構(gòu)中的某一臺服務(wù)器上哥桥,而接收到請求的服務(wù)器獨立地回應客戶的請求辙浑。
均衡負載能夠平均分配客戶請求到服務(wù)器列陣,籍此提供快速獲取重要數(shù)據(jù)拟糕,解決大量并發(fā)訪問服務(wù)問題判呕。
這種群集技術(shù)可以用最少的投資獲得接近于大型主機的性能。
QoS(帶寬管理):限制每一個組群的帶寬送滞,讓有限的帶寬發(fā)揮最大的效用
6.拉流
直播協(xié)議選擇:
即時性要求較高或有互動需求的可以采用RTMP,RTSP
對于有回放或跨平臺需求的侠草,推薦使用HLS
直播協(xié)議對比:
直播協(xié)議對比.png
HLS:由Apple公司定義的用于實時流傳輸?shù)膮f(xié)議,HLS基于HTTP協(xié)議實現(xiàn),傳輸內(nèi)容包括兩部分犁嗅,一是M3U8描述文件边涕,二是TS媒體文件±⒂矗可實現(xiàn)流媒體的直播和點播奥吩,主要應用在iOS系統(tǒng)
HLS是以點播的技術(shù)方式來實現(xiàn)直播
HLS是自適應碼率流播哼蛆,客戶端會根據(jù)網(wǎng)絡(luò)狀況自動選擇不同碼率的視頻流,條件允許的情況下使用高碼率霞赫,網(wǎng)絡(luò)繁忙的時候使用低碼率腮介,并且自動在二者間隨意切
換。這對移動設(shè)備網(wǎng)絡(luò)狀況不穩(wěn)定的情況下保障流暢播放非常有幫助端衰。
實現(xiàn)方法是服務(wù)器端提供多碼率視頻流叠洗,并且在列表文件中注明,播放器根據(jù)播放進度和下載速度自動調(diào)整旅东。
HLS與RTMP對比:HLS主要是延時比較大灭抑,RTMP主要優(yōu)勢在于延時低
HLS協(xié)議的小切片方式會生成大量的文件,存儲或處理這些文件會造成大量資源浪費
相比使用RTSP協(xié)議的好處在于抵代,一旦切分完成腾节,之后的分發(fā)過程完全不需要額外使用任何專門軟件,普通的網(wǎng)絡(luò)服務(wù)器即可荤牍,大大降低了CDN邊緣服務(wù)器的配置要求案腺,可以使用任何現(xiàn)成的CDN,而一般服務(wù)器很少支持RTSP。
HTTP-FLV:基于HTTP協(xié)議流式的傳輸媒體內(nèi)容康吵。
相對于RTMP劈榨,HTTP更簡單和廣為人知,內(nèi)容延遲同樣可以做到1~3秒晦嵌,打開速度更快同辣,因為HTTP本身沒有復雜的狀態(tài)交互。所以從延遲角度來看惭载,HTTP-FLV要優(yōu)于RTMP旱函。
RTSP:實時流傳輸協(xié)議,定義了一對多應用程序如何有效地通過IP網(wǎng)絡(luò)傳送多媒體數(shù)據(jù).
RTP:實時傳輸協(xié)議,RTP是建立在UDP協(xié)議上的,常與RTCP一起使用棕兼,其本身并沒有提供按時發(fā)送機制或其它服務(wù)質(zhì)量(QoS)保證陡舅,它依賴于低層服務(wù)去實現(xiàn)這一過程。
RTCP:RTP的配套協(xié)議,主要功能是為RTP所提供的服務(wù)質(zhì)量(QoS)提供反饋伴挚,收集相關(guān)媒體連接的統(tǒng)計信息靶衍,例如傳輸字節(jié)數(shù),傳輸分組數(shù)茎芋,丟失分組數(shù)颅眶,單向和雙向網(wǎng)絡(luò)延遲等等。
7.解碼
*7.1 解封裝*
demuxing(分離):從視頻流田弥、音頻流涛酗,字幕流合成的文件(容器格式(FLV,TS))中, 分解出視頻商叹、音頻或字幕燕刻,各自進行解碼。
*7.2 音頻編碼框架*
fdk_aac:音頻編碼解碼框架剖笙,PCM音頻數(shù)據(jù)和AAC音頻數(shù)據(jù)互轉(zhuǎn)
*7.3 解碼介紹*
硬解碼:用GPU來解碼卵洗,減少CPU運算
優(yōu)點:播放流暢、低功耗弥咪,解碼速度快过蹂,
*? ? 缺點:兼容不好
軟解碼:用CPU來解碼
優(yōu)點:兼容好
*? ? 缺點:加大CPU負擔,耗電增加聚至、沒有硬解碼流暢酷勺,解碼速度相對慢
8.播放
ijkplayer:一個基于FFmpeg的開源Android/iOS視頻播放器
API易于集成;
編譯配置可裁剪扳躬,方便控制安裝包大写嗨摺;
支持硬件加速解碼坦报,更加省電
簡單易用库说,指定拉流URL,自動解碼播放.
9.聊天互動
IM:(InstantMessaging)即時通訊:是一個實時通信系統(tǒng)片择,允許兩人或多人使用網(wǎng)絡(luò)實時的傳遞文字消息、文件骚揍、語音與視頻交流.
IM在直播系統(tǒng)中的主要作用是實現(xiàn)觀眾與主播字管、觀眾與觀眾之間的文字互動.
*第三方SDK*
騰訊云:騰訊提供的即時通訊SDK,可作為直播的聊天室
融云:一個比較常用的即時通訊SDK信不,可作為直播的聊天室
五嘲叔、如何快速的開發(fā)一個完整的iOS直播app
1、利用第三方直播SDK快速的開發(fā)
七牛云:七牛直播云是專為直播平臺打造的全球化直播流服務(wù)和一站式實現(xiàn)SDK端到端直播場景的企業(yè)級直播云服務(wù)平臺.
*熊貓TV,龍珠TV等直播平臺都是用的七牛云
網(wǎng)易視頻云:基于專業(yè)的跨平臺視頻編解碼技術(shù)和大規(guī)模視頻內(nèi)容分發(fā)網(wǎng)絡(luò)抽活,提供穩(wěn)定流暢硫戈、低延時、高并發(fā)的實時音視頻服務(wù)下硕,可將視頻直播無縫對接到自身App.
2丁逝、第三方SDK公司為什么要提供SDK給我們?
希望把我們的產(chǎn)品和它綁在一條船上梭姓,更加的依賴它霜幼。
技術(shù)生錢,幫養(yǎng)一大批牛B的程序員
3誉尖、直播功能:自研還是使用第三方直播SDK開發(fā)罪既?
第三方SDK開發(fā): 對于一個初創(chuàng)團隊來講,自研直播不管在技術(shù)門檻、CDN琢感、帶寬上都是有很大的門檻的丢间,而且需要耗費大量的時間才能做出成品,不利于拉投資驹针。
自研:公司直播平臺大千劈,從長遠看,自研可以節(jié)省成本牌捷,技術(shù)成面比直接用SDK可控多了墙牌。
4.第三方SDK好處
降低成本
使用好的第三方企業(yè)服務(wù),將不用再花高價請獵頭去挖昂貴的大牛暗甥,也不用去安撫大牛們個性化的脾氣
提升效率
第三方服務(wù)的專注與代碼集成所帶來的方便喜滨,所花費的時間可能僅僅是1-2個小時,節(jié)約近99%的時間撤防,足夠換取更多的時間去和競爭對手斗智斗勇虽风,增加更大的成功可能性
降低風險
借助專業(yè)的第三方服務(wù),由于它的快速寄月、專業(yè)辜膝、穩(wěn)定等特點,能夠極大地加強產(chǎn)品的競爭能力(優(yōu)質(zhì)服務(wù)漾肮、研發(fā)速度等)厂抖,縮短試錯時間,必將是創(chuàng)業(yè)中保命的手段之一
專業(yè)的事克懊,找專業(yè)的人來做
第三方服務(wù)最少是10-20人的團隊專注地解決同一個問題忱辅,做同一件事情。第三方服務(wù)所帶來的支持效果谭溉,絕不是通過1-2個人處理所能對比的墙懂,難道不是嗎
作者:袁崢
鏈接:http://www.reibang.com/p/bd42bacbe4cc
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)扮念,非商業(yè)轉(zhuǎn)載請注明出處损搬。