【入门音视频】音视频基础知识

ops/2025/2/26 14:16:57/

🌈前言🌈

        这个系列在我学习过程中,对音视频知识归纳总结的笔记。因为音视频相关讲解非常稀少,所以我希望通过这个音视频系列,跟大家一起学习音视频,希望减少初学者在学习上的压力。同时希望也欢迎指出文章的不足。

        本期内容主要讲解音视频基础知识,包含了音视频是如何保存成文件,以及如何通过文件播放的,通过这个流程讲解音视频编解码,封装解封装相关的协议

📁 音视频录制和播放原理

        上图是音视频录制和播放整体的流程,通过这个流程,我们对音视频的格式和协议进行整体的了解。

📁 视频

        一个连续播放的视频文件就是有一串连续的,前后存在相关关系的图像构成的,通过图像中的内存和它们之间的相互关闭表达整个视频文件所包含的消息。

 📂 图像

        一般是指静态图像。图像是指一种在二维平面上通过排列像素(pix)来表达信息的数据组织格式。

1. 位深(度)

        色位深度可以简单理解为表示一个像素的二进制位数,决定了每个像素可以呈现的颜色数量。位深度越高,表示的颜色种类就越多。常用的位深度有 8bit 或 10bit两种。

        ● 8 bit:即用8bit / 1 Byte 表示一个像素值,取值范围是 [0,255]。

        ● 10 bit:用10个bit表示一个像素值,取值范围是[0,1023]。

        上面场景只是单个颜色分量,即灰度图像;如果是彩色图像,每个像素可能包含多个颜色分量(通道)。例如RGB格式的彩色图像,一个完整的图像被分割成蓝绿红三个基色的单色图。

        每个通道位深是8 bit,则RGB格式图像中每个像素需要24 bit (8 bit * 3)表示。

确定颜色位深后,根据图像的宽高尺寸确定图像数据体积。        

        例如1920px * 1080px的RGB图像,位深是8 bit,则数据体积 = 192 * 1080 * 3 约等于 6.22MB左右。

2. 颜色空间

        彩色图像在实际应用场景下发挥了广泛作用,如图像显示和处理等,针对不同的场景,对图像色彩的表达方式有不同的要求。针对不同场景有不同的颜色数据表达方式,即颜色空间。

        颜色空间是一种利用整数区间来表示颜色的模型,其维度可以分为一维,二维,三维等。三维空阿金应用最为广泛,常见的三维颜色空间有RGB格式,YUV格式。本文重点讲解YUV格式。

        YUV格式是一种用于表示图像或视频颜色的色彩空间,它将颜色分为三个分量:亮度(Y)和两个色度(U和V)。这种格式广泛应用于视频压缩和视频传输,因为它与人眼对亮度和色彩的感知特性更为契合。

        y:明度;u:蓝色色度与亮度的差;v:红色色度与亮度的差,图像的每个像素点由yuv三个值来确定。

3. 压缩算法

        无算压缩方法:压缩率比较低,压缩后体积较大,没有信息损失,可通过压缩信息完全恢复原始信息。

        有损压缩方法:压缩率较高,压缩后体积较小,存在信息缺失,压缩后只能近似逼近原始信息,无法完全还原原始信息。

 📂 YUV格式

        组成视频的基本单元图像称为帧,本质与普通静态图没有任何区别。视频中每秒内容所包含的视频帧的数量称为帧率,单位是fps(frame per seoncd)。在各帧图像质量相近的情况下,帧率越高的视频播放越流畅,但是体积,码率也会更高。

        在视频压缩编码中,图像颜色空间通常使用YUV颜色空间。

        YUV采样格式的有:4:4:4、4:2:2、4:2:0。

1. 4:4:4        

        每个亮度像素Y对应一个色度像素U和V,色度分量图的尺寸与亮度分量图的相同。

2. 4:2:2

        每两个亮度像素Y对应一个色度像素U和V,色度分量图的尺寸为亮度分量图的1/2。

3. 4:2:0

        每四个亮度像素Y对应一个色度像素U和V,色度分量图的尺寸为亮度分量图的1/4。

YUV排列格式

1. packet:打包格式,先存储一个yuv,在存储下一个yuv。

2. planar:平面格式,先存储y平面,再存储u平面,在存储v平面。

3. semi-planar:先存储y平面,在存储uv平面。

📂 H.264协议

        应用较为广范的视频编码格式。通过之前我们了解如何计算图像大小,视频就是有一连串的图像组成的,因此如果不对视频进行压缩,那么视频文件就会很大,因此需要对音视频进行编解码。

📂 IBP帧  

I帧(帧内编码图像帧):表示关键帧,不需要其他的画面而生成,解码靠自己就能重构完整的图像。

P帧(前向预测编码图像帧):表示跟前一个关键帧或P帧的差别,P帧是参考帧,利用与前一帧不同点压缩本帧数据,利用空间和时间上的相关性。

B帧(双向预测编码图像帧):本帧与前后帧(I帧、P帧)的差别,B帧压缩率更高,但解码耗费CPU。

GOP(图像序列):两个I帧之间一个图像序列,一个GOP中包含一个I帧。

📂 解码时间戳和显示时间戳

● DTS(解码时间戳):这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据。

● PTS(显示时间戳):这个时间戳用来告诉播放器该在什么时候显示这一帧的数据。

音视频同步方式:

        Audio Master:同步视频到音频。

        Video Master:同步音频到视频。

        External Clock Master:同步音频和视频到外部时钟。

📂 视频主要概念补充

视频码率:kb/s,是指视频文件在单位时间内使用的数据流量,也叫码流率。码率越大,说明单位时间内取样率越大,数据流精度就越高。

视频帧率:fps,通常说一个视频的25帧,指的就是这个视频帧率,即1秒中会显示25帧。帧率越高,给人的视觉就越流畅。

视频分辨率:分辨率就是我们常说的640x480分辨率、1920x1080分辨率,分辨率影响视频图像的大小。

📁 音频

        在音频中,有两个概念比较重要,一个是采集到的原始音频数据PCM,和压缩后的音频数据AAC。

 📂 PCM格式

        为了将模拟信号(声音)数字化,需要进行 采样,量化,编码三个过程。

        根据Nyguist采样定律,要从采样中完全恢复原始信号波形,采样频率必须至少是信号中最高频率的两倍。 前面提到人耳能听到的频率范围是[20H~20kHz],所以采样频率一般为44.1Khz,这样就能保证声音到达20Khz也能被数字化,从而使得经过数字化处理之后,人耳听到的声音质量不会被降低。

        采样是在离散的时间点上进行的,采样值本身在计算机中也是离散的;采样值的精度取决于它的的多少位表示,即量化。

 📂 AAC协议

        高级音频编码,是一种声音数据的文件压缩格式,分为ADIF和ADTS两种文件格式。

        ADIF:高级数据交换格式,特征是可以确定找到的这个音频的开始,不需要进行音频数据流中间开始的解码,即解码必须在明确定义的开始处进行,常用在磁盘文件中。

        ADTS: 音频数据传输流,特征是有一个同步字的比特流,解码可以再流的任何位置开始。流媒体更常使用的。

 📂 音频主要概念补充

采样频率:每秒钟采样点的个数,常用的采样频率有:

        22000(22kHz): 无线广播。 44100(44.1kHz):CD音质。 48000(48kHz): 数字电视,DVD。 96000(96kHz): 蓝光,高清DVD。 192000(192kHz): 蓝光,高清DVD。

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

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

比特率:每秒传输的bit数,单位为:bps(Bit Per Second) 间接衡量声音质量的一个标准。

码率: 压缩后的音频数据的比特率。码率越大,压缩效率越低,音质越好,压缩后数据越大。 码率 = 音频文件大小/时长。

:每次编码的采样单元数,比如MP3通常是1152个采样点作为一个编码单元,AAC通常是1024个采样点作为一个编码单元。

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

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

📁 封装格式

        就是将已经编码压缩好的视频流、音频流及字幕按照一定的方案放到一个文件中,便于播放软件播放。

        H264+AAC封装为FLV或MP4是最为流行的模式。

📁 总结

        以上,就是本期内容,主要讲解了视频图像的YUV格式和H264编码,以及音频的PCM格式和AAC编码。

        如果感觉本期内容对你有帮助,欢迎点赞,关注,收藏Thanks♪(・ω・)ノ


http://www.ppmy.cn/ops/161429.html

相关文章

安宝特科技 | Vuzix Z100智能眼镜+AugmentOS:重新定义AI可穿戴设备的未来——从操作系统到硬件生态,如何掀起无感智能革命?

一、AugmentOS:AI可穿戴的“操作系统革命” 2025年2月3日,Vuzix与AI人机交互团队Mentra联合推出的AugmentOS,被业内视为智能眼镜领域的“iOS时刻”。这款全球首个专为智能眼镜设计的通用操作系统,通过三大突破重新定义了AI可穿戴…

AI人工智能之机器学习sklearn模型选择与调优

1、概要 本篇学习AI人工智能之机器学习sklearn的模型选择与调优,以iris数据集和随机森林模型为示例,从代码层面讲述如何进行模型选择与调优。 2、模型选择与调优 - 简介 模型选择与调优是机器学习流程中的关键步骤,涉及选择合适的模型、调整…

C++:dfs,bfs各两则

1.木棒 167. 木棒 - AcWing题库 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过 5050 个长度单位。 然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。 请你设计一个程序…

网页五子棋——项目测试

目录 测试用例设计 功能测试 注册功能测试 正常注册 异常注册 登录功能测试 正常登录 异常登录 匹配功能测试 对战功能测试 自动化测试 引入依赖 Utils 注册测试 登录测试 匹配测试 RunTest 界面测试 性能测试 总结 测试用例设计 在本篇文章中,…

冯诺依曼体系结构 ──── linux第8课

目录 冯诺依曼体系结构 关于冯诺依曼,必须强调几点: 冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系 输入单元:包括键盘, 鼠标,网卡,扫…

7.grafana的内存和CPU同时在一个表中的调整

如图所示,当CPU和内存同在一个表的时候,左y轴只显示内存单位,那么我们就需要让右y轴显示CPU单位百分之 1. 在axes 中显示左y轴和右y轴 2. 在左y轴单位选择bytes,右y轴单选选择百分比 3. 选择Series overrides,开始填…

uniapp写的h5跳转小程序

使用场景: 我们对接第三方支付的时候,对方只提供了原生小程序id和appid,由我们的app和h5平台跳转至小程序。 遇到的问题: app跳转本地正常,线上报错如下 解决办法: 需要去微信开放平台申请应用appid 易…

【Python爬虫(69)】解锁游戏数据宝藏:Python爬虫实战攻略

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取&#xff…