音视频开发基础知识
音视频开发基础知识
数字图像表示RGB表示:
RGB方式
对于一幅图像,一般使用整数表示方法来进行描述,比如计算一张的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是连续交*存储的。
◼ Libyuv,Google开源的实现各种YUV与RGB之间相互转换、旋转、缩放的库。
YUV****存在多种格式,比如YUV420p,YUV420sp等,不同的YUV格式的数据在存储时的排列顺序是不一样的,在开发的过程中必须非常注意,否则画面会显示不正常。比如花屏,绿屏等现象。
YUV 4:4:4采样,每一个Y对应一组UV分量。
YUV 4:2:2采样,每两个Y共用一组UV分量。
YUV 4:2:0采样,每四个Y共用一组UV分量。
视频的主要概念
视频码率:kb/s,是指视频文件在单位时间内使用的数据流量,也叫码流率。码率越大,说明单位时间内取样率越大,数据流精度就越高。
视频帧率:fps,通常说一个视频的25帧,指的就是这个视频帧率,即1秒中会显示25帧。帧率越高,给人的视觉就越流畅。
视频分辨率:分辨率就是我们常说的640x480分辨率、1920x1080分辨率,分辨率影响视频图像的大小。
IPB帧的概念
I 帧(Intra coded frames):I帧不需要参考其他画面而生成,解码时仅
靠自己就重构完整图像;
➢ I帧图像采用帧内编码方式;
➢ I帧所占数据的信息量比较大;
➢ I帧图像是周期性出现在图像序列中的,出现频率可由编码器选择;
➢ I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量);
➢ I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧;
➢ I帧不需要考虑运动矢量;
P 帧(Predicted frames:根据本帧与相邻的前一帧(I帧或P帧)的不同点来压缩本帧数据,同时利用了空间和时间上的相关性。
➢ P帧属于前向预测的帧间编码。它需要参考前面最靠近它的I帧或P帧来解码。 (多个参考帧的时候,遇到过11个参考帧)
B 帧(Bi-directional predicted frames):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)
封装格式基础
封装格式(也叫容器)就是将已经编码压缩好的视频流、音频流及字幕按照一定的方案放到一个文件中,便于播放软件播放。
一般来说,视频文件的后缀名就是它的封装格式。
封装的格式不一样,后缀名也就不一样。
比如:同样的陷可以做成饺子也可以做成包子。对于视频也是一个道理,同样的音视频流可以用不同容器来承载。
H264+AAC封装为FLV或MP4是最为流行的模式
音视频同步基础
音视频同步概念
DTS(Decoding Time Stamp):即解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据。
PTS(Presentation Time Stamp):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧的数据。
当视频流中没有 B 帧时,通常 DTS 和 PTS 的顺序是一致的。但存在B帧的时候两者的顺序就不一致了。
音视频同步方式
Audio Master:同步视频到音频
Video Master:同步音频到视频
External Clock Master:同步音频和视频到外部时钟
一般情况下 Audio Master > External Clock Master > Video Master
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)