




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、實用文檔西安云筆直播類APF功能及技術(shù)難點目前市面上直播app有的基本功能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、觀看直播:聊天信
2、息、滾屏彈幕、禮物顯示、加載界面等;8、統(tǒng)計:APPk務(wù)統(tǒng)計、第三方統(tǒng)計等;9、超管:禁播、隱藏、審核等;一個完整直播app原理直播原理:把主播錄制的視頻,推送到服務(wù)器,在由服務(wù)器分發(fā)給觀眾觀看。直播環(huán)節(jié):推流端(采集、美顏處理、編碼、推流)、服務(wù)端處理(轉(zhuǎn)碼、錄制、截圖、鑒黃)、播放器(拉流、解碼、渲染)、互動系統(tǒng)(聊天室、禮物系統(tǒng)、贊)一個完整直播app實現(xiàn)流程1.采集、2.濾鏡處理、3.編碼、4.推流、5.CDN發(fā)、6.拉流、7.解碼、8.播放、9.聊天互動直播App流程標(biāo)準(zhǔn)文案一個完整直播app架構(gòu)直播App架構(gòu)采集端(主播)流媒體服務(wù)器隔放端流程u七中中一捏,奧呂視做駕幅3嘴量4 *
3、1.3 喻播放端(觀眾)一個完整直播app技術(shù)點Ma CCD EUDi1MRlAM «tD1 PAJW-I ibunCi|-ciiP>TM-AQ-kOIiMtin"d fIOS百樣岐術(shù)點"WPR怛附立»"WHWliHltTl!M曲甘,市HGN UlftrF. R 訊 H1FJATTPFEr可居皿事1三元1 3wamMM»g*agaM< fM±D«»Z P-HP -TEP HL-SFLUWB; rMkcr«n.t!iNlLMWHTTnilUli一、流媒體(直播需要用到流媒體)?流媒體開
4、發(fā):網(wǎng)絡(luò)層(socket或st)負(fù)責(zé)傳輸,協(xié)議層(rtmp或hls)負(fù)責(zé)網(wǎng)絡(luò)打包,封裝層(flv、ts)負(fù)責(zé)編解碼數(shù)據(jù)的封裝,編碼層(h.264和aac)負(fù)責(zé)圖像,音頻壓縮。?幀:每幀代表一幅靜止的圖像?GOP:(GroupofPictures)畫面組,一個GO就是一組連續(xù)的畫面,每個畫面都是一幀,一個GO就是很多幀的集合?直播的數(shù)據(jù),其實是一組圖片,包括I幀、P幀、B幀,當(dāng)用戶第一次觀看的時候,會尋找I幀,而播放器會到服務(wù)器尋找到最近的I幀反饋給用戶。因此,GOPCache曾加了端到端延遲,因為它必須要拿到最近的I幀?GOPCache勺長度越長,畫面質(zhì)量越好?碼率:圖片進行壓縮后每秒顯示的數(shù)
5、據(jù)量。?幀率:每秒顯示的圖片數(shù)。影響畫面流暢度,與畫面流暢度成正比:幀率越大,畫面越流暢;幀率越小,畫面越有跳動感。?由于人類眼睛的特殊生理結(jié)構(gòu),如果所看畫面之幀率高于16的時候,就會認(rèn)為是連貫的,此現(xiàn)象稱之為視覺暫留。并且當(dāng)幀速達(dá)到一定數(shù)值后,再增長的話,人眼也不容易察覺到有明顯的流暢度提升了。?分辨率:(矩形)圖片的長度和寬度,即圖片的尺寸?壓縮前的每秒數(shù)據(jù)量:幀率X分到?率(單位應(yīng)該是若干個字節(jié))?壓縮比:壓縮前的每秒數(shù)據(jù)量/碼率(對于同一個視頻源并采用同一種視頻編碼算法,則:壓縮比越高,畫面質(zhì)量越差。)?視頻文件格式:文件的后綴,比如.wmv,.mov,.mp4,.mp3,.avi,?
6、主要用處,根據(jù)文件格式,系統(tǒng)會自動判斷用什么軟件打開,?注意:隨意修改文件格式,對文件的本身不會造成太大的影響,比如把avi改成mp4,文件還是avi.?視頻封裝格式:一種儲存視頻信息的容器,流式封裝可以有TSFLV,索引式的封裝有MP4,MOV,AV售,?主要作用:一個視頻文件往往會包含圖像和音頻,還有一些配置信息(如圖像和音頻的關(guān)聯(lián),如何解碼它們等):這些內(nèi)容需要按照一定的規(guī)則組織、封裝起來.?注意:會發(fā)現(xiàn)封裝格式跟文件格式一樣,因為一般視頻文件格式的后綴名即采用相應(yīng)的視頻封裝格式的名稱,所以視頻文件格式就是視頻封裝格式。?視頻封裝格式和視頻壓縮編碼標(biāo)準(zhǔn):就好像項目工程和編程語言,封裝格式
7、就是一個項目的工程,視頻編碼方式就是編程語言,一個項目工程可以用不同語言開發(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ù):一般都是PC幅式?視頻采樣數(shù)據(jù):一般都是YUV,或RG骼式,采集到的原始音視頻的體積是非常大的,需要
8、經(jīng)過壓縮技術(shù)處理來提高傳輸效率2. 視頻處理(美顏,水印)視頻處理原理:因為視頻最終也是通過GPU一幀一幀渲染到屏幕上的,所以我們可以利用OpenGLE§對視頻幀進行各種加工,從而視頻各種不同的效果,就好像一個水龍頭流出的水,經(jīng)過若干節(jié)管道,然后流向不同的目標(biāo)現(xiàn)在的各種美顏和視頻添加特效的app都是利用GPUImag這個框架實現(xiàn)的。視頻處理框架?GPUImage:GPUImage是一個基于OpenGLES勺一個強大的圖像/視頻處理框架,封裝好了各種濾鏡同時也可以編寫自定義的濾鏡,其本身內(nèi)置了多達(dá)120多種常見的濾鏡效果。?OpenGL:OpenGL(全寫OpenGraphicsLib
9、rary)是個定義了一個跨編程語言、跨平臺的編程接口的規(guī)格,它用于三維圖象(二維的亦可)。OpenG是個專業(yè)的圖形程序接口,是一個功能強大,調(diào)用方便的底層圖形庫。?OpenGLES:OpenGLES(OpenGLforEmbeddedSystems)是OpenGLE;維圖形API的子集,針對手機、PD府口游戲主機等嵌入式設(shè)備而設(shè)計。3. 視頻編碼解碼3.1 視頻編碼框架?FFmpeg:是一個跨平臺的開源視頻框架,能實現(xiàn)如視頻編碼,解碼,轉(zhuǎn)碼,串流,播放等豐富的功能。其支持的視頻格式以及播放協(xié)議非常豐富,幾乎包含了所有音視頻編解碼、封裝格式以及播放協(xié)議。?-Libswresample:可以對音頻
10、進行重采樣,rematrixing以及轉(zhuǎn)換采樣格式等操作。?-Libavcodec:提供了一個通用的編解碼框架,包含了許多視頻,音頻,字幕流等編碼/解碼器。?-Libavformat:用于對視頻進行封裝/解封裝。?-Libavutil:包含一些共用的函數(shù),如隨機數(shù)生成,數(shù)據(jù)結(jié)構(gòu),數(shù)學(xué)運算等。?-Libpostproc:用于進行視頻的一些后期處理。?-Libswscale:用于視頻圖像縮放,顏色空間轉(zhuǎn)換等。?-Libavfilter:提供濾鏡功能。?X264:把視頻原數(shù)據(jù)YUVI碼壓縮成H.264格式?VideoToolbox:蘋果自帶的視頻硬解碼和硬編碼API,但是在iOS8之后才開放。?Au
11、dioToolbox:蘋果自帶的音頻硬解碼和硬編碼API3.2 視頻編碼技術(shù)?視頻壓縮編碼標(biāo)準(zhǔn):對視頻進行壓縮(視頻編碼)或者解壓縮(視頻解碼)的編碼技術(shù),比如MPEG,H.264,這些視頻編碼技術(shù)是壓縮編碼視頻的?主要作用:是將視頻像素數(shù)據(jù)壓縮成為視頻碼流,從而降低視頻的數(shù)據(jù)量。如果視頻不經(jīng)過壓縮編碼的話,體積通常是非常大的,一部電影可能就要上百G勺空間。?注意:最影響視頻質(zhì)量的是其視頻編碼數(shù)據(jù)和音頻編碼數(shù)據(jù),跟封裝格式?jīng)]有多大關(guān)系?MPEG丁種視頻壓縮方式,它采用了幀間壓縮,僅存儲連續(xù)幀之間有差別的地方,從而達(dá)到較大的壓縮比?H.264/AVC:一種視頻壓縮方式,采用事先預(yù)測和與MPEG中
12、的P-B幀一樣的幀預(yù)測方法壓縮,它可以根據(jù)需要產(chǎn)生適合網(wǎng)絡(luò)情況傳輸?shù)囊曨l流,還有更高的壓縮比,有更好的圖象質(zhì)量?注意1:如果是從單個畫面清晰度比較,MPEG4優(yōu)勢;從動作連貫性上的清晰度,H.264有優(yōu)勢?注意2:由于264的算法更加復(fù)雜,程序?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,保
13、留原來的某些技術(shù),同時對一些相關(guān)的技術(shù)加以改進,以改善碼流、編碼質(zhì)量、延時和算法復(fù)雜度之間的關(guān)系,達(dá)到最優(yōu)化設(shè)置。?H.265是一種更為高效的編碼標(biāo)準(zhǔn),能夠在同等畫質(zhì)效果下將內(nèi)容的體積壓縮得更小,傳輸時更快更省帶寬?I幀:(關(guān)鍵幀)保留一副完整的畫面,解碼時只需要本幀數(shù)據(jù)就可以完成(因為包含完整畫面)??P幀:(差別幀)保留這一幀跟之前幀的差別,解碼時需要用之前緩存的畫面疊加上本幀定義的差別,生成最終畫面。(P幀沒有完整畫面數(shù)據(jù),只有與前一幀的畫面差別的數(shù)據(jù))?B幀:(雙向差別幀)保留的是本幀與前后幀的差別,解碼B幀,不僅要取得之前的緩存畫面,還要解碼之后的畫面,通過前后畫面的與本幀數(shù)據(jù)的疊加
14、取得最終的畫面。B幀壓縮率高,彳!是解碼時CPUE較累?幀內(nèi)(Intraframe)壓縮:當(dāng)壓縮一幀圖像時,僅考慮本幀的數(shù)據(jù)而不考慮相鄰幀之間的冗余信息,幀內(nèi)一般采用有損壓縮算法?幀間(Interframe)壓縮:時間壓縮(Temporalcompression),它通過比較時間軸上不同幀之間的數(shù)據(jù)進行壓縮。幀間壓縮一般是無損的?muxing(合成):將視頻流、音頻流甚至是字幕流封裝到一個文件中(容器格式(FLV,TS),作為一個信號進行傳輸。?3.3 音頻編碼技術(shù)AACmp3這些屬于音頻編碼技術(shù),壓縮音頻用3.4 碼率控制多碼率:觀眾所處的網(wǎng)絡(luò)情況是非常復(fù)雜的,有可能是WiFi,有可能4G3
15、G甚至2G,那么怎么滿足多方需求呢?多搞幾條線路,根據(jù)當(dāng)前網(wǎng)絡(luò)環(huán)境自定義碼率。列如:常??匆娨曨l播放軟件中的1024,720,高清,標(biāo)清,流暢等,指的就是各種碼率。3.5 視頻封裝格式?TS:一種流媒體封裝格式,流媒體封裝有一個好處,就是不需要加載索引再播放,大大減少了首次載入的延遲,如果片子比較長,mp做件的索引相當(dāng)大,影響用戶體驗?FLV:一種流媒體封裝格式,由于它形成的文件極小、加載速度極快,使得網(wǎng)絡(luò)觀看視頻文件成為可能,因此FLV#式成為了當(dāng)今主流視頻格式4. 推流4.1 數(shù)據(jù)傳輸框架librtmp:用來傳輸RTMP、議格式的數(shù)據(jù)4.2 流媒體數(shù)據(jù)傳輸協(xié)議RTMP實時消息傳輸協(xié)議,Ad
16、obeSystems公司為Flash播放器和服務(wù)器之間音頻、視頻和數(shù)據(jù)傳輸開發(fā)的開放協(xié)議,因為是開放協(xié)議所以都可以使用了。chunk:消息包?RTMP、議用于對象、視頻、音頻的傳輸。?這個協(xié)議建立在TC前議或者輪詢HTTP?議之上。?RTMP、議就像一個用來裝數(shù)據(jù)包的容器,這些數(shù)據(jù)可以是FLV的視音頻數(shù)據(jù)。一個單一的連接可以通過不同的通道傳輸多路網(wǎng)絡(luò)流,這些通道中的包都是按照固定大小的包傳輸?shù)?. 流媒體服務(wù)器5.1 常用服務(wù)器?SRS一款國人開發(fā)的優(yōu)秀開源流媒體服務(wù)器系統(tǒng)?BMS也是一款流媒體服務(wù)器系統(tǒng),但不開源,是SRS勺商業(yè)版,比SR助能更多?nginx:免費開源web服務(wù)器,常用來配置
17、流媒體服務(wù)器。5.2 數(shù)據(jù)分發(fā)?CDN:(ContentDeliveryNetwork),即內(nèi)容分發(fā)網(wǎng)絡(luò),將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)”邊緣”,使用戶可以就近取得所需的內(nèi)容,解決Internet網(wǎng)絡(luò)擁擠的狀況,提高用戶訪問網(wǎng)站的響應(yīng)速度.? 1.上傳流媒體數(shù)據(jù)到服務(wù)器(源站)? 2.源站存儲流媒體數(shù)據(jù)? 3.客戶端播放流媒體,向CDN!求編碼后的流媒體數(shù)據(jù)? 4.CDN的服務(wù)器響應(yīng)請求,若節(jié)點上沒有該流媒體數(shù)據(jù)存在,則向源站繼續(xù)請求流媒體數(shù)據(jù);若節(jié)點上已經(jīng)緩存了該視頻文件,則跳到第6步。?5.源站響應(yīng)CDN勺請求,將流媒體分發(fā)到相應(yīng)的CDN?點上八、一?6.CDNH等流媒體數(shù)據(jù)發(fā)送到客戶
18、端?CDN代理服務(wù)器,相當(dāng)于一個中介。?CDN:作原理:比如請求流媒體數(shù)據(jù)??回源:當(dāng)有用戶訪問莫一個URL勺時候,如果被解析到的那個CDN?點沒有緩存響應(yīng)的內(nèi)容,或者是緩存已經(jīng)到期,就會回源站去獲取搜索。如果沒有人訪問,那么CDN?點不會主動去源站拿。??帶寬:在固定的時間可傳輸?shù)臄?shù)據(jù)總量,?比如64位、800MHz勺前端總線,它的數(shù)據(jù)傳輸率就等于64bitX800MHzn8(Byte)=6.4GB/s?負(fù)載均衡:由多臺服務(wù)器以對稱的方式組成一個服務(wù)器集合,每臺服務(wù)器都具有等價的地位,都可以單獨對外提供服務(wù)而無須其他服務(wù)器的輔助.?通過某種負(fù)載分擔(dān)技術(shù),將外部發(fā)送來的請求均勻分配到對稱結(jié)構(gòu)中
19、的某一臺服務(wù)器上,而接收到請求的服務(wù)器獨立地回應(yīng)客戶的請求。?均衡負(fù)載能夠平均分配客戶請求到服務(wù)器列陣,籍此提供快速獲取重要數(shù)據(jù),解決大量并發(fā)訪問服務(wù)問題。?這種群集技術(shù)可以用最少的投資獲得接近于大型主機的性能。?QoS(帶寬管理):限制每一個組群的帶寬,讓有限的帶寬發(fā)揮最大的效用6.拉流?直播協(xié)議選擇:?即時性要求較高或有互動需求的可以采用RTMP,RTSP?對于有回放或跨平臺需求的,推薦使用HLS?直播協(xié)議對比直播協(xié)議本質(zhì)原理維護性內(nèi)容延遲防火墻RTMPTCP長連接每個時刻的數(shù)據(jù),收到后立刻轉(zhuǎn)發(fā)跨平臺集(FlashPlayer以外一需要自己移植)1-3秒很多防火墻會墻掉HTTP-FLVHT
20、TP長連接每個時刻的數(shù)據(jù),收到后立刻轉(zhuǎn)發(fā)跨平臺差(FlashPlayer以外.寓曼自己移植13秒不會墻掉HLSHTTP短連接集合一段時間,生成但文件,更新m3u8蹌平曾奸(HVnl5可以立按牖放))10秒不會墻掉?HLS:由Apple公司定義的用于實時流傳輸?shù)膮f(xié)議,HLS基于HTT前議實現(xiàn),傳輸內(nèi)容包括兩部分,一是M3U8苗述文件,二是TS®體文件??蓪崿F(xiàn)流媒體的直播和點播,主要應(yīng)用在iOS系統(tǒng)?HL混以點播的技術(shù)方式來實現(xiàn)直播?HL混自適應(yīng)碼率流播,客戶端會根據(jù)網(wǎng)絡(luò)狀況自動選擇不同碼率的視頻流,條件允許的情況下使用高碼率,網(wǎng)絡(luò)繁忙的時候使用低碼率,并且自動在二者間隨意切?換。這對移
21、動設(shè)備網(wǎng)絡(luò)狀況不穩(wěn)定的情況下保障流暢播放非常有幫助。?實現(xiàn)方法是服務(wù)器端提供多碼率視頻流,并且在列表文件中注明,播放器根據(jù)播放進度和下載速度自動調(diào)整。?HLSWRTMPt比:HLS主要是延時比較大,RTM主要優(yōu)勢在于延時低?HLSB議的小切片方式會生成大量的文件,存儲或處理這些文件會造成大量資源浪費?相比使用RTS的議的好處在于,一旦切分完成,之后的分發(fā)過程完全不需要額外使用任何專門軟件,普通的網(wǎng)絡(luò)服務(wù)器即可,大大降低了CDNfe緣服務(wù)器的配置要求,可以使用任何現(xiàn)成的CDN而一般服務(wù)器很少支持RTSP。?HTTP-FLV:基于HTTP?議流式的傳輸媒體內(nèi)容。?相對于RTMPHTT圖簡單和廣為人
22、知,內(nèi)容延遲同樣可以做到13秒,打開速度更快,因為HTT陣身沒有復(fù)雜的狀態(tài)交互。所以從延遲角度來看,HTTP-FLVg優(yōu)于RTMP?RTSP:實時流傳輸協(xié)議,定義了一對多應(yīng)用程序如何有效地通過IP網(wǎng)絡(luò)傳送多媒體數(shù)據(jù).?RTP:實時傳輸協(xié)議,RTP是建立在UDPJ、議上的,常與RTCP-起使用,其本身并沒有提供按時發(fā)送機制或其它服務(wù)質(zhì)量(Qo0保證,它依賴于低層服務(wù)去實現(xiàn)這一過程。?RTCP:RTP勺配套協(xié)議,主要功能是為RTpff提供的服務(wù)質(zhì)量(Qo0提供反饋,收集相關(guān)媒體連接的統(tǒng)計信息,例如傳輸字節(jié)數(shù),傳輸分組數(shù),丟失分組數(shù),單向和雙向網(wǎng)絡(luò)延遲等等。?7. 解碼7.1 解封裝?demuxing(分離):從視頻流、音頻流,字幕流合成的文件(容器格式(FLV,TS)中,分解出視頻、音頻或字幕,各自進行解碼。7.2 音頻編碼框
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動教育體驗課件
- 景區(qū)標(biāo)牌改造方案
- 食堂分餐規(guī)劃方案
- 玉米生產(chǎn)考試題及答案
- 塑膠工程面試題及答案
- 企業(yè)常用面試題及答案
- 清新區(qū)橋梁拆除方案
- 2026版《全品高考》選考復(fù)習(xí)方案生物949 課時作業(yè)(四十五) 生態(tài)系統(tǒng)的能量流動含答案
- 水利管道開挖方案
- 奇葩語文面試題及答案
- 《老年人出院準(zhǔn)備服務(wù)指南》
- 2025年畜禽屠宰及加工企業(yè)組織結(jié)構(gòu)及部門職責(zé)
- 《工藝流程培訓(xùn)》課件
- 頸椎前路手術(shù)麻醉
- 第一單元 第1課《互聯(lián)網(wǎng)發(fā)展靠創(chuàng)新》說課稿2024-2025學(xué)年人教版(2024)初中信息科技七年級上冊
- 公司項目提成獎勵制度
- 集成電路產(chǎn)品供應(yīng)鏈分析
- DB11T 1430-2017 古樹名木雷電防護技術(shù)規(guī)范
- 電氣專業(yè)知識
- 葡萄酒與西方文化學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 尿素水解器檢修施工方案
評論
0/150
提交評論