視頻和視頻幀:視頻和幀基礎(chǔ)知識(shí)整理
基于18年12月的接手x86平臺(tái)邊緣計(jì)算設(shè)備的流量解碼已經(jīng)工作了幾個(gè)月。作者還記得對(duì)流媒體、視頻、幀、圖像等概念完全混亂,慢慢跟隨項(xiàng)目一步一步地學(xué)習(xí),受益匪淺,以本文鼓舞人心作為繼續(xù)學(xué)習(xí)的里程碑!
本文將介紹:
視頻的基本知識(shí)。包括:視頻協(xié)議、格式、視頻流。視頻幀的基本知識(shí)。YUV幀格式,常見幀名詞(幀率)fps、幀名詞(1080p和1080i)、幀名詞源自視頻編解碼(GOP、IBP幀)。修改記錄本文于2019年4月8日首次完成,包括:
視頻協(xié)議、格式、播放原理等基本內(nèi)容;YUV格式、fps、分辨率、GOP和I/B/P幀等視頻幀的基本知識(shí);提到H2 ** 等視頻壓縮技術(shù)。二次修改于2019年9月7日進(jìn)行,修改內(nèi)容如下:
第一章增加了視頻流介紹,刪除了播放原理介紹;第二章增加了YUV現(xiàn)場(chǎng)、1080p和1080i介紹;刪除YUV的顏色值域(Color Range)介紹;刪除了原第三章的內(nèi)容,這篇文章將在后續(xù)發(fā)表。I. 視頻基礎(chǔ)知識(shí)我相信每個(gè)人都必須熟悉視頻。通常,他們必須經(jīng)常瀏覽主要視頻網(wǎng)站(如騰訊視頻和比利比利),甚至偶爾將視頻緩存到本地并保存.mkv,.avi文件等等。前者是我們常說的『網(wǎng)絡(luò)流媒體』,后者是『本地視頻文件』。兩個(gè)問題來了:
常見的本地視頻文件MP4、MKV、 ** I等等,這些是什么?有什么區(qū)別?騰訊視頻和嗶哩嗶哩在線觀看的視頻與當(dāng)?shù)夭シ诺囊曨l有什么不同?MP4、MKV、 ** I文件有什么區(qū)別?在介紹第一個(gè)問題之前,必須引入一個(gè)名詞『視頻包裝格式』,簡稱『視頻格式』,也稱為『容器』。有的說法還要區(qū)分是視頻文件格式和視頻包裝格式,本文統(tǒng)一稱『視頻包裝格式』。
視頻格式問題1:常見的本地視頻文件MP4、MKV、 ** I等等,這些是什么?有什么區(qū)別?
首先,MP4、 ** I、MKV都是本地視頻文件的后綴,在windows用于提示操作系統(tǒng)應(yīng)使用哪個(gè)應(yīng)用程序打開系統(tǒng)。在流媒體領(lǐng)域,這些都被稱為『視頻包裝格式』,除音視頻流外,它們還包含了一些輔助信息和組織視頻音頻的方法。不同格式的視頻在不同的平臺(tái)上有不同的用戶體驗(yàn),主要是因?yàn)橐曨l的組織方式不同。作者認(rèn)為百度百科全書上的解釋很容易理解( ** 說法不夠直白):
視頻格式是視頻播放軟件為了播放視頻文件而賦予視頻文件的識(shí)別符號(hào)。簡而言之,視頻格式規(guī)定了與播放器的通信協(xié)議。
其次,作者最近準(zhǔn)備開始深入研究MP4、 ** I、MKV內(nèi)部原部原則主要是組織視頻和音頻的方式。例如,在播放視頻時(shí),我們可以選擇各種語言,如普通話、廣東話和英語,這意味著視頻和音頻包含多個(gè)音頻流。給自己留個(gè)坑。
最后,作者推薦了一個(gè)很棒的博客:視頻文件格式知道多少,總結(jié)得很完整。
問題1引申:對(duì)于想做視頻處理的開發(fā)者,接觸MP4、MKV、 ** I在等待各種格式的視頻文件時(shí),有什么需要注意的嗎?
視頻和音頻處理可以多領(lǐng)域,包括解碼、編碼、過濾、增強(qiáng)處理等。作者目前只探索解碼領(lǐng)域,答案是:解碼沒有區(qū)別。其他領(lǐng)域還不清楚。
『視頻包裝格式』,它是在編碼視頻和音頻的基礎(chǔ)上進(jìn)行包裝,添加與播放相關(guān)的協(xié)議數(shù)據(jù)(這是作者的認(rèn)知,如果表達(dá)不準(zhǔn)確,歡迎批評(píng)和糾正)。目前,主流開源框架在解包裝工作中非常成熟FFMpeg,為打開視頻音頻提供了API,開發(fā)人員可以直接取出視頻流進(jìn)行處理,無需注意具體的視頻格式。
接下來,我將介紹第二個(gè)問題,作者將引入名詞『視頻協(xié)議』,也有說法認(rèn)為『視頻協(xié)議』也屬于『視頻包裝格式』。
視頻協(xié)議問題2:在騰訊視頻、嗶哩嗶哩網(wǎng)上觀看的視頻,以及當(dāng)?shù)夭シ诺囊曨lMP4、MKV、 ** I文件有什么區(qū)別?
『視頻協(xié)議』它是針對(duì)網(wǎng)絡(luò)流媒體的,即只有在有網(wǎng)絡(luò)時(shí)才能通過瀏覽器或移動(dòng)終端APP目前常見的協(xié)議有視頻RTSP、RTMP、HLS、HTTP等等。作者短暫接觸過。GStreamer開發(fā),連接RSTP在視頻中,除了視頻流和音頻流metadata此外,還攜帶播放信令。
也會(huì)有文章『視頻協(xié)議』歸入『視頻包裝格式』。在我看來,這種分類也有其原因:『視頻協(xié)議』和『視頻包裝格式』同時(shí)攜帶視頻和音頻metadata,以及協(xié)議/格式所需的其他信息。以FFMpeg例如,視頻格式和視頻協(xié)議沒有區(qū)別;但是GStreamer還需要指定『視頻協(xié)議』,但是不區(qū)分『視頻包裝格式』。
剝開『視頻包裝格式』和『視頻協(xié)議』外殼,接下來了解視頻流本身,這才是流媒體領(lǐng)域真正的主角。本文僅介紹視頻流。
視頻流就視頻流而言,我相信你一定經(jīng)常聽到類似的h2 ** 碼流”、“yuv流、編碼流、解碼流、原始流、裸流、壓縮流或未壓縮流等。綜上所述,提到『視頻流』一定只有兩種形式:
壓縮算法壓縮的流數(shù)據(jù)稱為『編碼流』,由于目前的壓縮/編碼算法H2 ** 因此,它也常被稱為『H2 ** 碼流』。未壓縮流數(shù)據(jù)是解碼流數(shù)據(jù),稱為『原始流』,可以想象,視頻是由時(shí)間上連續(xù)的圖像組成的,因?yàn)橐曨l中的圖像是『YUV』(后面介紹),所以常被稱為『YUV流』。總結(jié)出現(xiàn)的名稱,h2 ** 編碼流、編碼流、壓縮流是壓縮/編碼后的視頻流;而yuv流、解碼流、未壓縮流是未壓縮/編碼的視頻流。裸流是一個(gè)歧義性的詞,可以是前者或后者。
因此,如果你將來閱讀任何與流媒體相關(guān)的文章,你會(huì)看到它『視頻流』應(yīng)該弄清楚這是編碼/壓縮還是不。在生活中,接觸到的大部分視頻文件都是編碼/壓縮的;在網(wǎng)絡(luò)傳輸場(chǎng)景中,大部分也是編碼/壓縮壓縮后的。只有在視頻播放時(shí),觀眾才能看到一幀幀『轉(zhuǎn)碼』為『RGB』視頻流解碼后。
流媒體領(lǐng)域的編碼/壓縮是一項(xiàng)非常重要的技術(shù):從『H2 ** 碼流』到『YUV流』過程稱為解碼,反之亦然。
II. 幀流媒體領(lǐng)域,『流』很重要,『流』的基本元素『幀』同樣重要。原因是:對(duì)于視頻編碼/壓縮,其核心是在盡可能小的空間內(nèi)存儲(chǔ)一組時(shí)間連續(xù)幀數(shù)據(jù);對(duì)于視頻解碼,將編碼/壓縮的幀數(shù)據(jù)恢復(fù)到原始狀態(tài)。可100%恢復(fù)的編碼/壓縮算法稱為無損壓縮,反之亦然(無損壓縮雖然是最理想的,但在很多實(shí)際場(chǎng)景中,為了追求高壓縮率,比如降低網(wǎng)絡(luò)帶寬壓力,往往要選擇有損壓縮)。由此可見,『幀』是視頻流媒體領(lǐng)域的核心。接下來,讓我們知道什么是『幀』。
『幀』,可以聯(lián)想成我們平時(shí)看到的圖像,但我們平時(shí)接觸的圖片是『RGB』格式,視頻幀通常是『YUV』格式。既然提到了『RGB』和『YUV』,然后了解下幀的格式『YUV』,第一個(gè)問題:
問題3:為什么幀使用『YUV』格式?『YUV』是什么?
為此,筆者花了很長時(shí)間了解色彩空間、電視成像的發(fā)展歷史等,整理結(jié)論如下:
在達(dá)到最大壓縮率的情況下,可以保證對(duì)人眼感知的失真度最小?!篩UV』三通道,其中"Y";表示亮度(Lumina nce或Lu ** ),也就是灰階值;和"U"和"V";表示色度(Chrominance或Chro ** )。許多科學(xué)家發(fā)現(xiàn),人眼對(duì)面UV敏感度最低,可以大比例壓縮UV兩個(gè)通道的值。見視頻編解碼學(xué)習(xí)一 yuv格式。向前兼容黑白電視。這涉及歷史原因。作者強(qiáng)烈推薦零基礎(chǔ)入門音視頻開發(fā)。在歷史上,有人提出使用視頻幀格式RGB是的,最后決定用YUV這是真正的原因(見圖像使用)YUV為什么不使用格式?RGB呢?。接下來解釋『YUV』作者認(rèn)為是什么,『YUV』在視頻領(lǐng)域,提到它是一個(gè)廣義的概念『YUV』通常有以下含義:
顏色空間“Y表示亮度(Luminance、Lu ** ),“U”和“V”則是色度(Chrominance)、濃度(Chro ** )。這是色彩空間的基礎(chǔ),類似XYZ坐標(biāo)系的色標(biāo)表示基準(zhǔn),即每種顏色都可以通過三維向量<y^i^,u^i^,v^i^>來表示。還有類似的RGB顏色空間、HSV色彩空間等。下圖來自How does the YUV color coding work?
圖1. YUV坐標(biāo)軸示意圖隨著通信行業(yè)的發(fā)展,實(shí)際應(yīng)用的復(fù)雜性導(dǎo)致『YUV』一個(gè)大家庭衍生出來。一定聽說過接觸視頻領(lǐng)域。YCbCr,甚至還有YPbPr、YIQ等。有的被時(shí)代淘汰,有的還在用。之所以出現(xiàn)『YUV』大家實(shí)際電路系統(tǒng)實(shí)際電路系統(tǒng)之間的差異『YUV』轉(zhuǎn)到『RGB』空間,實(shí)際對(duì)應(yīng)的轉(zhuǎn)換系數(shù)有一些差異,所以各部門開始制定各種規(guī)范,我們現(xiàn)在看到『YUV』大家族。
YCbCr它誕生于數(shù)字電路;YPbPr它是模擬電路。然而,現(xiàn)在是數(shù)字時(shí)代,它誕生于模擬電路YPbPr已逐漸被淘汰,但已逐漸被淘汰YCbCr一直在發(fā)揮作用。所以現(xiàn)在,YCbCr有時(shí)它只是被稱為/認(rèn)為『YUV』。
2. 采樣率
讀者可能聽說過讀者可能聽說過YUV444”,“YUV422”,“YUV在這里,你可能會(huì)想:420YUV不是顏色空間嗎?為什么后面會(huì)跟著一串?dāng)?shù)字?” 因?yàn)楫?dāng)你看到的時(shí)候YUV后面跟著一串?dāng)?shù)字,『YUV』它不再是色彩空間的基本含義,而是在原始『YUV流』上的采樣。以前流媒體剛興起的時(shí)候,沒有4G/5G,當(dāng)時(shí),為了減輕網(wǎng)絡(luò)傳輸帶寬的壓力,我們做出了各種努力。除編碼/壓縮外,YUV采樣率也是一種。444,422和420是三種『YUV』(指數(shù)字電路YCbCr)三位數(shù)分別代表采樣YUV(在數(shù)字電路中YCbCr,本段后同)通道抽樣比。所以可以理解,444是全采樣;422是Y的全采樣UV均勻采樣1/2。有趣的問題來了,420是否完全丟棄了V通道/重量數(shù)據(jù)?答案是否定的。首先,我們必須理解一個(gè)問題。一幀圖像是由像素組成的矩形,如4x圖像的大小,由16個(gè)像素點(diǎn)組成。平時(shí)接觸『RGB』在圖像中,每個(gè)像素必須至少由RGB這三個(gè)通道(有些圖像和alpha重量),每個(gè)重量的值一般是[0,255],即[2^0,2^8]所以常說像素占用3字節(jié)(如果還有其他重量,比如RGBA,另當(dāng)別論)?!篩UV』同樣,它的每個(gè)像素都是由圖像組成的YUV組成的。其次,從整個(gè)圖像宏觀上考慮采樣問題。還是以4X以4的圖像為例。444的圖像如下圖2-1所示。這是圖像的形象。事實(shí)上,存儲(chǔ)在機(jī)器中并非如此。詳見博客《圖像原始格式》。422和420分別如下圖2-2和2-3所示。
圖2-1. YUV444采樣示意圖圖2-1對(duì)應(yīng)YUV每個(gè)像素中都可以看到444采樣,即全采樣。YUV通道保留,一般來說YUV444太大了,很少用。
圖2-2. YUV422采樣示意圖圖2-2對(duì)應(yīng)YUV422采樣,采樣方每條掃描線或每行相鄰兩個(gè)像素,只取一個(gè)像素UV重量。另外,可以計(jì)算出每個(gè)像素占用的大小是原來的2/3,所以YUV422是YUV444的2/3大小。
這個(gè)時(shí)候有個(gè)問題,『YUV』轉(zhuǎn)『RGB』時(shí)間,被抽走了UV重量像素該怎么辦?做法很簡單,就是公共保留相鄰兩個(gè)像素的Y重量UV分量。
圖2-2. YUV420采樣示意圖圖2-3對(duì)應(yīng)YUV420采樣方采樣方式為:隔行進(jìn)行YUV每行422采樣方法,即相鄰兩個(gè)像素只取一個(gè)像素UV重量;下一行丟棄一切UV分量。另外,可以計(jì)算出每個(gè)像素占用的大小是原來的1/2,所以YUV420是YUV444的1/2大小?;謴?fù)UV重量的方法相同YUV只是這里有2422X2.矩陣共享保留UV分量。
這種設(shè)計(jì)方法真的很巧妙!上面提到的"人眼對(duì)UV敏感度最低,可以大比例壓縮UV兩個(gè)通道的值";對(duì)圖像而言,相鄰區(qū)域像素的顏色和飽和度一般都很高接近,因此這種以2X2矩陣為基本單位,只保留1組UV分量合情合理。
3. 編碼/存儲(chǔ)格式
大家肯定還聽說過YV12、YU12、NV12、NV21吧,看到這里是不是又納悶:“后面的數(shù)字怎么變成2個(gè)了?而且前面的英文字母還變了?”以上統(tǒng)稱為『視頻的存儲(chǔ)格式』,也就是說,計(jì)算機(jī)是如何存儲(chǔ)一幀視頻的。首先,『視頻的存儲(chǔ)格式』總分為兩大類:『打包格式(packed)』和『平面格式(planar)』。前者又被稱作『緊湊格式(packed)』。其實(shí)除此之外還有『半平面模式(Semi-Planar)』,估計(jì)是使用的比較少,因此在很多文章中常被忽略。筆者很感興趣,為什么會(huì)出現(xiàn)『打包格式』和『平面格式』兩大派系,網(wǎng)上搜了很多資料也沒找到原因,博客【音視頻基礎(chǔ)】:I420、YV12、NV12、NV21等常見的YUV420存儲(chǔ)格式提到了需要約定存儲(chǔ)格式,但也沒提到為什么會(huì)分成這兩種。要么就是派系之爭,類似貝葉斯學(xué)派和頻率學(xué)派;要么就是實(shí)際應(yīng)用中逐漸衍生出這兩大格式。時(shí)至今日,這兩個(gè)格式還在被使用,因此對(duì)于多媒體開發(fā)者們都有必要了解?!捍虬袷健皇前裏UV分量交叉存儲(chǔ),『平面格式』則是把YUV嚴(yán)格分開存儲(chǔ),『半平面模式』介于兩者之間,Y分量分開存儲(chǔ),UV交叉存儲(chǔ)。以下圖為例說明『打包格式』、『平面格式』和『半平面模式』應(yīng)該是非常清楚的,圖摘自博客YUV格式初探:
?圖3-1. YUV420P存儲(chǔ)示意圖?圖3-2. YUV420SP存儲(chǔ)示意圖?圖3-3. YUV420Packet存儲(chǔ)示意圖但是關(guān)于上圖的『打包格式』,筆者是是有一點(diǎn)疑惑的,大多數(shù)的說法是”YUV通道交叉存儲(chǔ),相鄰的像素盡量打包在一起“,圖3-3中U1后面跟著的是U2而不是V1,而且YUV的排列方式似乎也不完全是交叉?筆者嘗試在網(wǎng)上搜索『打包格式』更多的例子,沒有找到特別好的資料,【這里給自己挖一個(gè)坑吧】。
接下來,我們繼續(xù)了解一些幀相關(guān)的概念。
常見的幀名詞
幀率(FPS)『幀率』,F(xiàn)PS,全稱Frames Per Second。指每秒傳輸?shù)膸瑪?shù),或者每秒顯示的幀數(shù),一般來說,『幀率』影響畫面流暢度,且成正比:幀率越大,畫面越流暢;幀率越小,畫面越有跳動(dòng)感。一個(gè)較權(quán)威的說法:當(dāng)視頻幀率不低于24fps時(shí),人眼才會(huì)覺得視頻時(shí)連貫的,稱為“視覺暫留”現(xiàn)象。因此,才有說法:盡管『幀率』越高越流暢,但在很多實(shí)際應(yīng)用場(chǎng)景中24fps就可以了。分辨率(Resolution)『分辨率』,也常被俗稱為『圖像的尺寸』或者『圖像的大小』。指一幀圖像包含的像素的多少,常見有1280x720(720P),1920X1080(1080P)等規(guī)格?!悍直媛省挥绊憟D像大小,且與之成正比:『分辨率』越高,圖像越大;反之,圖像越小。碼率(BPS)『碼率』,BPS,全稱Bits Per Second。指每秒傳送的數(shù)據(jù)位數(shù),常見單位KBPS(千位每秒)和MBPS(兆位每秒)。筆者認(rèn)為這個(gè)概念真正要理解起來還是需要好好說明的,網(wǎng)上一說:“『碼率』與體積成正比:碼率越大,體積越大;碼率越小,體積越小”;另一說:“『碼率』越大,說明單位時(shí)間內(nèi)取樣率越大,數(shù)據(jù)流精度就越高,這樣表現(xiàn)出來的的效果就是:視頻畫面更清晰畫質(zhì)更高”;還有說法是:”『碼率』就是『失真度』“。但是筆者有一段時(shí)間就是不理解,每秒傳輸?shù)臄?shù)據(jù)越大,為什么必然就對(duì)應(yīng)畫面更清晰?還有體積怎么理解呢?且看下文”三者之間的關(guān)系“。『幀率』『分辨率』和『碼率』三者之間的關(guān)系最理想的情況是畫面越清晰、越流暢是最好的。但在實(shí)際應(yīng)用中,還需要結(jié)合硬件的處理能力、實(shí)際帶寬條件選擇。高『幀率』高『分辨率』,也就意味著高『碼率』,也意味著需要高帶寬和強(qiáng)大的硬件能力進(jìn)行編解碼和圖像處理。所以『幀率』和『分辨率』應(yīng)該視情況而定。要說三者之間的關(guān)系,其實(shí)就是對(duì)于『碼率』的理解。在碼率(BPS)概念中提到了幾段摘自網(wǎng)上的說法,說的都太模糊了,筆者直到閱讀了文章Video Bitrate Vs. Frame Rate,才真的理解了『碼率』。首先,這些說法都沒有交代一個(gè)前提:『幀率』、『分辨率』和『壓縮率』都會(huì)影響『碼率』。Video Bitrate Vs. Frame Rate](https:// ** .89che.com)文章在一開始就明確指出:
Bitrate serves as a more general indicator of quality, with higher resolutions, higher frame rates and lower compression all leading to an increased bitrate.『碼率』是更廣泛的(視頻)質(zhì)量指標(biāo):更高的『分辨率』,更高的『幀率』和更低的『壓縮率』,都會(huì)導(dǎo)致『碼率』增加。文章后面又特別強(qiáng)調(diào)『分辨率』和『壓縮率』對(duì)『碼率』的影響:高分辨率意味著圖片可以包括更多的細(xì)節(jié),低壓縮率意味著圖片壓縮損失越少,即失真越少,越清晰。那為什么不特地討論『幀率』呢?筆者認(rèn)為原因有二:一個(gè)是『幀率』的影響非常直觀,每秒幀數(shù)增加必然導(dǎo)致數(shù)據(jù)量增加;另一個(gè)是實(shí)際應(yīng)用場(chǎng)景中『幀率』是相對(duì)固定的,我們觀看的一般視頻都在25-30fps之間,現(xiàn)在一些高幀視頻是60fps,可見視頻『幀率』在實(shí)際場(chǎng)景中被討論的很少。
奇怪的幀名詞:1080p和1080i、場(chǎng)
筆者僅僅出于覺得有趣才放上來的,1080p和1080i、場(chǎng)都是相對(duì)比較“老”的概念了,在還是CRT電視的時(shí)代,顯示器顯示畫面都是靠電子槍一行一行掃描畫面才能產(chǎn)生一副完整的圖像,這就被稱作『場(chǎng)』,后來這個(gè)名詞也不常使用了,被取代它的是『幀』?!究萍荚谶M(jìn)步,過時(shí)的概念、應(yīng)用都會(huì)被新興的替換,所以真的要不斷學(xué)習(xí)緊跟時(shí)代??!】
1080p和1080i也是『場(chǎng)』同一時(shí)期的概念:
${數(shù)字}i的字母”i“表示Interlace,代表隔行掃描,比如奇數(shù)『場(chǎng)』只掃描奇數(shù)行,后一『場(chǎng)』即偶數(shù)『場(chǎng)』只掃描偶數(shù)行。這在過去是非常有用的,當(dāng)時(shí)網(wǎng)絡(luò)條件差,帶寬受限,隔行掃描可以很大程度上減少傳輸?shù)臄?shù)據(jù),又不至于影響觀眾觀看體驗(yàn)。${數(shù)字}p的字母”p“表示Progressive,即逐行掃描,也就是一『場(chǎng)』把全部畫面掃描完整。這是后來才提出的概念,這也代表時(shí)代進(jìn)步,帶寬條件上來了。既然都是老概念了,那為什么還要再提呢?借用文章1080P和1080i是什么意思?的一段來說:
進(jìn)入液晶時(shí)代的如今,隔行和逐行其實(shí)已經(jīng)沒有太大的意義了,現(xiàn)在的電視或者是顯示器都屬于固定像素設(shè)備,像素點(diǎn)同時(shí)發(fā)光,并不需要掃描,但是硬要說的話可以認(rèn)為現(xiàn)在的顯示設(shè)備都是逐行掃描的,但也并不是說1080P和1080i等就可以淘汰了,畢竟還涉及到攝像機(jī)的格式,不過普通觀眾也不會(huì)關(guān)心是用什么攝像機(jī)拍的,只關(guān)心呈現(xiàn)出來的樣貌就好了。視頻『幀』和編解碼密切相關(guān),因此還有不少『幀』的概念是和視頻編解碼相關(guān)的。
視頻編解碼而衍生的幀名詞
I幀、P幀、B幀和IDR幀但凡接觸過一點(diǎn)視頻編解碼的讀者,一定見過IPB幀,至于IDR可能見的少一些。下面,簡單解釋每種類型:I幀,英文全寫Intra Picture,又稱幀內(nèi)編碼幀,俗稱關(guān)鍵幀。一般來說I幀不需要依賴前后幀信息,可獨(dú)立進(jìn)行解碼。有數(shù)據(jù)表明,僅I幀的壓縮率,可以達(dá)到7,這里其實(shí)可以把I幀的壓縮等同于單獨(dú)壓縮一幅圖片。至于說I幀的壓縮只壓縮了空間上的冗余信息,放在后續(xù)編碼相關(guān)的系列文章中會(huì)詳述?!具@里再挖一個(gè)坑,免得自己忘記了】P幀,英文全寫predictive-frame,又稱前向預(yù)測(cè)編碼幀,也有幀間預(yù)測(cè)編碼幀。顧名思義,P幀需要依賴前面的I幀或者P幀才能進(jìn)行編解碼,因?yàn)橐话銇碚f,P幀存儲(chǔ)的是當(dāng)前幀畫面與前一幀(前一幀可能是I幀也可能是P幀)的差別,較專業(yè)的說法是壓縮了時(shí)間冗余信息,或者說提取了運(yùn)動(dòng)特性。P幀的壓縮率約在20左右,幾乎所有的H2 ** 編碼流都帶有大量的P幀。B幀,英文全寫bi-directional interpolatedprediction frame,又稱 雙向預(yù)測(cè)內(nèi)插編碼幀,簡稱雙向預(yù)測(cè)編碼幀。B幀非常特殊,它存儲(chǔ)的是本幀與前后幀的差別,因此帶有B幀的視頻在解碼時(shí)的邏輯會(huì)更復(fù)雜些,CPU開銷會(huì)更大。因此,不是所有的視頻都帶有B幀,筆者目前還沒有接觸過帶B幀的視頻。【找到帶B幀視頻一定要珍藏起來好好研究!】不過,B幀的壓縮率能夠達(dá)到50甚至更高,在壓縮率指標(biāo)上還是很客觀的。IDR幀,英文全寫Instantaneous Decoding Refresh,翻譯過來是即時(shí)解碼刷新。聽上去,這類幀并不是名詞概念,倒像是個(gè)動(dòng)詞?IDR幀是一種特殊的I幀,它是為了服務(wù)于編解碼而提出的概念,IDR幀的作用是立刻刷新,使錯(cuò)誤不致傳播,從IDR幀開始,重新算一個(gè)新的序列開始編碼(摘自博客H2 ** 中I幀和IDR幀的區(qū)別)。I/P/B幀,并不是依據(jù)視頻幀數(shù)據(jù)內(nèi)部的元素的不同來區(qū)分的,從解碼后的幀本身而言,它們沒有任何區(qū)別。僅僅是在編碼時(shí),對(duì)幀處理的方式不同而已。
GOP英文全稱Group Of Pictures,一般來說,指的就是兩個(gè)I幀之間的間隔,嚴(yán)格來說,是兩個(gè)IDR幀之間的間隔。筆者對(duì)GOP研究的不多,對(duì)于網(wǎng)上的說法:“GOP在一定程度上會(huì)影響視頻畫面質(zhì)量 - 在碼率相同的情況下,GOP越大,意味著PB幀越多,也就更容易獲取較好的圖像質(zhì)量”這個(gè)說法存疑?!具@里留個(gè)坑待填】PTS、DTS筆者是在對(duì)視頻文件硬做解碼的時(shí)候,發(fā)現(xiàn)實(shí)際解碼輸出的fps是硬解的能力上限,比如一個(gè)24fps的視頻文件,在用硬件解碼時(shí),能夠達(dá)到100+,當(dāng)時(shí)接到一個(gè)需求是:“需要控制視頻文件的解碼率,讓它和文件的fps保持一致”。后來查閱了大量的資料,進(jìn)而了解了DTS和PTS的概念:DTS,英文全稱Decoding Time Stamp,即解碼時(shí)間戳,這個(gè)時(shí)間戳的意義在于告訴解碼器該在什么時(shí)候解碼這一幀的數(shù)據(jù)。PTS,英文全稱Presentation Time Stamp,即顯示時(shí)間戳,這個(gè)時(shí)間戳用來告訴播放器該在什么時(shí)候顯示這一幀的數(shù)據(jù)。這個(gè)概念在做視音頻同步的時(shí)候特別重要,尤其是PTS,目前常見的視音頻同步的三種策略“同步到音頻的PTS”、“同步到視頻的PTS”和“同步到系統(tǒng)/外部時(shí)鐘”,都是基于PTS完成的。
寫在后面盡管每個(gè)概念網(wǎng)上都可以搜到一大堆的資料,但是筆者從一個(gè)多媒體開發(fā)小白走過來,覺得能有相對(duì)系統(tǒng)入門的綜合性介紹就會(huì)更好了!本文每個(gè)地方,都是基于筆者自己的理解,而不是簡單地從網(wǎng)上“ ** 粘貼”過來的,希望能夠?qū)Υ蠹矣兴鶐椭?!?dāng)然,文章中有不嚴(yán)謹(jǐn)?shù)牡胤?,歡迎留言告知;或者有什么有趣的話題探討,也歡迎私信留言!
最后,筆者目前在騰訊優(yōu)圖的邊緣計(jì)算開發(fā)小團(tuán)隊(duì),目前我們正在計(jì)劃開源一款能夠適配設(shè)備(以邊緣設(shè)備為主)視覺AI計(jì)算落地應(yīng)用框架-RapidAIoT,內(nèi)容包括視頻取流、AI計(jì)算、消息結(jié)果上報(bào)下發(fā)中間件。也歡迎大家咨詢了解。
上海西陸信息科技有限公司 承接各類微信小程序開發(fā)制作、小程序定制、APP 網(wǎng)站 開發(fā)制作,聯(lián)系電話 18221533805、15900430334
直播運(yùn)營計(jì)劃方案
抖音的營銷模式是什么?抖音的營銷策略分析
【推薦】畫畫視頻教程大全視頻學(xué)畫畫教程視頻教程!
如何截取綜藝視頻,制作短視頻?
短視頻APP源碼開發(fā)的重點(diǎn),視頻錄制和視頻剪輯
視頻號(hào)聯(lián)盟:揭秘視頻號(hào)與其他短視頻平臺(tái)的區(qū)別
視頻搬運(yùn)玩法,短視頻怎么搬運(yùn)?
對(duì)標(biāo)西瓜視頻推出下飯視頻,騰訊All in短視頻了?
【推薦】國畫視頻教程大全視頻|如何自學(xué)國畫教學(xué)視頻
說說視頻編碼格式、視頻碼率、視頻幀率、分辨率的概念
掃盲丨如何區(qū)分3D視頻、360視頻和VR視頻?
視頻切割怎么弄?視頻剪輯軟件可以切割視頻嗎?
視頻后期怎么制作?視頻剪輯軟件可以制作視頻后期嗎?
一個(gè)視頻分割成多個(gè)視頻,視頻分割工具哪個(gè)好?
視頻營銷時(shí)代來臨|無錫視頻拍攝
剪輯視頻怎么調(diào)整方向,旋轉(zhuǎn)視頻?
視頻剪輯必備神器,模糊視頻變清晰視頻的實(shí)例
短視頻劇本 | 短視頻劇本教學(xué) | 短視頻應(yīng)該怎么定位?
視頻剪輯制作 視頻后期制作 視頻制作 動(dòng)畫視頻制作價(jià)格表
視頻怎么優(yōu)化?用它,快速優(yōu)化視頻!
聯(lián)系我們