音视频开发-视频基础

1 视频产生

视频本质就是一组连续播放的图像,所以研究视频离不开对于图像的研究。而图像又是由众多的色彩构成,这里就会涉及到图像的最小单元一个像素点的构成,像素点一般是由RGB三种颜色组成。

1.1 RGB图像

RGBA8888:一般一个像素点由RGB三原色组成,A表示图像的透明度,而每一个色彩又由一个八位组成取值范围0-255;一个像素总共是32bit。
RGB565:在安卓平台上采用16bit表示一个像素,R用5bit,G用6bit,B用5bit来表示。

计算一幅图1920*1080的RBGA8888图像大小:
1920 * 1080 * (32 /8)=7.91M
可以看出一张原始数据的图片大小是感觉还好。如果按照每秒30张图片的速度播放一个小时的数据量高达:834G的数据量。

1.2 YUV图像

对于视频帧而言比较常用的存储方式是采用YUV,其中Y表示亮度(专业术语灰阶值),UV则是速度,用于描述图像的色彩和饱和度。它的一个好处是可以将图像的亮度和色度分离,可以兼容黑白电视,可以单独显示色度图像。
在这里插入图片描述

YUV420:YUV420其中数值表示的是亮度和色度的比例为2:1需要注意的是1是UV共用的,YUV实际一比例是:4:1:1。

重新计算一张1080p图像:
1920 * 1080 * 1.5= 3.037M
可以看出YUV存储视频帧的优势还是比较明显,特别对于视频传输降低带宽占用非常明显。

2 视频处理流程

1.1 视频输入

视频输入一般是指我们从摄像头获取到采集的图像数据。一般分为两种情况:
输入到显示设备:采集设备直接渲染到显示设备
网络输入:一般分为几个步骤:
在这里插入图片描述

1.2 视频输出

视频输出模块主动从内存相应位置读取视频和图形数据。一般也分为两种情况:
输出到显示设备:通过相应的显示设备输出视频和图形。
输出到网络:一般分为几个步骤
视频编码
视频加密
网络格式封装
发送到网络。

1.3 视频处理

视频处理:一般是对图像进行处理包括是满足带宽要求处理:帧率控制(FRC)、图像压缩等等;提高图像质量处理:去噪(DNR)、畸变校正(LDC)、鱼眼矫正等等;图像变化:裁剪(CROP)、锐化(Sharpen)、缩放(Scale)、镜像(Mirror)、马赛克(Mosaic)、旋转(Spin)等等。
在这里插入图片描述

1.4 视频编码

视频编码主要是对于视频进行数据量的压缩,目标是是去除图像的冗余数据保证图像质量。目前比较常见的有两种:
去除时间上的冗余
运动补偿:利用前后图像的局部信息预测当前的图像;
去除空间上的冗余
帧内编码技术:利用图像内部信息进行编码去重和预测减少单帧的数据量的技术。

1.4.1编码流程

典型的编码流程包括了输入图像的接收、图像内容的遮挡和覆盖、图像的编码、以及码流的输出等过程。
在这里插入图片描述

1.4.2 编码通道

编码通道作为基本容器,保存编码通道的多种用户设置和管理编码通道的多种内部资源。编码通道完成图像转化为码流的功能,具体由码率控制器和编码器协同完成。这里的编码器指的是狭义上的编码器,只完成编码功能。码率控制器提供了对编码参数的控制和调整,从而对输出码率进行控制。
在这里插入图片描述

1.5码率控制

码率控制器实现对编码码率进行控制。从信息学的角度分析,图像的压缩比越低,压缩图像的质量越高;图像压缩比例越高,压缩图像的质量越低。对于场景变化的真实场景,图像质量稳定,编码码率会波动;编码码率稳定,图像质量会波动。

1.5.1 固定比特率CBR

在码率统计时间内保证编码码率平稳。码率稳定主要由两个量来评估。
码率统计时间越长,每帧图像的码率波动对于码率调节的影响越弱,码率的调节会更缓慢,图像质量的波动会更轻微;码率统计时间越短,每帧图像的码率波动对于码率调节的影响越强,图像码率的调节会更灵敏,图像质量的波动会更剧烈。
行级码率控制调节幅度是一帧内行级调节的最大范围,其中行级以宏块行为单位。调节幅度越大,允许行级调整的 QP 范围越大,码率越平稳。对于图像复杂度分布不均匀的场景,行级码率控制调节幅度设置过大会带来图像质量不均匀。

1.5.2 可变比特率VBR

允许在码率统计时间内编码码率波动,从而保证编码图像质量平稳。

1.5.3 自适应可变比特率AVBR

允许在码率统计时间内编码码率波动,从而保证编码图像质量平稳。码率控制内部会检测当前场景的运动静止状态,在运动时用较高码率编码,在静止时主动降低目标码率。

1.5.4 质量可变比特率QVBR

基于主观图像质量的可变比特率,该码控调节方式是利用实时统计的 PSNR(图像质量客观评价指标)的大小来动态调整码率,从而保证编码图像质量平稳。在 PSNR 较小时主动升高目标码率,PSNR 较大时主动降低目标码率。

1.5.5 限制可变比特率CVBR

以 VBR 为基础,旨在提供平稳的图像质量的码控算法,同时对 VBR 的码率进行限制,以满足传输带宽以及存储空间的要求。
CVBR 设置了瞬时,短期与长期码率的限制。其中,瞬时码率的限制保证了网络带宽对传输的要求;长期码率限制保证了在长时间视频录制时,存储设备有足够的空间储存数据;同时,短期码率会根据长期码率的设置和实际使用情况进行调节,以在场景复杂的情况下提供更加平稳的图像质量,并在场景简单时节省码率。

1.5.6 量化参数QP

QP越大压缩率越高同时质量越低,QP越小压缩率越低同时质量越高。

1.6 IPB帧

I帧是关键帧,属于帧内压缩。保存了图像所有信息,可以单独显示。属于帧内编码。
P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。
B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。
GOP表示一个GOP图像组是一段图像编码后的数据流,以I帧开始,到下一个I帧结束。

1.7 Stride跨距

Stride :指在内存中每行像素所占的空间。为了实现内存对齐每行像素在内存中所占的空间并不一定是图像的宽度。
如下图所示比如分辨率638x480的RGB24图像,我们在内存处理的时候如果要以16字节对齐,则638*3/16=119.625不能整除,因此不能16字节对齐,我们需要在每行尾部填充6个字节。
在这里插入图片描述

1.8 绿屏的原理

首先需要知道YUV和RGB转换关系:
在这里插入图片描述
绿屏主要是因为解码失败YUV分量都为零。
R = 1.402 * (-128) = -126.598
G = -0.34414*(-128) - 0.71414*(-128) = 44.04992 + 91.40992 = 135.45984
B = 1.772 * (-128) = -126.228
RGB 值范围为[0,255], 所以最终的值为:
R = 0
G = 135
B = 0
此时只有G分量有值所以为绿色。
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值