什麼是關鍵幀 ?

General 更新 2023年10月15日

什麼是關鍵幀

關鍵幀是時間軸中含有黑色實心圓點的幀。關鍵幀是用來定義動畫變化的幀,是動畫製作過程中最重要的幀型別。

視訊編碼關鍵幀間隔

一幀就是視訊中的一個畫面。

視訊編碼是按“組”進行的,每一組也叫一個GOP

GOP與GOP之間是沒有聯絡的,編碼關係只在GOP中間產生。

每一個GOP組都從一個關鍵幀開始。

關鍵幀是一輻完整的畫面

GOP中間的那些幀都是不完整的,需要由關鍵幀、前面的幀或者也包括後面的幀一起,運算後得到。

對於普通視訊檔案,加大GOP長度有利於減小體積;從原理上可知,GOP長度也不能過大,太大則會導致GOP後部幀的畫面失真。一般建議GOP長度在250幀以下為宜。

由於PAL制式每秒有25幀(N製為30幀),如果是用於實時視訊,如電視、網上視訊等,GOP長度應在15至25之間。這樣可以在一秒內完成視訊快進或回退。

請問視訊中的'關鍵幀'是什麼意思??

關鍵幀也叫幀內幀,就是這一幀以類似jpeg的編碼方式編碼.而其他幀只編碼與關鍵幀不同的部分,這樣就會小一點了 檢視原帖>>

希望採納

關鍵幀是什麼意思?要如何運用?

關鍵幀就是獨立楨,不以其他楨影象做參考,在mepg標準中影象楨的參考關係如下

影象型別及其相互關係(參考關係如圖的箭頭所示)

MPEG將影象分成四種類型:I、P、B、D

I影象是幀內編碼影象,它不參考其他任何影象而獨立編碼

P影象是前向預測編碼影象,相對於前一參考影象進行有運動補償的預測編碼

B影象是雙向預測編碼影象,需要前向和後向的參考影象作運動補償

D影象的目的是提供一種簡單的,但質量相當有限的快進播放方式

如何強制ffmpeg編碼時輸出一個關鍵幀

如何強制ffmpeg編碼時輸出一個關鍵幀

AVCodecContext *c //編碼器環境控制代碼AVFrame* f //需要編碼的一幀視訊 在編碼前設定

f->pict_type=FF_I_TYPE; f->key_frame=1;然後編碼

*outsize = avcodec_encode_video(c, temp, outbuf_size, f);則編碼之後通過如下引數判斷是否為關鍵幀:

key_frame=c->coded_frame->key_frame; pict_type=c->coded_frame->pict_type;

視訊編碼關鍵幀間隔

壓縮比,間隔越大,可以壓得越小,用恆定質量模式下不會影響質量但減小位元速率(不費時)。

大小I>P>B,I幀越稀疏,越能壓。

但是播放搜尋時必須從I幀開始一直解碼到所需時間點,所以間隔大了,跳轉會很久。

我的設定一般是Min=6,Max=360,比較寬

如何強制ffmpeg編碼時輸出一個關鍵幀

如何強制ffmpeg編碼時輸出一個關鍵幀

AVCodecContext *c //編碼器環境控制代碼AVFrame* f //需要編碼的一幀視訊 在編碼前設定

f->pict_type=FF_I_TYPE;

f->key_frame=1;

然後編碼

*outsize = avcodec_encode_video(c, temp, outbuf_size, f);

則編碼之後通過如下引數判斷是否為關鍵幀:

key_frame=c->coded_frame->key_frame;

pict_type=c->coded_frame->pict_type;

幀速率與關鍵幀有什麼區別嘛我有一個視訊,格式要求幀

這肯定有,,,

格式是視訊的編碼型別。。幀率是視訊每秒播放多少幅影象。。

30fps的我好想沒聽說過,嚴格的說應該是29.97fps,這是美國NTSC制式電視的幀率

視訊編碼中的ibp幀的關係

視訊壓縮中,每幀代表一幅靜止的影象。而在實際壓縮時,會採取各種演算法減少資料的容量,其中IPB就是最常見的。

簡單地說,I幀是關鍵幀,屬於幀內壓縮。就是和AVI的壓縮是一樣的。 P是向前搜尋的意思。B是雙向搜尋。他們都是基於I幀來壓縮資料。

I幀表示關鍵幀,你可以理解為這一幀畫面的完整保留;解碼時只需要本幀資料就可以完成(因為包含完整畫面)

P幀表示的是這一幀跟之前的一個關鍵幀(或P幀)的差別,解碼時需要用之前快取的畫面疊加上本幀定義的差別,生成最終畫面。(也就是差別幀,P幀沒有完整畫面資料,只有與前一幀的畫面差別的資料)

B幀是雙向差別幀,也就是B幀記錄的是本幀與前後幀的差別(具體比較複雜,有4種情況),換言之,要解碼B幀,不僅要取得之前的快取畫面,還要解碼之後的畫面,通過前後畫面的與本幀資料的疊加取得最終的畫面。B幀壓縮率高,但是解碼時CPU會比較累~。

從上面的解釋看,我們知道I和P的解碼演算法比較簡單,資源佔用也比較少,I只要自己完成就行了,P呢,也只需要解碼器把前一個畫面快取一下,遇到P時就使用之前快取的畫面就好了,如果視訊流只有I和P,解碼器可以不管後面的資料,邊讀邊解碼,線性前進,大家很舒服。

但網路上的電影很多都採用了B幀,因為B幀記錄的是前後幀的差別,比P幀能節約更多的空間,但這樣一來,檔案小了,解碼器就麻煩了,因為在解碼時,不僅要用之前快取的畫面,還要知道下一個I或者P的畫面(也就是說要預讀預解碼),而且,B幀不能簡單地丟掉,因為B幀其實也包含了畫面資訊,如果簡單丟掉,並用之前的畫面簡單重複,就會造成畫面卡(其實就是丟幀了),並且由於網路上的電影為了節約空間,往往使用相當多的B幀,B幀用的多,對不支援B幀的播放器就造成更大的困擾,畫面也就越卡。

一般平均來說,I的壓縮率是7(跟JPG差不多),P是20,B可以達到50,可見使用B幀能節省大量空間,節省出來的空間可以用來儲存多一些I幀,這樣在相同位元速率下,可以提供更好的畫質。

相關問題答案
什麼是關鍵績效指標?
淘寶什麼是關鍵詞?
什麼是關鍵詞堆砌?
什麼是關鍵工序?
什麼叫關鍵詞?
只要和什麼是關聯詞?
請簡述什麼是外鍵約束?
既然和什麼是關聯詞?
什麼是關聯銷售?
什麼是空白關鍵幀?