视频
颜色空间
色彩转换
数字电视的格式(BT.601 BT.709 BT.2020)和接口(BT.656 BT.1120 BT.2077)
伽马空间与线性空间详解
对 Gamma 校正的个人理解
FFMPEG一些color属性处理
颜色编码
YUV
Y:明亮度(Luminance,Luma),也就是灰度值
U和V:色度(Chrominance,Chroma),描述影像色彩及饱和度
采集方式
- YUV4:4:4 (每一个Y对应一组UV分量)
- YUV4:2:2 (每两个Y共用一组UV分量)
- YUV4:2:0 (每四个Y共用一组UV分量)
用黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量,则三种采样方式可由下图来表示:
存储方式
对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。
以YUV4:2:0为例,它又被分为YUV420P与YUV420SP
YUV420P, Plane模式(Y,U,V三个plane)将Y,U,V分量分别打包,依次存储
YUV420SP(NV12/NV21): two-plane模式,即Y和UV分为两个Plane,但是UV(CbCr)为交错存储
设置为kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange时,表示输出的视频格式为NV12(BiPlanar指双平面模式,即将Y和UV分开存储,VideoRange指颜色空间);
设置为kCVPixelFormatType_420YpCbCr8Planar时,表示使用I420
I420格式:y,u,v 3个部分分别存储:Y0,Y1…Yn,U0,U1…Un/2,V0,V1…Vn/2
NV12格式:y和uv 2个部分分别存储:Y0,Y1…Yn,U0,V0,U1,V1…Un/2,Vn/2
NV21格式:同NV12,只是U和V的顺序相反。
编码
帧类型
- I frame : 自身可以通过视频解压算法解压成一张单独完整的图片
- P frame : 需要参考其前面的一个I frame 或者B frame来生成一张完整图片
- B frame : 既要参考其前一个I frame 或者 P frame以及其后一个P frame来生成一张完整的图片
帧或图片通常会分为几个宏块(Macroblock),宏块是运动预测的基本单位,一个完整的图像通常被分为几个宏块,如 MPEG-2 和较早期的编解码器定义宏块都是 8×8 像素,以宏块为基准选择特定的预测类型,而非整个图像都使用相同的预测类型,具体如下:
- I 帧:只包含节点宏块。
- P 帧:可含有节点宏区块或预测宏区块。
- B 帧:可含有节点、预测和前后预测宏区块。
B帧也可以被参考
编码器
H.264
H264提供的是16*16的pixel macroblocks
H264码流中SPS PPS详解
H.264 码流格式: Annex-B, AVCC与extradata详解
视频可用性信息(VUI)
X264算法参数二(VUI参数配置)
两种HDR格式(HLG, HDR10)的理解
H.265/HEVC
H265提供的是64*64
(推荐阅读)H264, H265硬件编解码基础及码流分析
H.264 视频编解码技术分享–AnnexB 和 avcC
HEVC有两种类型的NAL units,一种是VCL(video coding layer)NAL units,另一种是 non-VCL NAL units。
每一个VCL NAL unit携带一片编码的图片数据而non-VCL NAL units携带控制信息(通常是与多个编码的图片相关的控制信息)。
一个编码的图片加上与其相关的non-VCL NAL units被称为一个HEVC access unit。
mp4中,对h264/h265来说,sps/pps/vps都包含在extra data中。
h264, extra data存在于trak->mdia->minf->stbl->stsd->avc1->avcc,语法遵循 AVCDecoderConfigurationRecord
而对ts流,extra data就是一个NALU
VP8
VP9
基础概念
分辨率
视频分辨率是指视频成像产品所形成的图像大小或尺寸,通常来说,1080P 就是指 1080 x 1920 的分辨率,4 k 指 3840 x 2160 的分辨率。
码率
bitrate:比特率(码率),秒为单位。等于视频总的大小/时长。指单位时间内传输或处理的比特的数量,单位为 bps(bit per second)也可表示为 b/s。比特率越高,单位时间传送的数据量(位数)越大。多媒体行业在指音频或视频在单位时间内的数据传输率时通常使用码率,单位是 kbps。
固定码率
可编码率
fps/frames
- frames:视频帧数
- fps:帧率(frame per second) 。一般来说 30fps 就是可以接受的,但是将性能提升至 60fps 则可以明显提升交互感和逼真感。超过 75fps 一般就不容易察觉到有明显的流畅度提升了,如果帧率超过屏幕刷新率只会浪费图形处理的能力,因为监视器不能以这么快的速度更新,这样超过刷新率的帧率就浪费掉了
时间维度
- total_time:时间长度,ms为单位。等于duration/timescale
- timescale:时间的粒度,1000表示1000个单位为1s
- duration:时间粒度的个数
- videosamplenum:视频sample的个数
SAR/PAR/DAR
- PAR - pixel aspect ratio,单个像素的宽高比,大多数情况像素宽高比为1:1,也就是一个正方形像素,如果不是1:1, 则该像素可以理解为长方形像素。常用的PAR比率有(1:1,1