乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      產(chǎn)品經(jīng)理,你要了解一些音視頻技術(shù) | 人人都是產(chǎn)品經(jīng)理

       昵稱11458597 2019-05-15

      在當(dāng)今的移動(dòng)互聯(lián)網(wǎng)時(shí)代,直播類產(chǎn)品我們?cè)偈煜げ贿^(guò)了,比如看游戲直播、給美女主播打賞、聽(tīng)直播課程等。此外,伴隨著抖音、快手等短視頻類應(yīng)用的爆發(fā),視頻類產(chǎn)品更是時(shí)刻充斥著我們的生活。那么,直播類或者視頻的產(chǎn)品背后涉及到的音視頻技術(shù)知識(shí)都有哪些呢?本文將從直播類產(chǎn)品的基礎(chǔ)架構(gòu)出發(fā),闡述一些基礎(chǔ)的音視頻技術(shù)知識(shí)。

      (音視頻領(lǐng)域博大精深,本文僅從一個(gè)PM的角度出發(fā),總結(jié)一些最基本的內(nèi)容)

      一、直播的基礎(chǔ)架構(gòu)

      一個(gè)直播功能通用的基礎(chǔ)架構(gòu)涉及三個(gè)部分,即音視頻采集端、云服務(wù)端和音視頻播放端。

      如下圖,是一個(gè)APP直播功能的架構(gòu):

      從上圖中我們可以看到,每一個(gè)部分都有各自要處理的一些工作。

      總體來(lái)說(shuō),視頻直播類功能的整體流程包括以下內(nèi)容:

      1. 音視頻采集

      2. 音視頻處理

      3. 音視頻編碼和封裝

      4. 推流

      5. 流媒體服務(wù)器處理

      6. 拉流

      7. 音視頻解碼

      8. 音視頻播放

      在具體了解每個(gè)流程之前,我們先從音視頻的基本知識(shí)入手。

      二、音視頻技術(shù)基礎(chǔ)

      1. 音頻

      聲音:

      我們平時(shí)在手機(jī)或電腦里聽(tīng)到的音頻,是已經(jīng)數(shù)字化了的音頻模擬信號(hào)。最初,這些音頻都是始于物理的聲音。

      中學(xué)物理都學(xué)過(guò),聲音是波,是通過(guò)物體的振動(dòng)產(chǎn)生的。

      聲波具有三要素:

      • 音調(diào):也叫音頻,頻率越高,波長(zhǎng)就會(huì)越短,而低頻聲響的波長(zhǎng)則較長(zhǎng)。所以這樣的聲音更容易繞過(guò)障礙物。能量衰減就越小,聲音就會(huì)傳播的越遠(yuǎn);

      • 音量:就是振動(dòng)的幅度。用不同的力度敲打桌面,聲音的大小勢(shì)必發(fā)生變換。在生活中,我們用分貝描述聲音的響度;

      • 音色:在同樣的頻率和響度下,不同的物體發(fā)出的聲音不一樣。波形的形狀決定了聲音的音色。因?yàn)椴煌慕橘|(zhì)所產(chǎn)生的波形不同,就會(huì)產(chǎn)生不一樣的音色。

      模擬信號(hào)的數(shù)字化過(guò)程:

      模擬信號(hào)的數(shù)字化過(guò)程,就是將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)的過(guò)程,包括采樣、量化和編碼。

      我們可以通過(guò)下圖理解這一過(guò)程:

      • 采樣:可以理解為在時(shí)間軸上對(duì)信號(hào)進(jìn)行數(shù)字化。通常用采樣率來(lái)保證一定頻率范圍內(nèi)的聲音可以被數(shù)字化成功,比如:采樣頻率一般是44.1KHZ,指的就是1秒會(huì)采樣44100次。

      • 量化:指的是在幅度軸上對(duì)信號(hào)進(jìn)行數(shù)字化,就是聲音波形的數(shù)據(jù)是多少位的二進(jìn)制數(shù)據(jù),單位是bit。比如:常用16bit的二進(jìn)制信號(hào)來(lái)存放一個(gè)采樣,這又叫做量化級(jí)。量化級(jí)是數(shù)字聲音質(zhì)量的重要指標(biāo),通常將聲音描述為24bit(量化級(jí))、48KHZ(采樣率)。

      • 編碼:按照一定的格式記錄采樣和量化后的數(shù)據(jù)。音頻編碼的格式有很多種,通常所說(shuō)的音頻裸數(shù)據(jù)指的是脈沖編碼調(diào)制(PCM)數(shù)據(jù)。PCM音頻流的碼率可以用來(lái)描述PCM數(shù)據(jù),它的計(jì)算公式是:采樣頻率*采樣大?。炕?jí))*聲道數(shù)(單聲道、雙聲道和多聲道)。

      通過(guò)上述的流程,就實(shí)現(xiàn)了音頻信號(hào)的數(shù)字化過(guò)程。轉(zhuǎn)為數(shù)字信號(hào)之后,就可以對(duì)這些數(shù)據(jù)進(jìn)行存儲(chǔ)、播放、復(fù)制獲取等其他操作了。

      音頻編碼:

      上面我們說(shuō)到了,編碼就是按照一定的格式記錄采樣和量化后的數(shù)據(jù),那么到底為什么需要編碼呢?

      采集和量化后的數(shù)據(jù)是非常大的,從存儲(chǔ)或者網(wǎng)絡(luò)實(shí)時(shí)傳播的角度來(lái)說(shuō),這個(gè)數(shù)據(jù)量都太大了。對(duì)于存儲(chǔ)和傳輸都是非常具有挑戰(zhàn)的,所以我們需要通過(guò)編碼來(lái)進(jìn)行壓縮。

      壓縮編碼的指標(biāo)是壓縮比,壓縮比通常是小于1的。

      壓縮編碼算法分為2種:有損壓縮和無(wú)損壓縮。

      • 無(wú)損壓縮:解壓后的數(shù)據(jù)可以完全復(fù)原。在常用的壓縮格式。用的較多的都是有損壓縮。

      • 有損壓縮:解壓后的數(shù)據(jù)不能完全復(fù)原,會(huì)丟失一部分信息。壓縮比越小,丟失的信息就會(huì)越多,信號(hào)還原的失真就會(huì)越大。

      壓縮編碼的實(shí)質(zhì)就是壓縮冗余的信號(hào),冗余信號(hào)就是指不能被人耳感知的信號(hào),包括:人耳聽(tīng)覺(jué)范圍之外的音頻信號(hào)以及被掩蓋掉的音頻信號(hào)。信號(hào)的掩蔽可以分為頻域掩蔽和時(shí)域掩蔽,關(guān)于信號(hào)的掩蔽大家可以自行百度一下,這里就不做過(guò)多闡述了。

      那么,音頻壓縮編碼的常用格式都有哪些呢?

      主要包括:WMA編碼;MP3編碼;AAC編碼,這個(gè)是現(xiàn)在比較熱門的有損壓縮編碼技術(shù),也是目前在直播或小視頻中常用的編碼格式;OGG編碼等。

      2. 視頻

      數(shù)字視頻:

      我們平時(shí)在手機(jī)或PC上看到的視頻,是由內(nèi)容元素、編碼格式和封裝容器構(gòu)成的。

      • 內(nèi)容元素:包括圖像(Image)、音頻(Audio)和元信息(Metadata)。

      • 編碼格式:包括視頻常用編碼格式H264,和音頻常用編碼格式AAC。

      • 封裝容器:這就是常見(jiàn)的文件格式,如MP4、MOV、FLV、RMVB、AVI等等。

      圖像:

      圖像是人對(duì)視覺(jué)感知的物質(zhì)重現(xiàn)。三維圖像的對(duì)象包括:深度、紋理和亮度信息,二維圖像包括紋理和亮度信息,我們可以簡(jiǎn)單的把紋理就理解為圖像。

      說(shuō)了圖像的概念,現(xiàn)在來(lái)說(shuō)下視頻:視頻是由多幅圖像構(gòu)成的,是一組連續(xù)的圖像。一個(gè)基本的數(shù)字視頻,基本是通過(guò)“采集——處理——顯示”形成的。

      編碼格式:

      上面我們說(shuō)到了音頻的編碼,視頻同樣是存在編碼的過(guò)程的。視頻編解碼的過(guò)程是指對(duì)數(shù)字視頻進(jìn)行壓縮或解壓縮的過(guò)程。

      在進(jìn)行視頻的編解碼時(shí),需要考慮以下因素的平衡:視頻的質(zhì)量、用來(lái)表示視頻所需要的數(shù)據(jù)量(通常稱之為碼率)、編碼算法和解碼算法的復(fù)雜度、針對(duì)數(shù)據(jù)丟失和錯(cuò)誤的魯棒性、編輯的方便性、隨機(jī)訪問(wèn)、編碼算法設(shè)計(jì)的完美性、端到端的延時(shí)以及其它一些因素。

      常用的視頻編解碼方式有H.26X系列和MPEG系列,而目前最常用的視頻編碼格式是H.264,它的優(yōu)點(diǎn)是低碼率、圖像質(zhì)量高、容錯(cuò)能力強(qiáng)、網(wǎng)絡(luò)適應(yīng)性更強(qiáng),并且已被廣泛應(yīng)用于實(shí)時(shí)視頻應(yīng)用中。

      再介紹一些關(guān)于H.264的知識(shí):

      在H.264中,圖像是包括幀、頂場(chǎng)和底場(chǎng)的,一副完整的圖像就是一幀。

      當(dāng)采集視頻信號(hào)時(shí),如果采用逐行掃描,則每次掃描得到的信號(hào)就是一副圖像,也就是一幀。如果采用隔行掃描(奇、偶數(shù)行),則掃描下來(lái)的一幀圖像就被分為了兩個(gè)部分,這每一部分就稱為場(chǎng),根據(jù)次序分為:頂場(chǎng)(也成為偶數(shù)場(chǎng))和底場(chǎng)(也成為奇數(shù)場(chǎng))。

      幀和場(chǎng)的概念又帶來(lái)了不同的編碼方式:幀編碼和場(chǎng)編碼。逐行掃描適合于運(yùn)動(dòng)圖像,所以對(duì)于運(yùn)動(dòng)圖像采用幀編碼更好;而隔行掃描適合于非運(yùn)動(dòng)圖像,所以對(duì)于非運(yùn)動(dòng)圖像采用場(chǎng)編碼更理想。

      此外,每一幀圖像可以分為多個(gè)片,每一個(gè)片由宏塊構(gòu)成,而每個(gè)宏塊又是由子塊所構(gòu)成的。

      封裝格式:

      視頻的封裝格式可以看成是一個(gè)裝載著視頻、音頻、視頻編解碼方式等信息的容器。一種視頻封裝格式可以支持多種的視頻編解碼方式,比如:QuickTime(.MOV)支持幾乎所有的編解碼方式,MPEG(.MP4)也支持大部分的編解碼方式。

      在PC上,我們經(jīng)常會(huì)使用.MOV的視頻文件。通過(guò)以上的介紹,我們就知道了,這個(gè)視頻的文件格式是.MOV,封裝格式是QuickTime File Format,但是我們無(wú)法知道它的視頻編解碼方式。如果我們想要專業(yè)的去描述一個(gè)視頻,可以描述成:H.264/MOV的視頻文件,這就是說(shuō)它的封裝方式是QuickTime File Format,文件格式是.MOV,編碼方式是H.264。

      H.264:

      H.264是一種高性能的視頻編解碼技術(shù),是由“國(guó)際電聯(lián)”和“國(guó)際標(biāo)準(zhǔn)化組織ISO”聯(lián)合組建的聯(lián)合視頻組共同制定的新的數(shù)字視頻編碼標(biāo)準(zhǔn)。

      我們?cè)谏厦嬉呀?jīng)說(shuō)到了H.264編碼技術(shù)的優(yōu)勢(shì),我們接下來(lái)看一下H.264所涉及的關(guān)鍵技術(shù):

      我們首先要知道,無(wú)論是視頻或音頻編碼,其目的都是壓縮。視頻編碼的目的,是抽取出冗余信息,這些冗余信息包括:空間冗余、時(shí)間冗余、編碼冗余、視覺(jué)冗余和知識(shí)冗余。

      基于此,H.264的壓縮技術(shù)涉及:

      a)幀內(nèi)預(yù)測(cè)壓縮,解決的就是空間數(shù)據(jù)冗余問(wèn)題。空間冗余數(shù)據(jù)就是圖里數(shù)據(jù)在寬高空間內(nèi)包含了很多顏色和光亮,人的肉眼很難察覺(jué)的數(shù)據(jù)。對(duì)于這些數(shù)據(jù),我們是可以直接壓縮掉的。

      幀內(nèi)壓縮對(duì)應(yīng)的是I幀——即關(guān)鍵幀。那么什么是I幀呢?網(wǎng)上教程中有一個(gè)經(jīng)典的例子,如果攝像頭對(duì)著你拍攝,1秒之內(nèi)實(shí)際你發(fā)生的變化是非常少的。攝像機(jī)一般1秒鐘會(huì)抓取幾十幀的數(shù)據(jù),比如像動(dòng)畫,就是25幀/s,一般視頻文件都是在30幀/s左右。那些對(duì)于一組幀來(lái)說(shuō)變化很小的,為了便于壓縮數(shù)據(jù),就將第一幀完整的保存下來(lái)。如果沒(méi)有這個(gè)關(guān)鍵幀后面解碼數(shù)據(jù)是完成不了的,所以I幀是特別關(guān)鍵的。

      b)幀間預(yù)測(cè)壓縮,解決的是時(shí)間數(shù)據(jù)冗余問(wèn)題。在上面的例子中,攝像頭在一段時(shí)間內(nèi)所捕捉的數(shù)據(jù)沒(méi)有較大的變化,我們針對(duì)這一時(shí)間內(nèi)的相同的數(shù)據(jù)壓縮掉,這就是時(shí)間數(shù)據(jù)壓縮。

      幀間壓縮對(duì)應(yīng)的是P幀和B幀。P幀是向前參考幀,壓縮時(shí)只參考前一個(gè)幀。而B(niǎo)幀是雙向參考幀,壓縮時(shí)即參考前一幀也參考后一幀。

      c)整數(shù)離散余弦變換(DCT),將空間上的相關(guān)性變?yōu)轭l域上無(wú)關(guān)的數(shù)據(jù)然后進(jìn)行量化。

      d)CABAC壓縮:無(wú)損壓縮。

      H.264除了上述的關(guān)鍵技術(shù),還有幾個(gè)重要的概念需要了解:

      • GOF:一組幀,就是一個(gè)I幀到下一個(gè)I幀,這一組的數(shù)據(jù)。包括B幀/P幀,我們稱為GOF。

      • SPS和PPS:SPS和PPS是GOF的參數(shù),SPS是存放幀數(shù),參考幀數(shù)目,解碼圖像尺寸,幀場(chǎng)編碼模式選擇標(biāo)識(shí)等。而PPS是存放熵編碼模式選擇標(biāo)識(shí),片組數(shù)目,初始量化參數(shù)和去方塊濾波系數(shù)調(diào)整標(biāo)識(shí)等。

      在進(jìn)行視頻解碼的時(shí)候,接收到一組幀GOF之前,我們首先收到的是SPS/PPS數(shù)據(jù),如果沒(méi)有這組參數(shù)的話,是無(wú)法進(jìn)行解碼的。

      因此,如果在解碼時(shí)發(fā)生錯(cuò)誤,首先要檢查是否有SPS/PPS。如果沒(méi)有,就要檢查是因?yàn)閷?duì)端沒(méi)有發(fā)送過(guò)來(lái)還是因?yàn)閷?duì)端在發(fā)送過(guò)程中丟失了。

      更加詳細(xì)的H.264編碼原理這里就不做介紹了,大家感興趣的可以上網(wǎng)查閱一下資料,比如:宏塊分組劃分、宏塊查找、幀內(nèi)預(yù)測(cè)、DCT壓縮以及H.264的碼流結(jié)構(gòu)等知識(shí)。

      三、直播流程詳述

      通過(guò)上面的介紹,我們已經(jīng)了解音視頻一些基本的知識(shí)。接下來(lái),我們一起再描述一遍直播類應(yīng)用的整體流程。

      1. 音視頻采集

      在音視頻采集階段會(huì)包括:音頻采集和圖像采集。

      在音頻采集時(shí),除了上面我們說(shuō)到的采樣率、量化級(jí)數(shù)和聲道數(shù)參數(shù)外,還需要音頻幀。

      音頻跟視頻很不一樣,視頻每一幀就是一張圖像,而從聲音的正玄波可以看出:音頻數(shù)據(jù)是流式的,沒(méi)有明確的一幀幀的概念。在實(shí)際的應(yīng)用中,為了音頻算法處理/傳輸?shù)姆奖悖话慵s定俗成取 2.5ms~60ms 為單位的數(shù)據(jù)量為一幀音頻。

      這個(gè)時(shí)間被稱之為“采樣時(shí)間”,其長(zhǎng)度沒(méi)有特別的標(biāo)準(zhǔn),它是根據(jù)編解碼器和具體應(yīng)用的需求來(lái)決定的。

      如果某音頻信號(hào)是采樣率為 8kHz、雙通道、量化級(jí)數(shù)是16bit,采樣時(shí)間是20ms,則一幀音頻數(shù)據(jù)的大小為:8000 * 2 * 16bit * 0.02s = 5120 bit = 640 byte

      在圖像采集中,采集的圖片結(jié)果會(huì)組合成一組連續(xù)播放的動(dòng)畫,即構(gòu)成視頻中可肉眼觀看的內(nèi)容。

      圖像的采集過(guò)程主要由攝像頭等設(shè)備拍攝成 YUV 編碼的原始數(shù)據(jù),然后經(jīng)過(guò)編碼壓縮成 H.264 等格式的數(shù)據(jù)分發(fā)出去。在圖像采集階段,涉及的主要技術(shù)參數(shù)包括:圖像傳輸格式、圖像格式、傳輸通道、分辨率以及采樣率。

      在音視頻的采集階段,常用的采集源包括攝像頭,比如手機(jī)的前后置攝像頭;游戲直播中使用的屏幕錄制;和電視節(jié)目中視頻文件的直接推流。

      2. 音視頻處理

      音視頻處理會(huì)分為:視頻處理和音頻處理。

      視頻處理包括:美顏、濾鏡、面部識(shí)別、水印、剪輯拼接等。音頻處理包括:混音、降噪、聲音特效等。

      下面我們簡(jiǎn)要描述一下美顏和視頻水印的基本原理:

      美顏的主要原理是通過(guò)【磨皮】+【美白】來(lái)達(dá)到整體美顏效果的。磨皮的技術(shù)術(shù)語(yǔ)是去噪,也就是對(duì)圖像中的噪點(diǎn)進(jìn)行去除或者模糊化處理,常見(jiàn)的去噪算法有均值模糊、高斯模糊和中值濾波等。這個(gè)環(huán)節(jié)中也涉及到人臉和皮膚檢測(cè)技術(shù)。

      視頻水印包括播放器水印和視頻內(nèi)嵌水印兩種方式。對(duì)于播放器水印來(lái)說(shuō),如果沒(méi)有有效的防盜措施,對(duì)于沒(méi)有播放鑒權(quán)的推流,客戶端拿到直播流之后可以在任何一個(gè)不帶水印的播放器里面播放,因此也就失去了視頻保護(hù)的能力。所以,一般來(lái)說(shuō)會(huì)選擇視頻內(nèi)嵌水印的方式打水印,這樣,水印就會(huì)內(nèi)嵌到視頻之內(nèi),在視頻播放的過(guò)程中持續(xù)顯示。

      再多聊一些,視頻內(nèi)嵌水印也會(huì)應(yīng)用在軟件中,軟件中播出企業(yè)內(nèi)部版權(quán)保護(hù)的動(dòng)畫段視頻時(shí),會(huì)應(yīng)用到內(nèi)嵌水印的技術(shù)。

      3. 音視頻編碼和封裝

      音視頻的編碼以及視頻的封裝在上述基礎(chǔ)知識(shí)部分已經(jīng)介紹過(guò)了,這里不再贅述。

      在這里說(shuō)一下編碼器的知識(shí)。上文中我們了解了H.264的編碼技術(shù),編碼流程是要基于編碼器進(jìn)行的。

      編碼器的主要流程是:幀內(nèi)預(yù)測(cè)(去除空間冗余)/幀間預(yù)測(cè)(去除時(shí)間冗余)——變換(去除空間冗余)——量化(去除視覺(jué)冗余)——熵編碼(去除編碼冗余)。通過(guò)該流程,即可完成音視頻的編碼步驟。

      4. 推流

      推流就是將處理過(guò)的音頻和視頻數(shù)據(jù)通過(guò)流媒體協(xié)議發(fā)送到流媒體服務(wù)器。

      推流協(xié)議:

      推流所遵循的協(xié)議有RTMP、WebRTC和基于UDP的私有協(xié)議。

      • RTMP協(xié)議是基于TCP協(xié)議的,RTMP 是目前主流的流媒體傳輸協(xié)議,廣泛用于直播領(lǐng)域,市面上絕大多數(shù)的直播產(chǎn)品都采用了這個(gè)協(xié)議。但是,由于基于TCP協(xié)議,傳輸成本高,在弱網(wǎng)環(huán)境下丟包率高,不支持瀏覽器推送。

      • WebRTC是一個(gè)支持網(wǎng)頁(yè)瀏覽器進(jìn)行實(shí)時(shí)語(yǔ)音對(duì)話或視頻對(duì)話的 API,主要應(yīng)用于視頻會(huì)議。它的主流瀏覽器支持度高,并且底層基于SRTP和UDP,弱網(wǎng)情況優(yōu)化空間大。

      • 基于UDP的私有協(xié)議。有些直播應(yīng)用會(huì)使用 UDP 做為底層協(xié)議開(kāi)發(fā)自己的私有協(xié)議,因?yàn)?UDP在弱網(wǎng)環(huán)境下的優(yōu)勢(shì)通過(guò)一些定制化的調(diào)優(yōu)可以達(dá)到比較好的弱網(wǎng)優(yōu)化效果,但是開(kāi)發(fā)成過(guò)高。

      CDN:

      推出去的流媒體要給各個(gè)地理位置的觀眾看,那么這里就需要CDN網(wǎng)絡(luò)了。CDN就是為了解決用戶訪問(wèn)網(wǎng)絡(luò)資源慢而產(chǎn)生的技術(shù)。

      CDN包括邊緣節(jié)點(diǎn)、二級(jí)節(jié)點(diǎn)和源站。內(nèi)容提供方可以將內(nèi)容放到源站上,用戶從邊緣節(jié)點(diǎn)獲取數(shù)據(jù),而CDN的二級(jí)節(jié)點(diǎn)則用于緩存,減輕源站壓力。

      在直播領(lǐng)域中,CDN要支持的服務(wù)如下:

      • 流媒體協(xié)議的支持。比如RTMP等;

      • 首屏秒開(kāi)。從用戶點(diǎn)擊到播放控制在秒級(jí)以內(nèi);

      • 1~3 延遲控制。從推流端到播放端,延遲控制在 1~3 秒之間;

      • 全球全網(wǎng)智能路由??梢岳谜麄€(gè)CDN網(wǎng)絡(luò)內(nèi)的所有節(jié)點(diǎn)為某一單一用戶服務(wù),不受地域限制。

      5. 流媒體服務(wù)器處理

      流媒體服務(wù)器要做的事情包括:數(shù)據(jù)分發(fā)(CDN)、支持上述CDN的一些服務(wù)、實(shí)時(shí)轉(zhuǎn)碼以及內(nèi)容的檢測(cè)(鑒黃)等。

      6. 拉流

      拉流就是客戶端從流媒體服務(wù)器上拉取獲得上述步驟中的音視頻數(shù)據(jù)。同理,這個(gè)過(guò)程也是要基于上述的協(xié)議和CDN。

      7. 音視頻解碼

      在上述H.264編碼的介紹中,說(shuō)到了SPS/PPS是解碼必備的數(shù)據(jù)。此步驟就是需要對(duì)拉流下來(lái)已編碼的音視頻數(shù)據(jù)進(jìn)行解碼。

      解碼過(guò)程就是編碼的逆過(guò)程,這個(gè)過(guò)程包括:熵解碼、變換解碼、預(yù)測(cè)解碼。

      H.264規(guī)范規(guī)定了解碼器的結(jié)構(gòu),解碼的過(guò)程大體如下:以宏塊為單位,依次進(jìn)行熵解碼、反量化、反變換,得到殘差數(shù)據(jù)。再結(jié)合宏塊里面的預(yù)測(cè)信息,找到已解碼的被參考?jí)K,進(jìn)而結(jié)合已解碼被參考?jí)K和本塊殘差數(shù)據(jù),得到本塊的實(shí)際數(shù)據(jù)。宏塊解碼后,組合出片,片再進(jìn)而組合出圖像。

      這里要說(shuō)明的是:如果H264碼流中I幀錯(cuò)誤或丟失,就會(huì)導(dǎo)致錯(cuò)誤傳遞,單獨(dú)的P幀或B幀是完成不了解碼工作的。I幀所保留的是一張完整的視頻幀,是解碼的關(guān)鍵所在。

      8. 音視頻播放

      在完成了音視頻數(shù)據(jù)的解碼后,就可以通過(guò)硬件設(shè)備(手機(jī)或PC)上的播放器對(duì)音視頻文件進(jìn)行渲染播放了。

      那么,上述架構(gòu)圖中的信令服務(wù)器是干什么的呢?

      ——信令服務(wù)器是用來(lái)處理主播端和用戶端的一些信令指令的。

      在網(wǎng)絡(luò)中傳輸著各種信號(hào),其中一部分是我們需要的(例如:打電話的語(yǔ)音,上網(wǎng)的數(shù)據(jù)包等等),而另外一部分是我們不需要的(只能說(shuō)不是直接需要)它用來(lái)專門控制電路的,這一類型的信號(hào)我們就稱之為信令(摘自百度百科)。也就是說(shuō),信令是指通信系統(tǒng)中的控制指令。

      我們基于此,再來(lái)描述一下這整個(gè)的流程:

      1. 主播共享端發(fā)起一個(gè)信令,比如:創(chuàng)建房間(或聊天、發(fā)送禮物等),到達(dá)信令服務(wù)器;信令服務(wù)器處理并且創(chuàng)建一個(gè)房間,同時(shí)返回給主播共享端一個(gè)流媒體云的地址。

      2. 接下來(lái),主播共享端采集數(shù)據(jù)(音視頻的采集、處理以及編碼封裝流程)形成RTMP流推送到CDN網(wǎng)絡(luò)(推流)。

      3. 觀眾要進(jìn)行觀看時(shí),客戶端會(huì)發(fā)送信令到信令服務(wù)器,信令服務(wù)器將該觀眾加入到主播的房間中,同時(shí)也會(huì)返回一個(gè)流媒體云的地址(該地址就是之前主播端的流媒體云地址)。

      4. 客戶端拿到此流媒體云地址后,就會(huì)到流媒體云服務(wù)器拉取到該媒體流(拉流和解碼),從而看到要觀看的直播節(jié)目(播放器播放)。

      好了,以上就是直播類應(yīng)用的一個(gè)最基本的架構(gòu)和流程了。

      四、總結(jié)

      本文通過(guò)直播類應(yīng)用的架構(gòu),介紹了一些音視頻技術(shù)方面的知識(shí),并且詳述了直播類功能的整體流程。

      音視頻技術(shù)是一個(gè)高深的領(lǐng)域,本文只是做了一些基礎(chǔ)知識(shí)的總結(jié),如果大家想要深入了解更多的音視頻技術(shù),我推薦大家可以學(xué)習(xí)一下雷神(雷霄驊)的博客。

      #專欄作家#

      流年,人人都是產(chǎn)品經(jīng)理專欄作家?;ヂ?lián)網(wǎng)產(chǎn)品設(shè)計(jì)師,4年互聯(lián)網(wǎng)產(chǎn)品設(shè)計(jì)經(jīng)驗(yàn)。擅長(zhǎng)用戶體驗(yàn)設(shè)計(jì),喜歡鉆研需求功能背后的技術(shù)實(shí)現(xiàn)方式;在成為綜合型產(chǎn)品設(shè)計(jì)師的道路上不斷努力前進(jìn)!

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多