FFMPEG开发过程中的相关术语

ffmpeg开发过程中的相关术语

  • ffmpeg开发过程中的相关术语
    • 容器Container
    • 流Stream
    • 帧Frame
    • I帧intra picture
    • I帧特点
    • P帧predictive-frame
    • p帧的特点
    • B帧bi-directional interpolated prediction frame
    • B帧的特点
    • 包packets
    • 编解码器Codec
    • 复用解复用muxdemux

容器(Container)

容器就是一种封装格式,比如flv,mkv等。就是将编码后的视频数据、音频数据、字幕数据等封装成一个文件。

流(Stream)

是一种视频数据信息的传输方式,5种流:音频,视频,字幕,附件,数据。 流只是一种想象出来的名词,代表一连串通过时间来串连的数据元素

帧(Frame)

流中的数据元素被称作帧,帧代表一幅静止的图像,分为I帧,P帧,B帧。

I帧(intra picture)

帧内编码帧 ,I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)

I帧特点

  1. 它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输;
  2. 解码时仅用I帧的数据就可重构完整图像;
  3. I帧描述了图像背景和运动主体的详情;
  4. I帧不需要参考其他画面而生成;
  5. I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量);
  6. I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧;
  7. I帧不需要考虑运动矢量;
  8. I帧所占数据的信息量比较大。

P帧(predictive-frame)

前向预测编码帧。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帧(bi-directional interpolated prediction frame)

双向预测内插编码帧。B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别。换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。

B帧的特点

  1. B帧是由前面的I或P帧和后面的P帧来进行预测的;
  2. B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量;
  3. B帧是双向预测编码帧;
  4. B帧压缩比最高,因为它只反映丙参考帧间运动主体的变化情况,预测比较准确;
  5. B帧不是参考帧,不会造成解码错误的扩散;

包(packets)

从流中被读出来的数据叫做包,包是一段数据,它包含了可以被解码为方便我们最后在应用程序中操作的原始帧的数据。 包与帧的关系:用邮寄东西来类比,数据相当于货品,包是货品本身的包装,而帧是邮局给你的最外边的那层包装.

编解码器(Codec)

使用codec的原因:由于视频文件很大,所以需要进行压缩(code)它,再存储起来,要播放的时候进行解压缩(decode),这个就是牺牲事件来换很大的空间。

编码器作用: 原视频文件(很大) –> 编码器 –> 编码后的视频文件
解码器作用: 编码后视频文件(相对小) -> 解码器 –> 原视频文件(大)

复用/解复用(mux/demux)

demux:使用解复用器(demuxer)将不同的流按照某种文件的规则从那文件中解析出来
mux:使用复用器(muxer)将不同的流按照某种文件的规则放入容器(生成了某种文件)

你可能感兴趣的:(ffmpeg)