日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

H.264(MPEG-4 AVC)级别(Level)、DPB 与 MaxDpbMbs 详解

發布時間:2024/2/28 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 H.264(MPEG-4 AVC)级别(Level)、DPB 与 MaxDpbMbs 详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于H.264(MPEG-4 AVC)而言,級別(Level)是與檔次(Profile)同等重要的參數。但很多文章說的很簡略,只是說標清視頻一般用3.1,高清用4,具體含義語焉不詳。于是我做了一番研究。

?

一、級別詳表

?

  級別(Level)是用來約束 分辨率、幀率 和 碼率 的。詳細信息請看表格——

LevelMax macroblocksMax video bit rate (kbit/s)Examples for high resolution @ frame rate (max stored frames)
per
second
per frameBP, XP, MPHiPHi10PHi422P, Hi444PP
11,485996480192256128×96@30.9 (8)
176×144@15.0 (4)
1b1,48599128160384512128×96@30.9 (8)
176×144@15.0 (4)
1.13,000396192240576768176×144@30.3 (9)
320×240@10.0 (3)
352×288@7.5 (2)
1.26,0003963844801,1521,536320×240@20.0 (7)
352×288@15.2 (6)
1.311,8803967689602,3043,072320×240@36.0 (7)
352×288@30.0 (6)
211,8803962,0002,5006,0008,000320×240@36.0 (7)
352×288@30.0 (6)
2.119,8007924,0005,00012,00016,000352×480@30.0 (7)
352×576@25.0 (6)
2.220,2501,6204,0005,00012,00016,000352×480@30.7(10)
352×576@25.6 (7)
720×480@15.0 (6)
720×576@12.5 (5)
340,5001,62010,00012,50030,00040,000352×480@61.4 (12)
352×576@51.1 (10)
720×480@30.0 (6)
720×576@25.0 (5)
3.1108,0003,60014,00017,50042,00056,000720×480@80.0 (13)
720×576@66.7 (11)
1280×720@30.0 (5)
3.2216,0005,12020,00025,00060,00080,0001,280×720@60.0 (5)
1,280×1,024@42.2 (4)
4245,7608,19220,00025,00060,00080,0001,280×720@68.3 (9)
1,920×1,080@30.1 (4)
2,048×1,024@30.0 (4)
4.1245,7608,19250,00062,500150,000200,0001,280×720@68.3 (9)
1,920×1,080@30.1 (4)
2,048×1,024@30.0 (4)
4.2522,2408,70450,00062,500150,000200,0001,920×1,080@64.0 (4)
2,048×1,080@60.0 (4)
5589,82422,080135,000168,750405,000540,0001,920×1,080@72.3 (13)
2,048×1,024@72.0 (13)
2,048×1,080@67.8 (12)
2,560×1,920@30.7 (5)
3,680×1,536@26.7 (5)
5.1983,04036,864240,000300,000720,000960,0001,920×1,080@120.5 (16)
4,096×2,048@30.0 (5)
4,096×2,304@26.7 (5)

Level:級別。

Max macroblocks:最大宏塊數。注:宏塊尺寸是16x16的。

  per second:每秒(的最大宏塊數)。可用于約束幀率。

  per frame:每幀(的最大宏塊數)。可用于約束分辨率。

Max video bit rate (kbit/s):最大視頻碼率。不同檔次(Profile)下會有區別。

  BP:Baseline Profile,基線檔次。

  XP:Extended Profile,進階檔次。

  MP:Main Profile,主要檔次。

  HiP:High Profile,高級檔次。

  Hi10P:High 10 Profile,高級10位檔次。

  Hi422P:High 4:2:2 Profile,高級4:2:2檔次。

  Hi444PP:High 4:4:4 Predictive Profile,高級4:4:4(實驗性?)檔次。

Examples for high resolution @ frame rate (max stored frames):范例:高分辨率@幀率(最大存儲幀數)。

?

?

二、推算分辨率與幀率

?

  在視頻壓制時,碼率的挑選是很容易判斷的。而分辨率與幀率 和 級別 的關系,就沒那么明顯了。所以我們需要找到計算方法。

?

  首先看看常見視頻分辨率所配套的級別——

480P(800x480):若幀率低于13.5用2.2,若幀率在13.5至27之間就用3,幀率高于27時用3.1。

720P(1280x720):一般為3.1。

1080P(1920x1080):一般為4。

?

  可以看到480P(800x480)有點特殊,所以我以它為例來講解如何推算分辨率與幀率。

?

  因宏塊尺寸是16x16的,我們根據此信息計算出 水平宏塊數(PicWidthInMbs) 和 垂直宏塊數(FrameHeightInMbs)——

水平宏塊數 = ceil(視頻寬度 / 16) = ceil(800 / 16) = ceil(50.0) = 50

垂直宏塊數 = ceil(視頻高度 / 16) = ceil(480 / 16) = ceil(30.0) = 30

注:ceil(x)是向頂舍入函數,返回的是大于等于x的最小整數。

?

  然后計算每幀宏塊數(macroblocks per frame)——

每幀宏塊數 = 水平宏塊數 * 垂直宏塊數 = 50 * 30 = 1500

?

  查上面的級別詳表,可知支持 每幀宏塊數1500 的最低級別是2.2。

  級別2.2所允許的 每秒最大宏塊數(Max macroblocks per second) 是 20250。20250 / 1500 = 13.5。即最高支持每秒13.5幀。

  提高一個級別,級別3所允許的 每秒最大宏塊數 是 40500。40500 / 1500 = 27。即最高支持每秒27幀。

  再提高一個級別,級別3.1所允許的 每秒最大宏塊數 是 108000。108000 / 1500 = 72。即最高支持每秒72幀,夠用了。

?

  當宏塊數超過級別的約束時,x264會顯示這樣的警告信息——

x264 [warning]: frame MB size (120x68) > level limit (5120)

?

  現在來做做練習題,鞏固一下所學知識吧——

1. 720P(1280x720)視頻在級別3.1下,最高支持每秒多少幀?

2. 1080P(1920x1080)視頻在級別4下,最高支持每秒多少幀?

?

?

三、最大存儲幀數、DPB 與 MaxDpbMbs

?

  在前面的級別詳表中,還有一個神秘的字段——最大存儲幀數(max stored frames)。它是從何而來的呢?

?

  最大存儲幀數與DPB有關——DPB:decoded picture buffer,解碼圖片緩存區。在做視頻解碼時,需要將最近的若干幅參考幀緩存起來,這個緩沖區就叫做DPB。所以最大存儲幀數也是最大參考幀數(ref)。DPB一般以宏塊數為單位(DpbMbs),計算公式為——

DpbMbs = ref(參考幀數) * PicWidthInMbs(水平宏塊數) * FrameHeightInMbs(垂直宏塊數)

?

  在不同的級別(Level)下,最大的解碼圖片緩存區宏塊數(MaxDpbMbs)是不同的——

LevelMaxDpbMbs
1396
1b396
1.1900
1.22,376
1.32,376
22,376
2.14,752
2.28,100
38,100
3.118,000
3.220,480
432,768
4.132,768
4.234,816
5110,400
5.1184,320

?

  我們可根據 MaxDpbMbs約束 倒推出 最大的參考幀數——

max_ref = min(floor(MaxDpbMbs / (PicWidthInMbs * FrameHeightInMbs)), 16)

注1:floor(x)是向底舍入函數,返回的是小于等于x的最大整數。

注2:因參考幀數(ref)最大只能為16。

?

  練習題——

1. 720P(1280x720)視頻在級別3.1下,最高支持多少個參考幀(最大存儲幀數)?級別3.2、4 下呢?

2. 1080P(1920x1080)視頻在級別4下,最高支持多少個參考幀(最大存儲幀數)?級別5、5.1 下呢?

?

(完)

?

?

參考文獻

~~~~~~~~

?

http://en.wikipedia.org/wiki/H.264

H.264/MPEG-4 AVC

總結

以上是生活随笔為你收集整理的H.264(MPEG-4 AVC)级别(Level)、DPB 与 MaxDpbMbs 详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。