1. 程式人生 > >H264中I幀與IDR幀區別

H264中I幀與IDR幀區別

DR(Instantaneous Decoding Refresh)--即時解碼重新整理。

      I和IDR幀都是使用幀內預測的。它們都是同一個東西而已,在編碼和解碼中為了方便,要首個I幀和其他I幀區別開,所以才把第一個首個I幀叫IDR,這樣就方便控制編碼和解碼流程。IDR幀的作用是立刻重新整理,使錯誤不致傳播,從IDR幀開始,重新算一個新的序列開始編碼。而I幀不具有隨機訪問的能力,這個功能是由IDR承擔。IDR會導致DPB(DecodedPictureBuffer參考幀列表——這是關鍵所在)清空,而I不會IDR影象一定是I影象,但I影象不一定是IDR影象。一個序列中可以有很多的I影象,I影象之後的影象可以引用I影象之間的影象做運動參考。一個序列中可以有很多的I影象,I影象之後的圖象可以引用I影象之間的影象做運動參考。
      對於IDR幀來說,在IDR幀之後的所有幀都不能引用任何IDR幀之前的幀的內容

,與此相反,對於普通的I-幀來說,位於其之後的B-和P-幀可以引用位於普通I-幀之前的I-幀。從隨機存取的視訊流中,播放器永遠可以從一個IDR幀播放,因為在它之後沒有任何幀引用之前的幀。但是,不能在一個沒有IDR幀的視訊中從任意點開始播放,因為後面的幀總是會引用前面的幀。

說明:本文來自於網路整理

相關推薦

H264IIDR區別

DR(Instantaneous Decoding Refresh)--即時解碼重新整理。       I和IDR幀都是使用幀內預測的。它們都是同一個東西而已,在編碼和解碼中為了方便,要首個I幀和其他I幀區別開,所以才把第一個首個I幀叫IDR,這樣就方便控制編碼和解碼流程。IDR幀的作用是立刻重新整理,使錯

H264IIDR區別

IDR(Instantaneous Decoding Refresh)--即時解碼重新整理。       I和IDR幀都是使用幀內預測的。它們都是同一個東西而已,在編碼和解碼中為了方便,要首個I幀和其他I幀區別開,所以才把第一個首個I幀叫IDR,

關於H264I,P的判斷

from:http://www.ebaina.com/bbs/thread-4190-1-1.html 在網上找了一下,但是不是很確定所以來問問各位大神下面兩種方法哪種是對的呢:-----------------------自己的簡單總結:判斷00 00 00 01後面的1

H.264IIDR

IDR幀的作用是立刻重新整理, 使錯誤不致傳播。從IDR幀開始, 重新算一個新的序列開始編碼。而I幀不具有隨機訪問的能力,這個功能是由IDR承擔。IDR幀會導致DPB (DecodedPictureBuffer 參考幀列表——這是關鍵所在)清空,而I不會。 在IDR幀之後的所有幀都不能引用任何I

h264 IIDR筆記

IDR (Instantaneous Decoding Refresh)全稱:即時解碼重新整理,    I和IDR幀都是使用幀內預測的。它們都是同一個東西而已,在編碼和解碼中為了方便,要首個I幀和其

MACPPP區別

IP地址是TCP/IP網路層的定址機制,MAC是802.3/Ethernet鏈路層的定址機制,他們是不同層次的東西,不是並排關係,想一想資料發出去走到網線上最終還是變成了電脈衝,TCP/IP是沒有物理層定義的,IP包最終變成電訊號之前需要乙太網來處理,當IP的資料給予了乙太

jqueryinnerheight outerHeight()height()的區別

() true class lan 方法 target alt title include 1. .height() 獲取匹配元素集合中的第一個元素的當前計算高度值 或 設置每一個匹配元素的高度值(帶一個參數)。 註意:1).css(‘height‘)和.height

JAVA編程思想總結的C++的區別

參數 類對象 組件 exc other implement 條件表達式 and classname (1) 最大的障礙在於速度:解釋過的Java要比C的執行速度慢上約20倍。無論什麽都不能阻止Java語言進行編譯。寫作本書的時候,剛剛出現了一些準實時編譯器,它們能顯著加快速

C#語言數組集合的區別(以List集合為例)

類型 添加元素 list 添加 一個 保存 操作方法 適用於 length 數組用於保存固定數量的數據,定長,占用內存少,遍歷速度快; 集合保存的數據數量,可以在程序的執行過程中,不斷發生變化,不定長,占用內存多,遍歷速度慢; 在功能上,數組能實現的所有功能,集合都能實現;

Python深拷貝淺拷貝區別

分配 img 地址 append 淺拷貝 pen image pre 內容 淺拷貝, list值是可變的,str值不可變,只能重新賦值 a=b=c=‘wjx‘print(a,b,c)c= ‘jmy‘#重新賦值了,所以內存分配了新的地址print(a,b,c)print(id

Java重載重寫的區別

ref 類對象 就是 不同 3.4 做出 同方 相同 默認 簡單的個人記憶,重寫是子類中的方法與父類的方法參數、返回值一模一樣,重載是對於同一個類中的方法,方法名相同,參數類型、個數不同。當父類的引用指向子類對象的時候,子類中如果有對於父類方法的重寫,則調用的是子類重寫過的

C# 的單精度雙精度區別

數字 字節數 1.7 oat 處理 round col ble 浮點 單精度浮點數(float)與雙精度浮點數(double)的區別: (1)在內存中占有的字節數不同 * 單精度浮點數在機內占4個字節 *雙精度浮點數在機內占8個字節 (2)有效數字位數不同 *單精度浮點數有

javascript常見undefineddefined的區別

出現 flag ava def lag ror 常見 rip col 在JavaScript中相信“undefined”與“defined”對大家來說都肯定不陌生,但是又不是很清楚它們的區別,先看兩個demo我們再說, 例1.   console.log(parms); /

Python關鍵字globalnonlocal的區別

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/xCyansun/article/details/79672634終於下定決心學習Python了。既然從頭開始,就需要認認真真。 首先需要說的是,我是初學Python,這篇文章只是用於展示global和nonl

C的scanf()scanf_s()的區別

1、scanf()不會檢查輸入邊界,可能造成資料溢位;        scanf_s()會進行邊界檢查。 2、比如輸入name[5],scanf("%s",name),如果輸入wangsicong,則會使得icong溢位進入其他地方,造成程式錯誤;

C#窗體show()showdialog()的區別

在C#中視窗的顯示有兩種方式:模態顯示(showdialog)和非模態顯示(show)。二者最常見的區別是:模態顯示後,彈出視窗阻止呼叫視窗的所有訊息響應。只有在彈出視窗結束後呼叫窗口才能繼續。在模態視窗“關閉”後,可以讀取模態視窗中資訊,包括視窗的返回狀態,視窗子控制元件的值。 舉例子: private

jQuery wrap() wrapAll() wrapInner()的區別

學習其它人寫的程式碼時遇到了jQuery中的wrap,和 wrapInner方法,查閱文件後做一個記錄作為學習筆記wrap()方法原始碼:$("div").wrap("<tr></tr>").wrap("<td></td>");這句話意思是先把div用tr包起來

eclipse check out export 的區別

1.check out跟check in對應,export跟import對應。 2.check out匯出獲得檔案後,匯出的檔案仍處於SVN版本控制中,與版本庫保持關聯,比如你可以進行Svn Update或者Svn Commit操作。同時匯出資料夾下有一個.svn的隱藏資料夾,儲存著一些版本的元資料

java類方法物件方法區別

public class Test { /** * 下面這個方法就是靜態方法,應該就是樓主所說的類方法~~ * 靜態方法必須定義成static的,在類Test被例項化以前就已經存在於記憶體中 * 靜態方法使所有該類的例項也就是物件共有的方法 */ public static void f1() {

MY SQL''null的區別

平時我們在使用MySQL的時候,對於MySQL中的NULL值和空值區別不能很好的理解。注意到NULL值是未知的,且佔用空間,不走索引,DBA建議建表的時候最好設定欄位是NOT NULL 來避免這種低效率的事情的發生。 問題 1: 首先,我們需要搞清楚 “空值” 和”NULL”的概念: