實(shí)時(shí)音視頻面視必備:快速掌握11個(gè)視頻技術(shù)相關(guān)的基礎(chǔ)概念
Posted on 2020-11-12 15:45 Jack Jiang 閱讀(217) 評論(0) 編輯 收藏本文作者Ahab,原題“視頻相關(guān)的理論知識(shí)與基礎(chǔ)概念”,收錄時(shí)有修訂和改動(dòng)。
1、引言
隨著移動(dòng)互聯(lián)網(wǎng)的普及,實(shí)時(shí)音視頻技術(shù)已經(jīng)在越來越多的場景下發(fā)揮重要作用,已經(jīng)不再局限于IM中的實(shí)時(shí)視頻聊天、實(shí)時(shí)視頻會(huì)議這種功能,在遠(yuǎn)程醫(yī)療、遠(yuǎn)程教育、智能家居等等場景也司空見慣。
雖然實(shí)時(shí)音視頻技術(shù)的應(yīng)用越來越普及,但對于程序員來說,這方面的技術(shù)門檻仍然存在(準(zhǔn)備地說是仍然很高),想要在短時(shí)間內(nèi)全面掌握實(shí)時(shí)音視頻相關(guān)的技術(shù)難度非常大。
以IM中的實(shí)時(shí)音視頻聊天為例,一個(gè)簡化了的視頻聊天技術(shù),本質(zhì)就是:音視頻技術(shù)+網(wǎng)絡(luò)技術(shù)的組合體,如下圖所示:網(wǎng)絡(luò)模塊之上的部分,就是音視頻技術(shù)所涉及的范疇。

▲ 圖片引用自《微信小程序音視頻技術(shù)背后的故事》
所以,想學(xué)習(xí)實(shí)時(shí)音視頻開發(fā),一般都是先學(xué)習(xí)音視頻相關(guān)的技術(shù)知識(shí),至于網(wǎng)絡(luò)技術(shù),完全可以分開學(xué)習(xí)。
不過,作為想從事這方面工作的小白面視者,是無法在短時(shí)間內(nèi)全面掌握音視頻技術(shù),但可以通過快速了解相關(guān)的知識(shí)概念,在自已在腦中快速組織起相應(yīng)的知識(shí)圖譜,有助于日后針對相關(guān)知識(shí)點(diǎn)逐個(gè)深入學(xué)習(xí)和研究,也算是一種高效的技術(shù)學(xué)習(xí)方法。
本文將通過通俗的文字,言簡意賅地為你講解實(shí)時(shí)音視頻技術(shù)中跟視頻技術(shù)在關(guān)的11個(gè)非常重要的基礎(chǔ)知識(shí)概念,希望能為你日后從事這方面的工作起到拋磚引玉的作用。
學(xué)習(xí)交流:
- 即時(shí)通訊/推送技術(shù)開發(fā)交流5群:215477170 [推薦]
- 移動(dòng)端IM開發(fā)入門文章:《新手入門一篇就夠:從零開發(fā)移動(dòng)端IM》
- 開源IM框架源碼:https://github.com/JackJiang2011/MobileIMSDK
(本文同步發(fā)布于:http://www.52im.net/thread-3194-1-1.html)
2、關(guān)于作者
王英豪:現(xiàn)居廣州。
Github : https://github.com/yhaolpz
CSDN: http://blog.csdn.net/yhaolpz
個(gè)人博客 : http://yhaowa.gitee.io
3、參考資料
[1] 零基礎(chǔ),史上最通俗視頻編碼技術(shù)入門
[2] 零基礎(chǔ)入門:實(shí)時(shí)音視頻技術(shù)基礎(chǔ)知識(shí)全面盤點(diǎn)
4、什么是視頻?
根據(jù)人眼視覺暫留原理,每秒超過 24 幀的圖像變化看上去是平滑連續(xù)的,這樣的連續(xù)畫面的播放叫視頻。
通俗來說說,視頻相當(dāng)于連續(xù)展示多張圖片,原理就像下面這樣:

▲ 圖片引用自《零基礎(chǔ),史上最通俗視頻編碼技術(shù)入門》
5、什么是分辨率?
5.1 基礎(chǔ)
分辨率是以橫向和縱向的像素?cái)?shù)量來衡量的,表示平面圖像的精細(xì)程度。視頻精細(xì)程度并不只取決于視頻分辨率,還取決于屏幕分辨率。
1080P 的 P 指 Progressive scan(逐行掃描),即垂直方向像素點(diǎn),也就是 "高",所以 1920 * 1080 叫 1080P, 不叫 1920P。
5.2 上采樣
當(dāng) 720P 的視頻在 1080P 屏幕上播放時(shí),需要將圖像放大,放大操作也叫上采樣。
“上采樣”幾乎都是采用內(nèi)插值方法,即在原有圖像的像素點(diǎn)之間采用合適的插值算法插入新的元素,所以圖像放大也稱為圖像插值。
簡單的記錄一下插值算法:

常見插值算法技術(shù)原理:
- 1)鄰插值算法:將四個(gè)像素(放大一倍)用原圖一個(gè)像素的顏色填充,較簡單易實(shí)現(xiàn),早期的時(shí)候應(yīng)用比較普遍,但會(huì)產(chǎn)生明顯的鋸齒邊緣和馬賽克現(xiàn)象;
- 2)雙線性插值法:是對鄰插值法的一種改進(jìn),先對兩水平方向進(jìn)行一階線性插值,再在垂直方向上進(jìn)行一階線性插值。能有效地彌補(bǔ)鄰插值算法的不足,但還存在鋸齒現(xiàn)象并會(huì)導(dǎo)致一些不期望的細(xì)節(jié)柔化;
- 3)雙三次插值法:是對雙線性插值法的改進(jìn),它不僅考慮到周圍四個(gè)直接相鄰像素點(diǎn)灰度值的影響,還考慮到它們灰度值變化率的影響,使插值生成的像素灰度值延續(xù)原圖像灰度變化的連續(xù)性,從而使放大圖像濃淡變化自然平滑。
除此之外還有很多更復(fù)雜效果更優(yōu)的算法,比如小波插值、分形等等。
5.3 下采樣
當(dāng) 1080P 的視頻在 720P 屏幕上播放時(shí),需要將圖像縮小,縮小操作也叫下采樣。
“下采樣”的定義為:對于一個(gè)樣值序列,間隔幾個(gè)樣值取樣一次,得到新序列。
對于一幅分辨率為 MxN 的圖像,對其進(jìn)行 s 倍下采樣,即得到 (M/s)x(N/s) 分辨率的圖像(s 應(yīng)為 M、N 的公約數(shù)),就是把原始圖像 sxs 窗口內(nèi)的圖像變成一個(gè)像素,這個(gè)像素點(diǎn)的值就是窗口內(nèi)所有像素的均值。
最佳體驗(yàn)為屏幕與視頻分辨率相同且全屏播放,視頻分辨率過高的話屏幕沒有能力去呈現(xiàn),視頻分辨率過低的話無法發(fā)揮屏幕的能力。
6、什么是比特率?
6.1 基礎(chǔ)
比特率即碼率,在不同領(lǐng)域有不同的含義,在多媒體領(lǐng)域,指單位時(shí)間播放音頻或視頻的比特?cái)?shù),可以理解成吞吐量或帶寬。
單位為 bps , 即 bits per second,每秒傳輸?shù)臄?shù)據(jù)量,常用單位有:kbps、mbps 等。
計(jì)算公式:碼率(kbps)= 文件大小(kb)/ 時(shí)長(s)
通俗一點(diǎn)理解就是取樣率,取樣率越大,精度就越高,圖像質(zhì)量越好,但數(shù)據(jù)量也越大,所以要找到一個(gè)平衡點(diǎn):用最低的比特率達(dá)到最少的失真。
在一個(gè)視頻中,不同時(shí)段畫面的復(fù)雜程度是不同的,比如高速變化的場景和幾乎靜止的場景,所需的數(shù)據(jù)量也是不同的,若都使用同一種比特率是不太合理的,所以引入了動(dòng)態(tài)比特率。
6.2 動(dòng)態(tài)比特率
簡稱為 VBR,即 Variable Bit Rate,比特率可以隨著圖像復(fù)雜程度的不同而隨之變化。
圖像內(nèi)容簡單的片段采用較小的碼率,圖像內(nèi)容復(fù)雜的片段采用較大的碼率,這樣既保證了播放質(zhì)量,又兼顧了數(shù)據(jù)量的限制。
比如 RMVB 視頻文件,其中的 VB 就是指 VBR,表示采用動(dòng)態(tài)比特率編碼方式,達(dá)到播放質(zhì)量與體積兼得的效果。
6.3 靜態(tài)比特率
簡稱為 CBR,即 Constant Bit Rate,比特率恒定。
圖像內(nèi)容復(fù)雜的片段質(zhì)量不穩(wěn)定,圖像內(nèi)容簡單的片段質(zhì)量較好。上面列出的計(jì)算公式顯然是針對 CBR ,除 VBR 和 CBR 外,還有 CVBR(Constrained VariableBit Rate) 、ABR (Average Bit Rate) 等等。
7、什么是采樣率?
定義:每秒從連續(xù)信號(hào)中提取并組成離散信號(hào)的采樣個(gè)數(shù),單位為赫茲(Hz)。對于取樣率、采樣率和抽樣率,沒必要糾結(jié)它們的區(qū)別,都是同義詞。
視頻一般不標(biāo)識(shí)采樣率屬性,比如:

采樣率本身就是一個(gè)可泛化的概念,對于視頻來說,若非要用采樣率來描述的話,那就要分為兩個(gè)層面:幀頻和場頻。
- 1)從幀頻層面來說:采樣率就是指幀率,指 1 秒鐘顯示多少幀圖像;
- 2)從場頻層面來說:采樣率就是指像素頻率,指 1 秒鐘顯示多少個(gè)像素。
像素頻率是顯示器的一個(gè)指標(biāo),可以理解成顯示器的最大帶寬,可以起到限制分辨率和刷新率的作用。
根據(jù)含義可得出一個(gè)公式:
像素頻率 = 幀率 X 幀像素?cái)?shù)量
對于:

幀率 = 138.5 x 1024 x 1024 / 1920 / 1080 ≈ 70.04 , 得出的 70Hz 為正常的幀率范圍,也可以反向確定對像素頻率的理解是正確的。
8、什么是幀率?
定義:用于測量顯示幀數(shù)的量度。單位為 FPS(Frames per Second,每秒顯示幀數(shù))或赫茲(Hz)。
幀率越高,畫面越流暢、逼真,對顯卡的處理能力要求越高,數(shù)據(jù)量越大。
文章開頭,我們提到每秒超過 24 幀的圖像變化看上去是平滑連續(xù)的,這是針對電影等視頻而言,對游戲來說 24 幀不一定就是流暢的。
為什么 24fps 的電影感覺流暢,而 24fps 的游戲就感覺很卡呢?
第一個(gè)原因:兩者圖像生成原理不同
電影的一幀在一段時(shí)間曝光,每一幀都包含一段時(shí)間的信息,而游戲的畫面則是由顯卡計(jì)算生成的,一幀只包含那一瞬間的信息。
比如一個(gè)圓從左上角移動(dòng)到右下角:

前者為電影的一幀,后者為游戲的一幀,可以看到在電影中動(dòng)作會(huì)出現(xiàn)拖影,給人以動(dòng)感的效果,連貫而不卡。
第二個(gè)原因:電影的FPS是穩(wěn)定的,而游戲則是不穩(wěn)定的
電影若為 24fps,那就表示每隔 1/24 秒刷新一次畫面,幀間隔是固定的。
游戲若為 60fps,表示大約每隔 1/60 秒刷新一次畫面,幀間隔是不穩(wěn)定的,即使 1 秒能顯示 60 幀,那也可能是前半秒顯示了 59 幀,后半秒顯示了 1 幀。
9、什么是視頻編碼?
9.1 基礎(chǔ)
定義:通過特定的壓縮技術(shù),將某個(gè)視頻格式的文件轉(zhuǎn)換成另一種視頻格式。視頻數(shù)據(jù)在時(shí)域和空域?qū)用娑加袠O強(qiáng)的相關(guān)性,這也表示有大量的「時(shí)域冗余信息」和「空域冗余信息」,壓縮技術(shù)就是去掉數(shù)據(jù)中的冗余信息。
9.2 無損壓縮
無損壓縮也稱為可逆編碼,重構(gòu)后的數(shù)據(jù)與原數(shù)據(jù)完全相同,適用于磁盤文件的壓縮等。無損壓縮主要采用熵編碼方式,包括香農(nóng)編碼、哈夫曼編碼和算術(shù)編碼等。
9.2.1)香農(nóng)編碼:
香農(nóng)編碼采用信源符號(hào)的累計(jì)概率分布函數(shù)來分配碼字,效率不高,實(shí)用性不大,但對其他編碼方法有很好的理論指導(dǎo)意義。
9.2.2)哈夫曼編碼:
哈夫曼編碼完全依據(jù)出現(xiàn)概率來構(gòu)造異字頭的平均長度最短的碼字。
基本方法為:先對圖像數(shù)據(jù)掃描一遍,計(jì)算出各種像素出現(xiàn)的概率,按概率的大小指定不同長度的唯一碼字,由此得到一張?jiān)搱D像的霍夫曼碼表。
編碼后的圖像數(shù)據(jù)記錄的是每個(gè)像素的碼字,而碼字與實(shí)際像素值的對應(yīng)關(guān)系記錄在碼表中。
9.2.3)算術(shù)編碼:
算術(shù)編碼是用符號(hào)的概率和編碼間隔兩個(gè)基本參數(shù)來描述的,在給定符號(hào)集和符號(hào)概率的情況下,算術(shù)編碼可以給出接近最優(yōu)的編碼結(jié)果。
使用算術(shù)編碼的壓縮算法通常先要對輸入符號(hào)的概率進(jìn)行估計(jì),然后再編碼,估計(jì)越準(zhǔn),編碼結(jié)果就越接近最優(yōu)的結(jié)果。
9.3 有損壓縮
有損壓縮也稱為不可逆編碼,重構(gòu)后的數(shù)據(jù)與原數(shù)據(jù)有差異,適用于任何允許有失真的場景,例如視頻會(huì)議、可視電話、視頻廣播、視頻監(jiān)控等。
編碼方式包括預(yù)測編碼、變換編碼、量化編碼、混合編碼等。
10、什么是編碼標(biāo)準(zhǔn)?
10.1 基礎(chǔ)
定義:為保證編碼的正確性,編碼要規(guī)范化、標(biāo)準(zhǔn)化,所以就有了編碼標(biāo)準(zhǔn)。
研制視頻編碼標(biāo)準(zhǔn)的有兩大正式組織:
1)ISO/IEC(國際標(biāo)準(zhǔn)化組織);
2)ITU-T(國際電信聯(lián)盟通信標(biāo)準(zhǔn)部)。
ISO/IEC 制定的編碼標(biāo)準(zhǔn)有:MPEG-1、MPEG-2、MPEG-4、MPEG-7、MPEG-21 和 MPEG-H 等。
ITU-T 制定的編碼標(biāo)準(zhǔn)有:H.261、H.262、H.263、H.264 和 H.265 等。
MPEG-x 和 H.26x 標(biāo)準(zhǔn)的視頻編碼都是采用有損壓縮的混合編碼方式,主要區(qū)別在于處理圖像的分辨率、預(yù)測精度、搜索范圍、量化步長等參數(shù)的不同,所以其應(yīng)用場合也不同。
10.2 MPEG-x 系列
10.2.1)MPEG-1:
MPEG-1 共 5 部分。
第 2 部分視頻編碼方案,規(guī)定了逐行掃描視頻的編碼方案。
第 3 部分音頻編碼方案,將音頻流的壓縮分為 3 層并依次增大壓縮比,廣為流傳的 MP3(MPEG-1 Layer 3)就是按照此部分編碼方案壓縮之后的文件格式。
10.2.2)MPEG-2:
MPEG-2 共 11 個(gè)部分,在 MPEG-1 的基礎(chǔ)上提高了碼率和質(zhì)量。
第 2 部分視頻編碼方案,規(guī)定了隔行掃描視頻的編碼方案,是和 ITU-T 共同開發(fā)的,ITU-T 稱其為 H.262。
第 3 部分音頻編碼方案,延續(xù)了 MPEG-1 的 3 層壓縮方案,壓縮后文件格式仍為 MP3,但在壓縮算法上有所改進(jìn)。
第 7 部分首次提出 AAC(MPEG Advanced Audio Coding)編碼,目的以更小的容量和更好的音質(zhì)取代 MP3 格式。
10.2.3)MPEG-4:
MPEG-4 共 27 個(gè)部分,更加注重多媒體系統(tǒng)的交互性和靈活性。
第 3 部分音頻編碼方案,優(yōu)化了 AAC 編碼算法,并在推出后逐漸取代 MP3,比如和視頻封裝在一起的音頻優(yōu)先考慮 AAC 格式,但就民用而言大部分還是使用 MP3 格式。
第 10 部分提出 AVC(Advanced Video Coding)編碼,是和 ITU-T 共同開發(fā)的,ITU-T 稱其為 H.264。
第 14 部分提出了 MP4 格式封裝,官方文件后綴名是 ".mp4",還有其他的以 mp4 為基礎(chǔ)進(jìn)行的擴(kuò)展或縮水版本的格式,包括:M4V, 3GP, F4V 等。
10.2.4)MPEG-7:
MPEG-7 不同于 MPEG-1、MPEG-2、MPEG-4,它不是音視頻壓縮標(biāo)準(zhǔn)。
MPEG-7 被稱為 "多媒體內(nèi)容描述接口",目的就是產(chǎn)生一種描述多媒體信息的標(biāo)準(zhǔn),并將該描述與所描述的內(nèi)容相聯(lián)系,以實(shí)現(xiàn)快速有效的檢索。
10.2.5)MPEG-12:
MPEG-12 其實(shí)就是一些關(guān)鍵技術(shù)的集成,通過這種集成環(huán)境對全球數(shù)字媒體資源進(jìn)行管理,實(shí)現(xiàn)內(nèi)容描述、創(chuàng)建、發(fā)布、使用、識(shí)別、收費(fèi)管理、版權(quán)保護(hù)等功能。
10.2.6)MPEG-H:
MPEG-H 包含了 1 個(gè)數(shù)字容器標(biāo)準(zhǔn)、1 個(gè)視頻壓縮標(biāo)準(zhǔn)、1 個(gè)音頻壓縮標(biāo)準(zhǔn)和 2 個(gè)一致性測試標(biāo)準(zhǔn)。
其中視頻壓縮標(biāo)準(zhǔn)為高效率視頻編碼(HEVC),和 ITU-T 聯(lián)合開發(fā),相比 H.264/MPEG-4 AVC 數(shù)據(jù)壓縮率增加了 1 倍。
10.3 H.26x 系列
10.3.1)H.261:
H.261 是第一個(gè)實(shí)用的數(shù)字視頻編碼標(biāo)準(zhǔn),使用了混合編碼框架,包括了基于運(yùn)動(dòng)補(bǔ)償?shù)膸g預(yù)測,基于離散余弦變換的空域變換編碼,量化,zig-zag 掃描和熵編碼。
H.261 的設(shè)計(jì)相當(dāng)成功,之后的視頻編碼國際標(biāo)準(zhǔn)基本上都是基于 H.261 的設(shè)計(jì)框架,包括 MPEG-1,MPEG-2/H.262,H.263,甚至 H.264。
10.3.2)H.262:
H.262 由 MPEG-1 擴(kuò)充而來,支持隔行掃描,在技術(shù)內(nèi)容上和 MPEG-2 視頻標(biāo)準(zhǔn)一致,DVD 就是采用了該技術(shù)。
10.3.3)H.263:
H.263 是一種用于視頻會(huì)議的低碼率視頻編碼標(biāo)準(zhǔn),在 H.261 基礎(chǔ)上發(fā)展而來。
與 H.261 相比采用了半象素的運(yùn)動(dòng)補(bǔ)償,并增加了 4 種有效的壓縮編碼模式,在低碼率下能夠提供比 H.261 更好的圖像效果。
H.263 于 1995 年推出第一版,后續(xù)在 1998 年和 2000 年還推出了第二版 H.263+、第三版 H.263++ 。
10.3.4)H.264:
H.264 又稱為 MPEG-4 第 10 部分,即 MPEG-4 AVC,它是一種面向塊,基于運(yùn)動(dòng)補(bǔ)償?shù)囊曨l編碼標(biāo)準(zhǔn)。
于 2003 年正式發(fā)布,現(xiàn)在已經(jīng)成為高精度視頻錄制、壓縮和發(fā)布的最常用格式之一。
H.264 可以在低碼率情況下提供高質(zhì)量的視頻圖像,相比 H.263 可節(jié)省 50% 的碼率。
相比 H.263,H.264 不需設(shè)置較多的編碼選項(xiàng),降低了編碼的復(fù)雜度。
H.264 可以根據(jù)不同的環(huán)境使用不同的傳輸和播放速率,并且提供了豐富的錯(cuò)誤處理工具,可以很好的控制或消除丟包和誤碼。
H.264 性能的改進(jìn)是以增加復(fù)雜性為代價(jià)而獲得的,H.264 編碼的計(jì)算復(fù)雜度大約相當(dāng)于 H.263 的 3 倍,解碼復(fù)雜度大約相當(dāng)于 H.263 的 2 倍。
H.264 協(xié)議中定義了三種幀,分別為 I 幀、P 幀以及 B 幀:
- 1)I 幀:I幀即幀內(nèi)編碼幀、關(guān)鍵幀,可以理解為一幀畫面的完整保留,解碼時(shí)只需要本幀數(shù)據(jù)就可以完成,不需要參考其他畫面,數(shù)據(jù)量比較大;
- 2)P 幀:P幀即前向預(yù)測編碼幀,記錄當(dāng)前幀跟上一關(guān)鍵幀(或P幀)的差別,解碼時(shí)依賴之前緩存的畫面,疊加上本幀定義的差別,才能生成最終畫面,數(shù)據(jù)量較 I 幀小很多;
- 3)B 幀:B幀即雙向預(yù)測編碼幀,記錄當(dāng)前幀跟前后幀的差別,解碼時(shí)依賴前面的I幀(或P幀)和后面的P幀,數(shù)據(jù)量比I幀和P幀小很多。
數(shù)據(jù)壓縮比大約為:I幀:P幀:B幀 = 7:20:50,可見 P 幀和 B 幀極大的節(jié)省了數(shù)據(jù)量,節(jié)省出來的空間可以用來多保存一些 I 幀,以實(shí)現(xiàn)在相同碼率下,提供更好的畫質(zhì)。
10.3.5)H.265:
H.265 即高效視頻編碼(High Efficiency Video Coding ,簡稱 HEVC),于 2013 年正式推出。
H.265 編碼架構(gòu)和 H.264 相似,主要也包含,幀內(nèi)預(yù)測、幀間預(yù)測、轉(zhuǎn)換、量化、去區(qū)塊濾波器、熵編碼等模塊。
H.265 編碼架構(gòu)整體被分為編碼單位、預(yù)測單位和轉(zhuǎn)換單位。
H.265 在 H.264 的基礎(chǔ)之上,使用先進(jìn)的技術(shù)用以改善碼流、編碼質(zhì)量、延時(shí)和算法復(fù)雜度之間的關(guān)系,達(dá)到最優(yōu)化設(shè)置。
在碼率減少 51-74% 的情況下,H.265 編碼視頻的質(zhì)量還能與 H.264 編碼視頻近似甚至更好。
H.265 可以在有限帶寬下傳輸更高質(zhì)量的網(wǎng)絡(luò)視頻,智能手機(jī)、平板機(jī)等移動(dòng)設(shè)備將能直接在線播放 1080p 的全高清視頻,讓網(wǎng)絡(luò)視頻跟上了顯示屏 “高分辨率化” 的腳步。
來張圖感受一下吧:

除 MPEG-x 和 H.26x 系列標(biāo)準(zhǔn)外,還有其他的編碼標(biāo)準(zhǔn),如谷歌的 VP 系列,對視頻編碼標(biāo)準(zhǔn)歸納一下,如圖:

11、什么是視頻封裝格式?
視頻封裝格式如 mp4、mkv,用來存儲(chǔ)或傳輸編碼數(shù)據(jù),可以理解成一個(gè)容器。
封裝就是按照一定規(guī)則把音視頻、字幕等數(shù)據(jù)組織起來,包含編碼類型等公共信息,播放器可以按照這些信息來匹配解碼器、同步音視頻。
不同的封裝格式支持的視音頻編碼格式是不一樣的,比如 MKV 格式支持比較多,RMVB 則主要支持 Real 公司的視音頻編碼格式。
WiKi百科上列出了常見的視頻封裝格式,可以查看各封裝格式支持的音視頻編碼格式等信息。
12、什么是視頻解碼?
定義:將視頻壓縮編碼過的數(shù)據(jù),解壓縮成為視頻原始數(shù)據(jù),即視頻編碼的反過程。
對于一個(gè)播放器來說,很重要的一個(gè)指標(biāo)就是能支持多少種視頻解碼。
13、視頻播放原理是什么?
播放一個(gè)本地視頻文件,需要經(jīng)過解封裝、解碼音視頻、音視頻同步等步驟。
解封裝:就是將輸入的封裝格式的數(shù)據(jù),分離成為音頻壓縮編碼數(shù)據(jù)和視頻壓縮編碼數(shù)據(jù)。例如,F(xiàn)LV 格式的數(shù)據(jù),經(jīng)過解封裝操作后,輸出 H.264 編碼的視頻碼流和 AAC 編碼的音頻碼流。
解碼:將視頻/音頻壓縮編碼數(shù)據(jù),解碼成為非壓縮的視頻/音頻原始數(shù)據(jù)。
音頻的壓縮編碼標(biāo)準(zhǔn)包含 AAC,MP3,AC-3 等等,視頻的壓縮編碼標(biāo)準(zhǔn)則包含 H.264,MPEG2,VC-1 等等。
解碼是整個(gè)系統(tǒng)中最重要也是最復(fù)雜的一個(gè)環(huán)節(jié)。
通過解碼,壓縮編碼的視頻數(shù)據(jù)輸出成為非壓縮的顏色數(shù)據(jù),例如 YUV420P,RGB 等等;壓縮編碼的音頻數(shù)據(jù)輸出成為非壓縮的音頻抽樣數(shù)據(jù),例如 PCM 數(shù)據(jù)。
音視頻同步:根據(jù)解封裝模塊處理過程中獲取到的參數(shù)信息,同步解碼出來的視頻和音頻數(shù)據(jù),并將視頻音頻數(shù)據(jù)送至系統(tǒng)的顯卡和聲卡播放出來。
14、實(shí)時(shí)音視頻中音視頻與網(wǎng)絡(luò)的關(guān)系是什么?
以下是一個(gè)典型的實(shí)時(shí)音視頻數(shù)據(jù)的詳細(xì)流轉(zhuǎn)原理圖:

▲ 圖片引用自《微信小程序音視頻技術(shù)背后的故事》
如上圖所示,相較于普通的音視頻本地播放,實(shí)時(shí)音視頻技術(shù)多了一個(gè)網(wǎng)絡(luò)傳輸?shù)牟襟E,換句話說:實(shí)時(shí)音視頻技術(shù) = 音視頻技術(shù) + 網(wǎng)絡(luò)技術(shù)。
因?yàn)槠芟蓿酒筒粚唧w的技術(shù)細(xì)節(jié)展開討論,感興趣的讀者,可以繼續(xù)深入閱讀即時(shí)通訊網(wǎng)收錄的《實(shí)時(shí)音視頻開發(fā)技術(shù)專輯》。
15、深入學(xué)習(xí)
如果你是初學(xué)者,還想以通俗易懂的方式了解實(shí)時(shí)音視頻技術(shù),可以繼續(xù)閱讀以下文章:
《即時(shí)通訊音視頻開發(fā)(十九):零基礎(chǔ),史上最通俗視頻編碼技術(shù)入門》(* 強(qiáng)烈推薦)
如果你想系統(tǒng)專業(yè)的學(xué)習(xí)實(shí)時(shí)音視頻技術(shù),那么務(wù)必閱讀以下文章:
《即時(shí)通訊音視頻開發(fā)(一):視頻編解碼之理論概述》
《即時(shí)通訊音視頻開發(fā)(二):視頻編解碼之?dāng)?shù)字視頻介紹》
《即時(shí)通訊音視頻開發(fā)(三):視頻編解碼之編碼基礎(chǔ)》
《即時(shí)通訊音視頻開發(fā)(四):視頻編解碼之預(yù)測技術(shù)介紹》
《即時(shí)通訊音視頻開發(fā)(五):認(rèn)識(shí)主流視頻編碼技術(shù)H.264》
《即時(shí)通訊音視頻開發(fā)(六):如何開始音頻編解碼技術(shù)的學(xué)習(xí)》
《即時(shí)通訊音視頻開發(fā)(七):音頻基礎(chǔ)及編碼原理入門》
《即時(shí)通訊音視頻開發(fā)(八):常見的實(shí)時(shí)語音通訊編碼標(biāo)準(zhǔn)》
《即時(shí)通訊音視頻開發(fā)(九):實(shí)時(shí)語音通訊的回音及回音消除概述》
《即時(shí)通訊音視頻開發(fā)(十):實(shí)時(shí)語音通訊的回音消除技術(shù)詳解》
《即時(shí)通訊音視頻開發(fā)(十一):實(shí)時(shí)語音通訊丟包補(bǔ)償技術(shù)詳解》
《即時(shí)通訊音視頻開發(fā)(十二):多人實(shí)時(shí)音視頻聊天架構(gòu)探討》
《即時(shí)通訊音視頻開發(fā)(十三):實(shí)時(shí)視頻編碼H.264的特點(diǎn)與優(yōu)勢》
《即時(shí)通訊音視頻開發(fā)(十四):實(shí)時(shí)音視頻數(shù)據(jù)傳輸協(xié)議介紹》
《即時(shí)通訊音視頻開發(fā)(十五):聊聊P2P與實(shí)時(shí)音視頻的應(yīng)用情況》
《即時(shí)通訊音視頻開發(fā)(十六):移動(dòng)端實(shí)時(shí)音視頻開發(fā)的幾個(gè)建議》
《即時(shí)通訊音視頻開發(fā)(十七):視頻編碼H.264、VP8的前世今生》
《即時(shí)通訊音視頻開發(fā)(十八):詳解音頻編解碼的原理、演進(jìn)和應(yīng)用選型》
《實(shí)時(shí)語音聊天中的音頻處理與編碼壓縮技術(shù)簡述》
《網(wǎng)易視頻云技術(shù)分享:音頻處理與壓縮技術(shù)快速入門》
《學(xué)習(xí)RFC3550:RTP/RTCP實(shí)時(shí)傳輸協(xié)議基礎(chǔ)知識(shí)》
《基于RTMP數(shù)據(jù)傳輸協(xié)議的實(shí)時(shí)流媒體技術(shù)研究(論文全文)》
《聲網(wǎng)架構(gòu)師談實(shí)時(shí)音視頻云的實(shí)現(xiàn)難點(diǎn)(視頻采訪)》
《淺談開發(fā)實(shí)時(shí)視頻直播平臺(tái)的技術(shù)要點(diǎn)》
《還在靠“喂喂喂”測試實(shí)時(shí)語音通話質(zhì)量?本文教你科學(xué)的評測方法!》
《實(shí)現(xiàn)延遲低于500毫秒的1080P實(shí)時(shí)音視頻直播的實(shí)踐分享》
《移動(dòng)端實(shí)時(shí)視頻直播技術(shù)實(shí)踐:如何做到實(shí)時(shí)秒開、流暢不卡》
《如何用最簡單的方法測試你的實(shí)時(shí)音視頻方案》
《技術(shù)揭秘:支持百萬級粉絲互動(dòng)的Facebook實(shí)時(shí)視頻直播》
《簡述實(shí)時(shí)音視頻聊天中端到端加密(E2EE)的工作原理》
《移動(dòng)端實(shí)時(shí)音視頻直播技術(shù)詳解(一):開篇》
《移動(dòng)端實(shí)時(shí)音視頻直播技術(shù)詳解(二):采集》
《移動(dòng)端實(shí)時(shí)音視頻直播技術(shù)詳解(三):處理》
《移動(dòng)端實(shí)時(shí)音視頻直播技術(shù)詳解(四):編碼和封裝》
《移動(dòng)端實(shí)時(shí)音視頻直播技術(shù)詳解(五):推流和傳輸》
《移動(dòng)端實(shí)時(shí)音視頻直播技術(shù)詳解(六):延遲優(yōu)化》
《理論聯(lián)系實(shí)際:實(shí)現(xiàn)一個(gè)簡單地基于HTML5的實(shí)時(shí)視頻直播》
《IM實(shí)時(shí)音視頻聊天時(shí)的回聲消除技術(shù)詳解》
《淺談實(shí)時(shí)音視頻直播中直接影響用戶體驗(yàn)的幾項(xiàng)關(guān)鍵技術(shù)指標(biāo)》
《如何優(yōu)化傳輸機(jī)制來實(shí)現(xiàn)實(shí)時(shí)音視頻的超低延遲?》
《首次披露:快手是如何做到百萬觀眾同場看直播仍能秒開且不卡頓的?》
《Android直播入門實(shí)踐:動(dòng)手搭建一套簡單的直播系統(tǒng)》
《網(wǎng)易云信實(shí)時(shí)視頻直播在TCP數(shù)據(jù)傳輸層的一些優(yōu)化思路》
《實(shí)時(shí)音視頻聊天技術(shù)分享:面向不可靠網(wǎng)絡(luò)的抗丟包編解碼器》
《P2P技術(shù)如何將實(shí)時(shí)視頻直播帶寬降低75%?》
《專訪微信視頻技術(shù)負(fù)責(zé)人:微信實(shí)時(shí)視頻聊天技術(shù)的演進(jìn)》
《騰訊音視頻實(shí)驗(yàn)室:使用AI黑科技實(shí)現(xiàn)超低碼率的高清實(shí)時(shí)視頻聊天》
《微信團(tuán)隊(duì)分享:微信每日億次實(shí)時(shí)音視頻聊天背后的技術(shù)解密》
《近期大熱的實(shí)時(shí)直播答題系統(tǒng)的實(shí)現(xiàn)思路與技術(shù)難點(diǎn)分享》
《福利貼:最全實(shí)時(shí)音視頻開發(fā)要用到的開源工程匯總》
《七牛云技術(shù)分享:使用QUIC協(xié)議實(shí)現(xiàn)實(shí)時(shí)視頻直播0卡頓!》
《實(shí)時(shí)音視頻聊天中超低延遲架構(gòu)的思考與技術(shù)實(shí)踐》
《理解實(shí)時(shí)音視頻聊天中的延時(shí)問題一篇就夠》
《實(shí)時(shí)視頻直播客戶端技術(shù)盤點(diǎn):Native、HTML5、WebRTC、微信小程序》
《寫給小白的實(shí)時(shí)音視頻技術(shù)入門提綱》
《微信多媒體團(tuán)隊(duì)訪談:音視頻開發(fā)的學(xué)習(xí)、微信的音視頻技術(shù)和挑戰(zhàn)等》
《騰訊技術(shù)分享:微信小程序音視頻技術(shù)背后的故事》
《微信多媒體團(tuán)隊(duì)梁俊斌訪談:聊一聊我所了解的音視頻技術(shù)》
《新浪微博技術(shù)分享:微博短視頻服務(wù)的優(yōu)化實(shí)踐之路》
《實(shí)時(shí)音頻的混音在視頻直播應(yīng)用中的技術(shù)原理和實(shí)踐總結(jié)》
《以網(wǎng)游服務(wù)端的網(wǎng)絡(luò)接入層設(shè)計(jì)為例,理解實(shí)時(shí)通信的技術(shù)挑戰(zhàn)》
《騰訊技術(shù)分享:微信小程序音視頻與WebRTC互通的技術(shù)思路和實(shí)踐》
《新浪微博技術(shù)分享:微博實(shí)時(shí)直播答題的百萬高并發(fā)架構(gòu)實(shí)踐》
《技術(shù)干貨:實(shí)時(shí)視頻直播首屏耗時(shí)400ms內(nèi)的優(yōu)化實(shí)踐》
本文已同步發(fā)布于“即時(shí)通訊技術(shù)圈”公眾號(hào):
▲ 本文在公眾號(hào)上的鏈接是:點(diǎn)此進(jìn)入,原文鏈接是:http://www.52im.net/thread-3194-1-1.html
作者:Jack Jiang (點(diǎn)擊作者姓名進(jìn)入Github)
出處:http://www.52im.net/space-uid-1.html
交流:歡迎加入即時(shí)通訊開發(fā)交流群 215891622
討論:http://www.52im.net/
Jack Jiang同時(shí)是【原創(chuàng)Java
Swing外觀工程BeautyEye】和【輕量級移動(dòng)端即時(shí)通訊框架MobileIMSDK】的作者,可前往下載交流。
本博文
歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明出處(也可前往 我的52im.net 找到我)。