从0开始做播放器---编解码基础知识

2020-05-01  本文已影响0人  __若只如初见

注:参考自bilibili系列视频,从0开始做播放器-第6章-图像编码的基础概念(理论课)https://www.bilibili.com/video/BV1PK41157jz

常见编码格式

视频需要编码,是因为采集来的原始视频太大,一部720p的电影,存原始图像就需要大约1T。所以需要编码,把原始图像压缩,便于我们传输和存储。

H264

NALU,帧,slice,宏块之间的关系

H264原始码流(裸流)是由一个接一个NALU组成,H264分为两个层面,VCL(视频编码层)和 NAL(网络提取层)。

H264结构中,一个视频图像编码后的数据叫做一帧(frame),一帧由一个片(slice)或多个片组成,一个片由一个或多个宏块(MB)组成,一个宏块由16x16的yuv数据组成。宏块作为H264编码的基本单位
NALU是一种封装的模组 ,一个Slice编码之后被打包进一个NALU,不过NALU除了容纳Slice编码的码流外,还可以容纳其他数据,比如序列参数集SPS。所以nalu不一定是slice
拓展:
那么为什么要设置片(slice)呢?
设置片(slice)的目的是为了限制误码的扩散和传输,应使编码片相互间是独立的。某片的预测不能以其他片中的宏块为参考图像,这样某一片中的预测误差才不会传播到其他片中。

PTS和DTS

PTS:显示时间戳,表示解码后的帧显示的时间
DTS:解码时间戳,表示送入解码器的顺序

NALU (Network Abstract Layer Unit)

H264的两种存储形态

Annex B

AVCC

GOP

GOP是画面组,一个GOP是一组连续的画面。
GOP结构一般是:
I BBP BBP BBP BB I
增大图片组能有效的减少编码后的视频体积,但是也会降低视频质量。

常见误区

  1. 分辨率越大码率越大吗?
    不一定。码率是单位时间内,传输的编码后的数据位数。码率约等于传输速率。
    码率由什么决定:
  1. P帧一定比I帧小,B帧一定比P帧小
上一篇 下一篇

猜你喜欢

热点阅读