碼率就是數據傳輸時單位時間傳送的數據位數,一般我們用的單位是kbps即千位每秒。通俗一點的理解就是取樣率,單位時間內取樣率越大,精度就越高,處理出來的文件就越接近原始文件,但是文件體積與取樣率是成正比的,所以幾乎所有的編碼格式重視的都是如何用最低的碼率達到最少的失真,圍繞這個核心衍生出來的cbr(固定碼率)與vbr(可變碼率),都是在這方面做的文章,不過事情總不是絕對的,從音頻方面來說,碼率越高,被壓縮的比例越小,音質損失越小,與音源的音質越接近。“碼率”就是失真度,碼率越高越清晰,反之則畫面粗糙而多馬賽克。計算機中的信息都是二進制的0和1來表示,其中每一個0或1被稱作一個位,用小寫b表示,即bit(位);大寫B表示byte,即字節,一個字節=八個位,即1B=8b;前面的大寫K表示千的意思,即千個位(Kb)或千個字節(KB)。表示文件的大小單位,一般都使用字節(KB)來表示文件的大小。
Kbps:首先要了解的是,ps指的是/s,即每秒。Kbps指的是網絡速度,也就是每秒鍾傳送多少個千位的信息(K表示千位,Kb表示的是多少千個位),為了在直觀上顯得網絡的傳輸速度較快,一般公司都使用kb(千位)來表示,如果是KBps,則表示每秒傳送多少千字節。1KBps=8Kbps。ADSL上網時的網速是512Kbps,如果轉換成字節,就是512/8=64KBps(即64千字節每秒)。
幀數簡單地說,幀數就是在1秒鍾時間里傳輸的圖片的幀數,也可以理解為圖形處理器每秒鍾能夠刷新幾次,通常用fps(Frames Per Second)表示。每一幀都是靜止的圖象,快速連續地顯示幀便形成了運動的假象。高的幀率可以得到更流暢、更逼真的動畫。每秒鍾幀數 (fps) 愈多,所顯示的動作就會愈流暢。一般來說30fps是可以接受的,所以要避免動作不流暢的最低fps是30。除了30fps外,有些計算機視頻格式,例如AVI,每秒只能提供15幀。我們之所以能夠利用攝像頭來看到連續不斷的影像,是因為影像傳感器不斷攝取畫面並傳輸到屏幕上來,當傳輸速度達到一定的水平時,人眼就無法辨別畫面之間的時間間隙,所以大家可以看到連續動態的畫面。
每秒的幀數(fps)或者說幀率表示圖形處理器場景時每秒鍾能夠更新幾次。高的幀率可以得到更流暢、更逼真的動畫。一般來說30fps就是可以接受的,但是將性能提升至60fps則可以明顯提升交互感和逼真感,但是一般來說超過75fps一般就不容易察覺到有明顯的流暢度提升了。如果幀率超過屏幕刷新率只會浪費圖形處理的能力,因為顯示器不能以這么快的速度更新,這樣超過刷新率的幀率就浪費掉了。
一般用“FPS(frame per second,每秒鍾畫面更新的數量)”來表示該項指標。在欣賞電視、電影畫面時,只要畫面的刷新率達到24幀/秒,就能滿足人們的需要。同樣的,在玩普通的游戲時,如果刷新率達到24幀/秒即可,但在一些高速游戲中(例如射擊游戲),如果畫面的刷新率還是只有24幀/秒,那么就會感覺到畫面比較遲鈍,不夠流暢。
雖然理論上畫面的刷新率越快越好,但過高的刷新率並沒有實際意義——當畫面的FPS達到60幀/秒時,已經能滿足絕大部分應用需求。一般情況下,如果能夠保證游戲畫面的平均FPS能夠達到30幀/秒,那么畫面已經基本流暢;能夠達到50幀/秒,就基本可以體會到行雲流水的感覺了。一般人很難分辨出60幀/秒與100幀/秒有什么不同。
(2)是什么影響了FPS
既然刷新率越快越好,為什么還要強調沒必要追求太高的刷新率呢?其中原因是在顯示分辨率不變的情況下,FPS越高,則對顯卡的處理能力要求越高。
電腦中所顯示的畫面,都是由顯卡來進行輸出的,因此屏幕上每個像素的填充都得由顯卡來進行計算、輸出。當畫面的分辨率是1024×768時,畫面的刷新率要達到24幀/秒,那么顯卡在一秒鍾內需要處理的像素量就達到了“1024×768×24=18874368”。如果要求畫面的刷新率達到50幀/秒,則數據量一下子提升到了“1024×768×50=39321600”。
FPS與分辨率、顯卡處理能力的關系如下:處理能力=分辨率×刷新率。這也就是為什么在玩游戲時,分辨率設置得越大,畫面就越不流暢的原因了
MPEG-1壓縮的基本思想:幀內壓縮和幀間壓縮。
其次,時間相關性的統計分析:統計的結果表明,在間隔1~2幀的圖像中,各像素只有10%以下的點,其亮度差值變化超過2%,而色度差值的變化只有1%以下。
采用的壓縮方法: 分組:把幾幀圖像分為一組(GOP),為防止運動變化,幀數不宜取多。
1.定義幀:將每組內各幀圖像定義為三種類型,即I幀、B幀和P幀;
2.預測幀:以I幀做為基礎幀,以I幀預測P幀,再由I幀和P幀預測B幀;
3.數據傳輸:最后將I幀數據與預測的差值信息進行存儲和傳輸。
I幀:幀內編碼幀
I幀特點:
1.它是一個全幀壓縮編碼幀。它將全幀圖像信息進行JPEG壓縮編碼及傳輸;
2.解碼時僅用I幀的數據就可重構完整圖像;
3.I幀描述了圖像背景和運動主體的詳情;
4.I幀不需要參考其他畫面而生成;
5.I幀是P幀和B幀的參考幀(其質量直接影響到同組中以后各幀的質量);
6.I幀是幀組GOP的基礎幀(第一幀),在一組中只有一個I幀;
7.I幀不需要考慮運動矢量;
8.I幀所占數據的信息量比較大。
P幀:前向預測編碼幀。
P幀的預測與重構:P幀是以I幀為參考幀,在I幀中找出P幀“某點”的預測值和運動矢量,取預測差值和運動矢量一起傳送。在接收端根據運動矢量從I幀中找出P幀“某點”的預測值並與差值相加以得到P幀“某點”樣值,從而可得到完整的P幀。
P幀特點:
1.P幀是I幀后面相隔1~2幀的編碼幀;
2.P幀采用運動補償的方法傳送它與前面的I或P幀的差值及運動矢量(預測誤差);
3.解碼時必須將I幀中的預測值與預測誤差求和后才能重構完整的P幀圖像;
4.P幀屬於前向預測的幀間編碼。它只參考前面最靠近它的I幀或P幀;
5.P幀可以是其后面P幀的參考幀,也可以是其前后的B幀的參考幀;
6.由於P幀是參考幀,它可能造成解碼錯誤的擴散;
7.由於是差值傳送,P幀的壓縮比較高。
B幀:雙向預測內插編碼幀。
B幀的預測與重構
B幀以前面的I或P幀和后面的P幀為參考幀,“找出”B幀“某點”的預測值和兩個運動矢量,並取預測差值和運動矢量傳送。接收端根據運動矢量在兩個參考幀中“找出(算出)”預測值並與差值求和,得到B幀“某點”樣值,從而可得到完整的B幀。
B幀特點
1.B幀是由前面的I或P幀和后面的P幀來進行預測的;
2.B幀傳送的是它與前面的I或P幀和后面的P幀之間的預測誤差及運動矢量;
3.B幀是雙向預測編碼幀;
4.B幀壓縮比最高,因為它只反映丙參考幀間運動主體的變化情況,預測比較准確;
5.B幀不是參考幀,不會造成解碼錯誤的擴散。
注:I、B、P各幀是根據壓縮算法的需要,是人為定義的,它們都是實實在在的物理幀,至於圖像中的哪一幀是I幀,是隨機的,一但確定了I幀,以后的各幀就嚴格按規定順序排列。
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