H264编码器参数理解 (部分)“I帧”和“帧间距”等的理解
寫作背景:最近在研究H264編碼器的參數,里面的參數不太懂,其中包括:
1)? 30?# i intervals? // I 幀間距
2) ?30?# idr intervals// idr幀間距
3 ) ? 0?# b frame number between 2 p-frame(0, 1, 2)
4 ) ? 0?# min qp //最小量化步長
5 ) ? 51?# max qp//最大量化步長
6 ) ? 200000?# bps碼率
7 ) ? 30?# framerate(rc only)//幀率
先對簡單的進行解釋:
2)idr幀間距
IDR幀是視頻流的“分隔符”,所有幀都不可以使用越過關鍵幀的幀作為參考幀。IDR幀是I幀的一種,所以它們也不參照其它幀。這意味著它們可以作為視頻的搜索(seek)點。
通過這個設置可以設置IDR幀的最大間隔幀數(亦稱最大圖像組長度)。較大的值將導致IDR幀減少(會用占用空間更少的P幀和B幀取代),也就同時減弱了參照幀選擇的限制。較小的值導致減少搜索一個隨機幀所需的平均時間。
建議:默認值(fps的10倍)對大多數視頻都很好。如果在為藍光、廣播、直播流或者其它什么專業流編碼,也許會需要更小的圖像組長度(一般等于fps)。
3)b幀數
B幀數(Number of B-Frames):在IP幀之間可插入的B幀數量最大值,范圍0~16,可以?
#大大提高 壓縮比,建議選擇2
4)min qp 最小量化步長
說明:設置x264可以使用的最小量化器。量化參數越小,輸出越接近輸入。使用某些值時,x264的輸出可以和輸入看起來完全一樣,雖然其實并不是精確相同的,通常就夠了沒有必要使用更多比特在宏塊上了。
如果開啟了自適應量化器(默認開啟),則不鼓勵提高qpmin的值,那樣可能會降低幀的平坦部分的質量。
5)max qp最大量化步長
說明:qpmin的反面,設置x264可以使用的最大量化器。默認值51是H.264標準中的最大值,質量非常低。默認值51其實相當于沒有設置qpmax。如果你想控制x264輸出的最低品質,也許你想要把這個值調低一點(調到30-40最低了),但一般而言不推薦調節這個值。
6)碼流(Data Rate)
是指視頻文件在單位時間內使用的數據流量,也叫碼率,是他是視頻編碼中畫面質量控制中最重要的部分。同樣分辨率下,視頻文件的碼流越大,壓縮比就越小,畫面質量就越高。
7) 幀率
幀率是一秒播放的視頻中有多少個幀。幀是組成視頻的基本單位。視頻文件本身是由很多連續的圖片組成,簡單的可以理解為幀率就是一秒內錄下的圖片數量(實際上這些圖片通過壓縮,一幀數據不一定保存的是一個完成圖片
I幀
I幀(I frame) 又稱為內部畫面 (intra picture),I 幀通常是每個 GOP(MPEG 所使用的一種視頻壓縮技術)的第一個幀,經過適度地壓縮,做為隨機訪問的參考點,可以當成圖象。在MPEG編碼的過程中,部分視頻幀序列壓縮成為I幀;部分壓縮成P幀;還有部分壓縮成B幀。I幀法是幀內壓縮法,也稱為“關鍵幀”壓縮法。I幀法是基于離散余弦變換DCT(Discrete Cosine Transform)的壓縮技術,這種算法與JPEG壓縮算法類似。采用I幀壓縮可達到1/6的壓縮比而無明顯的壓縮痕跡。
幀是組成視頻圖像的基本單位。關鍵幀也叫I幀,它是幀間壓縮編碼里的重要幀;它是一個全幀壓縮的編碼幀;解碼時僅用I幀的數據就可重構完整圖像;- D% j" B. F1 8 h3 z1 l) q& S% ]% l5 nI幀不需要參考其他畫面而生成。視頻文件是由多個連續的圖片組成。
在視頻會議系統中,終端發送給MCU(或者MCU發送給終端)的圖像,并不是每次都把完整的一幅幅圖片發送到遠端,而只是發送后一幅畫面在前一幅畫面基礎上發生變化的部分。如果在網絡狀況不好的情況下,終端的接收遠端或者發送給遠程的畫面就會有丟包而出現圖像花屏、圖像卡頓的現象,在這種情況下如果沒有I幀機制來讓遠端重新發一幅新的完整的圖像到本地(或者本地重新發一幅新的完整的圖像給遠端),終端的輸出圖像的花屏、卡頓現象會越來越嚴重,從而造成會議無法正常進行。
在視頻會議系統中I幀只會在會議限定的帶寬內發生,不會超越會議帶寬而生效。I幀機制不僅存在于MCU中,電視墻服務器、錄播服務器中也存在。就是為了解決在網絡狀況不好的情況下,出現的丟包而造成的如圖像花屏、卡頓,而影響會議會正常進行。
30幀發一個I幀, 所以I幀大一點
?
幀間距
以下來自博客:http://blog.csdn.net/oncoding/article/details/3344378
1.什么是 IFG?(What)
IFG(Interframe Gap),幀間距,以太網相鄰兩幀之間的時間斷;以太網發送方式是一個幀一個幀發送的,幀與幀之間需要間隙,即幀間距IFG也可稱其為IPG (Interpacket Gap)。IFG指的是一段時間,不是距離,單位通常用微秒(μs)或納秒(ns)。如下圖所示:
圖 1 幀間距
2.為什么需要IFG?(Why)
網絡設備和組件在接收一個幀之后,需要一段短暫的時間來恢復并為接收下一幀做準備。
3.IFG的大小為多少?(Importance)
IFG的最小值是 96 bit time,即在媒介中發送96位原始數據所需要的時間,在不同媒介中IFG的最小值是不一樣的:
不管 10M/100M/1000M的以太網,兩幀之間最少要有96bit;IFGmin=96bit/speed?? (s)
則:10Mmin: ???????? 9600 ns
????? 100Mmin: ??????? 960 ns
1000Mmin:??????? 96 ns
4.如何使用IFG?(How)
舉個具體例子說明,IFG在以太網的流控機制中解決速度匹配問題;
這里涉及到以太網的流控機制,如下圖:
圖 2以太網傳輸示例
?
1)???? 設備1以其自身的工作時鐘(OSC1) 向設備2發送到待發數據;
2)???? 數據包進入設備2:
a)???? 經過時鐘數據恢復器(CDR)的處理,從數據中提取時鐘,并基于提取的時鐘(CLK2),將數據包存入接收緩存,此時,CLK2和OSC1是同步的;
b)???? 數據從接收緩存,經過上層協議的處理,存入發送緩存;
3)???? 發送緩存以設備2的工作時鐘(OSC2)發送數據,由于以太網是異步工作的,故OSC1和OSC2作為不同設備的本地時鐘,并不能做到完全同頻(以太網設備的工作時鐘允許有正負50ppm的頻差),上圖假設OSC1大于OSC2,那么設備2的接收的速度將大于發送的速度,如果接收緩沖滿了,將造成丟包;
如何解決上述丟包問題?
在設備2的發送側通過減小IFG(幀間距)來加快其發送有效數據包的速度,從而使得發送速度能跟上接收速度。
5.IFG在我們實際工作的應用?
這里主要提到Smartbit 6000C 在產測中的使用。
使用原理:
IFG增大,設備的有效速度減小,可以解決因速度過快丟包的問題;
IFG減小(但必須大于 96 bit time),設備的有效速度增大,可以解決因速度過慢導致測試超時的問題。
參考資料:
[1] 以太網流控機制及其基于VSC7323的實現.?http://tech.c114.net/169/a266942.html
[2] Interframe gap Wikipedia.?http://en.wikipedia.org/wiki/Interframe_gap
[3] thernet .http://www.cisco.com/en/US/docs/internetworking/technology/handbook/Ethernet.pdf
總結
以上是生活随笔為你收集整理的H264编码器参数理解 (部分)“I帧”和“帧间距”等的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为id修改sip服务器地址,如何安装s
- 下一篇: 自己动手制作安卓动态壁纸教程