什么是关键帧

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是关键帧相关的知识,希望对你有一定的参考价值。

参考技术A 什么是关键帧
关键帧是时间轴中含有黑色实心圆点的帧。关键帧是用来定义动画变化的帧,是动画制作过程中最重要的帧型别。
视讯编码关键帧间隔
一帧就是视讯中的一个画面。

视讯编码是按“组”进行的,每一组也叫一个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帧,这样在相同位元速率下,可以提供更好的画质。

以上是关于什么是关键帧的主要内容,如果未能解决你的问题,请参考以下文章

什么是关键帧动画

到底啥是动画关键帧啊

TSINGSEE青犀视频直播关键帧和空白关键帧都起到什么作用?

动画的五个关键帧都有哪些?

简答题在3ds Max中为动画设置关键帧有几种总方法

CSS关键帧动画优雅完成