Jiaolong's Blog Jiaolong's Blog
首页
分类
归档
Wiki
摘录
导航
关于

Jiaolong

Solo Developer
首页
分类
归档
Wiki
摘录
导航
关于
  • 在 Ubuntu 20.04 上安装 GCC
  • hello world
  • 使用cva6+spike搭建RISC-V环境
  • gcc编译过程查看汇编代码
  • 分析RISC-V汇编代码
  • RISC-V V扩展1.0版本环境搭建与测试
  • RISCV-V扩展执行速度测试
  • 移植FFmpeg到RISC-V记录
  • Linux创建Swap交换分区
  • RISC-V \\V\\ Vector Extension 1.0 翻译
  • RISCV-V拓展1.0解读
  • 浅谈向量化和SIMD
  • x264编译测试
  • 浅淡Makefile
  • 回炉重造C语言
  • 使用Gprof+Gprod2dot做性能分析
  • 移植x264到RISC-V
  • QEMU运行RVV
  • 优化x264
  • 音视频理论基础
    • 视频基础
      • 视频播放原理
      • 数字图像表示
      • RGB表示
      • YUV表示
      • 主要概念
      • 帧率
      • I B P帧类型
    • 音频基础
      • 主要概念
    • 封装格式基础
  • Swift拼音排序
  • Blog
Jiaolong
2022-11-03
Catelog

音视频理论基础

# 视频基础

# 视频播放原理

image-20221103102224273

# 数字图像表示

# RGB表示

红光(R)绿光(G)蓝光(B)每个像素用8bit表示。

对于一幅图像,一般使用整数表示方法来进行描述,比如计算一张的 RGB_888图像的大小,可采用如下方式: 1280 * 7201280×720 * 3 = 2.637 MB,4分钟就达到了15G的容量。 假如是一部90分钟的电影,每秒25帧,则一部电影为 2.637MB90分钟60秒*25FPS= 347.651GB

# YUV表示

“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

YUV格式有两大类:planar和packed。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存 储所有像素点的U,随后是所有像素点的V。 对于packed的YUV格式,每个像素点的Y,U,V是连续交存储的。

image-20221103095917798

YUV存在多种格式,比如YUV420p,YUV420sp等,不同的YUV格式 的数据在存储时的排列顺序是不一样的,在开发的过程中必须非常 注意,否则画面会显示不正常。比如花屏,绿屏等现象。

  • YUV 4:4:4采样,每一个Y对应一组UV分量。
  • YUV 4:2:2采样,每两个Y共用一组UV分量。
  • YUV 4:2:0采样,每四个Y共用一组UV分量。

相较于RGB,我们可以计算一帧为1280×720的视频帧,用YUV420P的格式 来表示,其数据量的大小如下: 4 2 -> 1 + 0.5 = 1.5 1280 * 720 * 1 + 1280 * 720 * 0.5 = 1.318MB 如果fps(1秒的视频帧数目)是25,按照一般电影的长度90分钟来计算, 那么这部电影用YUV420P的数据格式来表示的话,其数据量的大小就是: 1.318MB * 25fps * 90min * 60s = 173.76GB

# 主要概念

  • 视频码率:kb/s,是指视频文件在单位时间内使用的数据流量,也叫 码流率。码率越大,说明单位时间内取样率越大,数据流精度就越高。
  • 视频帧率:fps,通常说一个视频的25帧,指的就是这个视频帧率,即 1秒中会显示25帧。帧率越高,给人的视觉就越流畅。
  • 视频分辨率:分辨率就是我们常说的640x480分辨率、1920x1080分辨 率,分辨率影响视频图像的大小。

# 帧率

图像的频率:灰度值变化剧烈程度的指标,是灰度在平面空间上的梯度。

(1)什么是低频? 低频就是颜色缓慢地变化,也就是灰度缓慢地变化,就代表着那是连续渐变的一块区域,这部分就是低频. 对于一幅图像来说,除去高频的就是低频了,也就是边缘以内的内容为低频,而边缘内的内容就是图像的大部分信息,即图像的大致概貌和轮廓,是图像的近似信息。

(2)什么是高频?

反过来, 高频就是频率变化快.图像中什么时候灰度变化快?就是相邻区域之间灰度相差很大,这就是变化得快.图像中,一个影像与背景的边缘部位,通常会有明显的差别,也就是说变化那条边线那里,灰度变化很快,也即是变化频率高的部位.因此,图像边缘的灰度值变化快,就对应着频率高,即高频显示图像边缘。图像的细节处也是属于灰度值急剧变化的区域,正是因为灰度值的急剧变化,才会出现细节。 另外噪声(即噪点)也是这样,在一个像素所在的位置,之所以是噪点,就是因为它与正常的点颜色不一样了,也就是说该像素点灰度值明显不一样了,,也就是灰度有快速地变化了,所以是高频部分,因此有噪声在高频这么一说。

其实归根到底,是因为我们人眼识别物体就是这样的.假如你穿一个红衣服在红色背景布前拍照,你能很好地识别么?不能,因为衣服与背景融为一体了,没有变化,所以看不出来,除非有灯光从某解度照在人物身上,这样边缘处会出现高亮和阴影,这样我们就能看到一些轮廓线,这些线就是颜色(即灰度)很不一样的地方.

# I B P帧类型

1)I 帧

I 帧,即帧内编码图像帧,不参考其他图像帧,只利用本帧的信息进行编码.

I 帧的特点:

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

I 帧编码流程:

  • 进行帧内预测,决定所采用的帧内预测模式;
  • 当前像素值减去预测值,得到残差;
  • 对残差进行变换和量化;
  • 变长编码和算术编码;
  • 重构图像并滤波,得到的图像作为其它帧的参考帧。

2)P 帧

P 帧,即预测编码图像帧,利用之前的 I 帧或 P 帧,采用运动预测的方式进行帧间预测编码.

P 帧的预测与重构:P 帧是以 I 帧为参考帧,在 I 帧中找出 P 帧『某点』的预测值和运动矢量,取预测差值和运动矢量一起传送。在接收端根据运动矢量从 I 帧中找出 P 帧『某点』的预测值并与差值相加以得到 P 帧『某点』样值,从而可得到完整的 P 帧。

P 帧特点:

  • P 帧是 I 帧后面相隔 1-2 帧的编码帧;
  • P 帧采用运动补偿的方法传送它与前面的 I 或 P 帧的差值及运动矢量(预测误差);
  • P 帧属于前向预测的帧间编码,它只参考前面最靠近它的 I 帧或 P 帧;
  • P 帧可以是其后面 P 帧的参考帧,也可以是其前后的 B 帧的参考帧;
  • 由于 P 帧是参考帧,它可能造成解码错误的扩散;
  • 由于是差值传送,P 帧的压缩比较高。

P 帧编码的基本流程:

  • 进行运动估计,计算采用帧间编码模式的率失真函数值。P 帧只参考前面的帧;
  • 进行帧内预测,选取率失真函数值最小的帧内模式与帧间模式比较,确定采用哪种编码模式;
  • 计算实际值和预测值的差值;
  • 对残差进行变换和量化;
  • 若编码,如果是帧间编码模式,编码运动矢量。

3)B 帧

B 帧,即双向预测编码图像帧,提供最高的压缩比,它既需要之前的图像帧(I 帧或 P 帧),也需要后来的图像帧(P 帧),采用运动预测的方式进行帧间双向预测编码。

B 帧的预测与重构:B 帧以前面的 I 或 P 帧和后面的 P 帧为参考帧,找出 B 帧『某点』的预测值和两个运动矢量,并取预测差值和运动矢量传送。接收端根据运动矢量在两个参考帧中找出预测值并与差值求和,得到 B 帧『某点』样值,从而可得到完整的 B 帧。

B 帧特点:

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

B 帧编码的基本流程:

  • 进行运动估计,计算采用帧间编码模式的率失真函数值。B 帧可参考后面的帧;
  • 进行帧内预测,选取率失真函数值最小的帧内模式与帧间模式比较,确定采用哪种编码模式;
  • 计算实际值和预测值的差值;
  • 对残差进行变换和量化;
  • 若编码,如果是帧间编码模式,编码运动矢量。

# 音频基础

# 主要概念

  • 采样频率:每秒钟采样的点的个数。常用的采样频率有: 22000(22kHz):无线广播。 44100(44.1kHz):CD音质。 48000(48kHz):数字电视,DVD。 96000(96kHz):蓝光,高清DVD。 192000(192kHz):蓝光,高清DVD。

  • 采样精度(采样深度):每个“样本点”的大小 常用的大小为8bit, 16bit,24bit。

  • 通道数:单声道,双声道,四声道,5.1声道。

  • 比特率:每秒传输的bit数,单位为:bps(Bit Per Second)。 间接衡量声音质量的一个标准。 没有压缩的音频数据的比特率 = 采样频率 * 采样精度 * 通道数。

  • 码率: 压缩后的音频数据的比特率。常见的码率: 96kbps:FM质量 128-160kbps:一般质量音频。 192kbps:CD质量。 256-320Kbps:高质量音频 码率越大,压缩效率越低,音质越好,压缩后数据越大。 码率 = 音频文件大小/时长。

  • 帧:音频的帧的概念没有视频帧那么清晰,几乎所有视频编码格式都可 以简单的认为一帧就是编码后的一张图像。 帧长:

    • (1)可以指每帧采样数播放的时间, mp3 48k, 1152个采样点,每帧则为 24ms;aac则是每帧是1024个采样点。 攒够一帧的数据才送去做编码
    • (2)也可以指压缩后每帧的数据长度。所以讲到帧的时候要注意他适用 的场合。 每帧持续时间(秒) = 每帧采样点数 / 采样频率(HZ)

    每帧持续时间(秒) = 每帧采样点数 / 采样频率(HZ)

    交错模式:数字音频信号存储的方式。数据以连 续帧的方式存放,即首先记录帧1的左声道样本和 右声道样本,再开始帧2的记录

    非交错模式:首先记录的是一个周期内所有帧的 左声道样本,再记录所有右声道样本

# 封装格式基础

封装格式(也叫容器)就是将已经编码压缩好的视频流、音频流及字幕按 照一定的方案放到一个文件中,便于播放软件播放。 一般来说,视频文件的后缀名就是它的封装格式。 封装的格式不一样,后缀名也就不一样。 比如:同样的陷可以做成饺子也可以做成包子。对于视频也是一个道理, 同样的音视频流可以用不同容器来承载。

常见的封装格式:

AVI、MKV、MPE、MPG、MPEG MP4、WMV、MOV、3GP M2V、M1V、M4V、OGM RM、RMS、RMM、RMVB、IFO SWF、FLV、F4V、 ASF、PMF、XMB、DIVX、PART DAT、VOB、M2TS、TS、PS

Last updated: 2022/12/08, 06:27:06

← 优化x264 Swift拼音排序→

Copyright © 2022-2023 | Jiaolong Wang
  • 跟随系统
  • 浅色模式
  • 深色模式