# 1.2.音视频播放原理
# 1.3.图像表示RGB-YUV
## 1.3.1 图像的基本概念
像素:像素是图片的基本单位。 pix是英文单词picture的缩写,加上英文单词
使用俚语“元素”,我们得到“像素”,简称px,因此“像素”有“图像元素”
意义。
分辨率:指图像的大小或尺寸。例如,1920x1080。
位深度:指计算机在记录数字图像的颜色时,每个像素实际需要多少位深度。
用位深度表示。例如,红色分量使用8bit。
帧率:1秒传输的图片帧数,也可以理解为图形处理器每秒传输的图片帧数
可以刷新多次。例如,25fps 表示每秒有25 张图片。
码率:视频文件单位时间内所使用的数据流量。例如,1Mbps。
Stride:指每行像素在内存中占用的空间。实现每行像素的内存对齐
内存占用的空间不一定是图像的宽度
### 1.3.1.1 像素
像素是图片的基本单位。 Pix是英文单词picture的缩写。加上英文单词“element”,就得到“pixel”,简称px,所以“pixel”的意思是“图像元素”。
例如,一张25002000的照片,水平有2500个像素,垂直有2000个像素,总共500万像素,也俗称5兆像素照片。
### 1.3.1.2 分辨率
图像(或视频)的分辨率是指图像的大小或尺寸。我们通常用像素来表示图像的大小。
例如,25002000的照片意味着水平(宽度)2500个像素和垂直(高度)2000个像素。
常见决议:
360P(640x360)、720P(1280x720)、1080P(1920x1080)、4K(3840x2160)、8K(7680x4320)
### 1.3.1.2 分辨率-不同分辨率之间的区别
经常提到的1080和720实际上指的是垂直像素数。除了垂直像素之外,分辨率还需要考虑水平图像。
素数。按照16:9(宽:高)的比例计算,720p的水平像素数为720916=1280,总计
总像素数为921,600 像素,约合920,000 像素。 1080p有1920个水平像素,总计2073600
这大约是200 万像素,是720p 的两倍多。
像素越多,视频越清晰,因此1080p比720p视频更清晰。图像的分辨率越高,图像越清晰。
### 1.3.1.3 位深度
我们看到的彩色图片有三个通道,即红(R)、绿(G)、蓝(B)通道。 (如有需要
对于透明度,还有一个alpha 分量)
通常每个通道由8位表示。 8位可以表示256种颜色,因此可以由
256*256*256=16,777,216=1677万种颜色。
这里的8bit就是我们所说的位深度。
每个通道的位深度越大,可以表示的颜色值就越大。例如,当今高端电视的10 位色彩
颜色是指每个通道用10位表示,每个通道有1024种颜色。 1024*1024*1024 约为
1,073.74 百万种颜色=10 亿种颜色,是8bit 的64 倍。
最常见的颜色仍然是8 位。
### 1.3.1.4 帧速率
帧速率是FPS(每秒帧数)。经常玩游戏的同学应该对这个词不陌生。让我们玩
玩游戏时,FPS帧率越高,游戏画面越流畅,FPS帧率越低,游戏画面越卡顿。视频也是如此。
由于视觉图像在视网膜上暂时停留,一般图像帧率可达24帧,因此我们认为图像是连续的。
动态的。
电影帧速率通常为24fps(每秒帧数);
电视剧一般都是25fps;
25fps常用于监控行业;
15fps常用于音视频通话;
帧率越高,画面越流畅,对设备性能的要求也越高。
播放5帧和24帧视频对比。
### 1.3.1.5 码率
视频文件单位时间内使用的数据流量。例如,1Mbps。
大多数情况下,比特率越高,分辨率越高,就越清晰。然而,模糊视频的文件大小(比特率)也可能非常大,小分辨率的视频文件可能比大分辨率的视频文件更清晰。
对于相同的原始图像源、相同的编码算法,码率越高,图像失真越小,视频画面越清晰。
比较不同比特率的转码。
### 1.3.1.6 步幅
Stride:指每行像素在内存中占用的空间。要实现内存对齐,内存中每行像素所占用的空间不一定是图像的宽度。
Stride 是这些扩展内容的名称。步幅也称为步距。如果图像中每行像素的末尾都有扩展内容,则Stride的值必须大于图像的宽度,如下图所示:
例如,对于分辨率为638x480的RGB24图像,如果我们在内存处理时想要将其与16字节对齐,则638*3/16=119.625不可整除,因此无法与16字节对齐。我们需要在每行末尾填充6
字节。即(638+2-640),640*3/16=120。此时图像的stride为1920字节。
## 1.3.2 RGB和YUV深入解释
### 1.3.2.1 RGB
之前我们已经讲过RGB颜色表示,这里重点讨论RGB的排列。通常图像像素按RGB顺序排列,但有些图像处理需要转换为其他顺序。例如,OpenCV经常转换为BGR排列。
### 1.3.2.2 YUV
与我们熟悉的RGB类似,YUV也是一种颜色编码方式。它是指分别表示亮度参数(Y:Luminance 或Luma)和色度参数(UV:Chrominance 或Chroma)的像素编码格式。
这种分离的优点是不仅可以避免相互干扰,而且可以显示完整的图像,而无需UV信息。
解决了彩色电视和黑白电视的兼容问题;它还可以在不过多影响图像质量的情况下降低色度采样率,并降低视频信号传输的带宽(带宽)要求。
Y Y 共享一组UV 分量。
YUV是一个比较笼统的术语。根据其具体排列方式,可以分为多种具体格式:
打包格式:将每个像素点的Y、U、V分量排列成交叉数组,并以像素为单位连续存储在同一个数组中。通常几个相邻的像素形成一个宏像素。 )
Planar 格式:使用三个数组连续存储Y、U、V 三个分量,即Y、U、V 存储在各自的数组中。
#### 1.3.2.2.1 YUV采样表示
YUV 使用A:B:C 符号来描述Y、U、V 采样频率比。下图中的黑点代表采样像素的Y分量,空心圆圈代表采样像素的UV分量。主要分为几种常用的类型:YUV 4:4:4、YUV 4:2:2、YUV 4:2:0。
#### 1.3.2.2.2 YUV数据存储
下面以将各分量数据存储在一个char(或byte)中为例来描述YUV的数据存储方法。
1.4:4:4格式
2.4:2:2格式
3.4:2:0格式
YUV数据存储-4:2:0格式-参考
### 1.3.2.3 RGB和YUV的转换
通常RGB和YUV之间的直接转换是通过调用接口来实现的,比如Ffmpeg的swscale或
libyuv 等库。
主要转换标准为BT601和BT709。
YUV(256级)可以直接从8位RGB计算出来:
Y=0.299*R + 0.587*G + 0.114*B;
U=-0.169*R - 0.331*G + 0.5 *B ;
V=0.5*R - 0.419*G - 0.081*B;
在8bit位深的情况下
TV 范围为16-235(Y)、16-240(UV),也称为有限范围
PC范围为0-255,也称为Full Range
RGB没有范围,都是0-255
反过来,RGB也可以直接从YUV(级别256):计算出来
R=Y + 1.402 (Y-128)
G=Y - 0.34414 (U-128) - 0.71414 (U-128)
B=Y + 1.772 (V-128)
从YUV转RGB,数值小于0则取0,大于255则取255
谷歌的libyuv 库
### 1.3.2.4 RGB与YUV的转换-为什么解码错误显示绿屏?
因为解码失败时,YUV分量会被填充0值,然后根据公式:
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.45984
B=0
此时只有G分量有值,所以是绿色的。
YUV-RGB
### 1.3.2.5 YUV Stride对齐问题
例如,如果分辨率为638x480的YUV420P图像在内存中以16个字符进行处理
节对齐,那么638不能被16整除,我们需要在每行末尾填充2个字节。那是640。
此时图像的Y步幅为640字节。
# 1.4.视频的主要概念
## 1.4.1 概念
视频码率:kb/s,是指视频文件在单位时间内所使用的数据流量,也称为码率。码率越大,单位时间的采样率越大,数据流的精度越高。
视频帧率:fps,通常是25帧视频,指的是视频帧率,即1秒会显示25帧。帧率越高,视觉体验越流畅。
视频分辨率:分辨率就是我们常说的640x480分辨率和1920x1080分辨率。分辨率影响视频图像的大小。
I帧(帧内编码帧):I帧的生成不参考其他图片,解码时自行重建完整图像;
I帧图像采用帧内编码;
I帧占用的数据中信息量较大;
I帧图像在图像序列中周期性出现,出现频率可由编码器选择;
I帧是P帧和B帧的参考帧(其质量直接影响同组后续帧的质量);
I帧是帧组GOP的基本帧(第一帧),一个组中只有一个I帧;
I帧不需要考虑运动矢量;
P帧(预测帧):根据本帧与相邻的前一帧(I帧或P帧)之间的差异来压缩本帧的数据,同时利用空间和时间相关性。
P帧属于前向预测帧间编码。它需要参考之前最接近的I帧或P帧来解码。
B帧(双向预测帧):B帧图像采用双向时间预测,可以大大提高压缩系数。
## 1.4.2 常用视频压缩算法
MPEG2 MPEG 阵营
H264 MPEG阵营
H265 MPEG阵营
AVS中国营
VP8谷歌阵营
VP9谷歌阵营
音频基础知识- 课程大纲
2.1 声音的物理特性
2.2 数字音频
2.3 基本音频名词
2.4 音频编码的基本原理
2.5 音频编解码器选择
## 1.4.3 测试视频下载地址
1.地址:http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4 1分钟
2、地址:http://vjs.zencdn.net/v/oceans.mp4
3.地址:https://media.w3.org/2010/05/sintel/trailer.mp4 52秒
4. http://mirror.aarnet.edu.au/pub/TED-talks/911Mothers_2010W-480p.mp4 10分
钟
各种其他格式,MP4、flv、mkv、3gp视频下载
https://www.sample-videos.com/index.php#sample-mp4-video
参考文档
[常见视频有720p、1080p、4k。这些决议包括哪些内容?](https://segmentfault.com/a/1190000023769775)
YUV详细解释:https://blog.csdn.net/u013898698/article/details/54927203
# 1.5 音频
## 1.5.1 声音的物理特性
### 1.5.2.1 声音的物理特性- 振动
声音是由物体振动引起的物理现象,例如小提琴弦的声音。物体的振动会导致其周围空气压力的变化。这种强度的突然变化以波浪的形式向四周传播。当人耳接收到它时,我们就会听到声音。
2.1 声音的物理特性——波形
声音是由物体的振动产生的。这种振动引起周围气压的振荡。我们将这种振荡的函数表达式称为波形。
### 1.5.2.1 声音的物理特性- 频率
声音的频率是周期的倒数,代表一秒钟内声音的周期数,单位是赫兹(Hz)。千赫兹(kHz),即1000Hz,表示每秒振动1000次。声音根据频率可分为如下:
次声020Hz
人耳可听到的声音20Hz20KHz
超声波20KHz1GHz
特种超声波1GHz10THz
### 1.5.2.1 声音的物理特性- 振幅
声音有振幅,振幅的主观感受就是声音的大小。声音的振幅取决于空气压力波距离与平均值(也称为平衡状态)的最大偏差。
## 1.5.2 数字音频
为了将模拟信号数字化,本节将分为3个概念来解释:
采样频率、采样量化、编码
### 1.5.2.1 数字音频采样频率
根据奈吉斯特采样定律,要完全恢复采样后的原始信号波形,采样频率必须至少是信号中最高频率的两倍。
前面提到,人耳能听到的频率范围是[20H~20kHz],所以采样频率一般为44.1Khz。这样就保证了声音可以数字化到20Khz,这样数字化之后,人耳听到的音质就不会降低。
采样频率:每秒采样的点数。常用的采样频率有:
22000 (22kHz):无线广播。
44100 (44.1kHz):CD 品质。
48000 (48kHz):数字电视、DVD。
96000 (96kHz):蓝光、HD DVD。
192000(192kHz): 蓝光、高清DVD。
### 1.5.2.2 数字音频采样量化
采样是在离散的时间点进行的,采样的值本身在计算机中也是离散的。
采样值的精度取决于它用多少位来表示,这就是量化。例如,8 位量化可以表示256 个不同的值,而CD 质量的16 位量化可以表示[-32768, 32767] 范围内的65,536 个值。
下图是3位量化的示意图。可见3位量化只能表示8个值:0.75、0.5、0.25、0、0.25、0.5、0.75和1。因此,量化位数越少,波形就越难破译,恢复出来的声音质量就会越差(可能除了嗡嗡声什么都没有)
### 1.5.2.3 音频常用名词
采样频率:每秒采样的点数。常用的采样频率有:
22000 (22kHz):无线广播。
44100 (44.1kHz):CD 品质。
48000 (48kHz):数字电视、DVD。
96000 (96kHz):蓝光、HD DVD。
192000(192kHz): 蓝光、高清DVD。
采样精度(采样深度):每个“采样点”的大小,
常用的大小有8bit、16bit、24bit。
声道数:单声道、二声道、四声道、5.1声道。
比特率:每秒传输的比特数,单位:bps(Bit Per Second)
声音质量的间接测量。
未压缩音频数据的比特率=采样频率*采样精度*通道数。
比特率:压缩音频数据的比特率。常用码率:
96kbps:FM 质量
128-160kbps:平均质量音频。
192kbps:CD 质量。
256-320Kbps:高品质音频
码率越高,压缩效率越低,音质越好,但压缩数据越大。
比特率=音频文件大小/持续时间。
帧:每次编码的采样单元数。例如,MP3通常以1152个采样点作为编码单元,AAC通常以1024个采样点作为编码单元。
帧长:
可以参考每帧播放时长:每帧时长(秒)=每帧采样点数/采样频率(HZ)
例如:MP3 48k,1152个采样点,每帧24毫秒
1152/48000=0.024秒=24毫秒;
也可以指压缩后每帧的数据长度。
所以在谈论框架的时候,我们要注意它适用的场合。
## 1.5.3 音频编码原理介绍
数字音频信号如果不经过压缩直接传输,会占用巨大的带宽。例如,如果一组两声道数字音频的采样频率为44.1KHz,每个采样值被量化为16位,则码率将为:
2*44.1kHz*16bit=1.411Mbit/s
这么大的带宽会给信号传输和处理带来很多困难和成本(阿里云服务器带宽大于5M后,每M价格为100元/月)。
因此,必须采用音频压缩技术来处理音频数据,才能有效地传输音频数据。
数字音频压缩编码在保证信号不产生听觉失真的前提下,尽可能地压缩音频数据信号,以减少数据量。数字音频压缩编码是通过从声音信号中去除冗余分量来实现的。所谓冗余成分是指音频中人耳无法感知的信号。它们无助于确定声音的音色、音高和其他信息。
冗余信号包括人耳听觉范围之外的音频信号和屏蔽音频信号。例如,人耳可感知的声音信号的频率范围为20Hz20KHz。另外,其他频率是人耳无法察觉的,可以视为冗余信号。
另外,根据人类听觉的生理和心理声学现象,当强信号和弱信号同时存在时,弱信号会被强信号掩盖而听不到。这样,微弱信号就可以被视为冗余信号。无需发送。这就是人类听觉的掩蔽效应,主要表现在频谱掩蔽效应和时域掩蔽效应。
### 1.5.3.1 音频编码-频谱掩蔽效应
### 1.5.3.2 音频编码-时间掩蔽效应
当强声音信号和弱声音信号同时出现时,也存在时域掩蔽效应。即当两次出现时间非常接近时,也会出现掩蔽效应。时域掩蔽过程曲线如图所示,分为前掩蔽、同时掩蔽和后掩蔽三部分。
时间掩蔽效应可分为三种类型:前掩蔽、同时掩蔽和后掩蔽。预掩蔽是指在人耳听到强信号之前的短时间内,现有的微弱信号将被掩蔽而听不到。同时掩蔽是指当强信号和弱信号同时存在时,弱信号会被强信号掩盖而听不到。后掩蔽是指强信号消失后,需要很长时间才能再次听到微弱信号,称为后掩蔽。这些被屏蔽的微弱信号可以被视为冗余信号。
### 1.5.3.3 音频编码-压缩编码方法
目前,数字音频编码领域存在不同的编码方案和实现方法,但基本的编码思想是相似的,如图所示。
对于每个音频通道中的音频采样信号:
将它们映射到频域,这种从时域到频域的映射可以通过子带滤波器来实现。每个通道中的音频样本块首先根据心理声学模型计算掩蔽阈值;
计算出的掩蔽阈值决定了从公共比特池中将多少不同频域的比特分配给通道,然后进行量化和编码;
在数据中添加控制参数和辅助数据,生成编码数据流。
### 1.5.3.4 音频编解码器选择
奥普斯
MP3
亚克力
AC3 和EAC3 杜比解决方案
请参考:《详解音频编解码的原理、演进和应用选型等 - 知乎 (zhihu.com)》
https://zhuanlan.zhihu.com/p/55218899
# 1.6 封装格式的概念
封装格式(也称为容器)是将编码压缩后的视频流、音频流和字幕按照一定的方案放入一个文件中,以便播放软件可以播放。
一般来说,视频文件的后缀就是其打包格式。
包的格式不同,后缀名也不同。
例如:同样的饺子可以做成饺子,也可以做成包子。视频也是如此。相同的音频和视频流可以由不同的容器承载。
包装格式示例
这是压缩算法:
视频视频:采用H264/AVC压缩算法
音频音频:采用AAC压缩算法
## 1.6.1 封装时,采用MP4封装格式。
常见视频封装格式
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、部分
DAT、VOB、M2TS、TS、PS
H264+AAC封装成FLV或MP4是最流行的模式
# 1.7 音视频同步基础知识
### 1.7.1 音视频同步概念
DTS(Decoding Time Stamp):解码时间戳。这个时间戳的意义就是告诉播放器什么时候解码这一帧的数据。
PTS(Presentation Time Stamp):显示时间戳。这个时间戳用来告诉播放器什么时候显示这一帧的数据。
### 1.7.2 音视频同步方法
音频大师:将视频同步到音频
视频大师:将音频同步到视频
外部时钟主控:将音频和视频同步到外部时钟。
通常音频主控外部时钟主控视频主控
### 1.7.3 音视频同步
异步同步模块
目前仅支持音频主控方式
各模块关键时间点监控
### 1.7.4 其他
1、客户端首帧秒开,本质上就是先显示首帧,不同步。
2、推流没有问题的情况下,如果拉流无法正常播放:
1、没有声音:dump rtmp流后的数据能否正常播放?
2、声音异常:是否有解码错误报告?重采样前的PCM数据是否正常?
3、无图像:dump rtmp流后的数据能否正常播放?
标签:
用户评论
看了这八篇论文,感觉对音视频基础知识有了更深的理解。特别是关于音频编码的部分,以前真的不太懂。
有10位网友表示赞同!
第一次看到这么多关于音视频的论文,感觉挺有挑战性的,希望作者能继续分享。
有13位网友表示赞同!
音视频基础知识这部分太重要了,不过论文里的专业术语太多了,对于初学者来说有点难度。
有14位网友表示赞同!
这八篇论文让我对音视频处理有了全新的认识,特别是关于视频压缩技术,学到了很多新东西。
有9位网友表示赞同!
音视频基础知识这部分真是让我开了眼界,以前只听说过,现在终于明白了一些概念。
有10位网友表示赞同!
论文里提到的音视频编码标准真是复杂,感觉要花更多时间去研究才能掌握。
有19位网友表示赞同!
对音视频感兴趣的伙伴们一定要看看这八篇论文,绝对能学到很多实用知识。
有6位网友表示赞同!
虽然有些论文读起来比较费劲,但我觉得作者对音视频知识的讲解还是很到位的。
有13位网友表示赞同!
音视频基础知识太基础了,但对于想要深入学习的人来说,这些内容还是很有价值的。
有7位网友表示赞同!
这八篇论文让我对音视频处理有了新的启发,感觉之前学的知识都太浅薄了。
有20位网友表示赞同!
论文里提到的音视频解码过程有点难理解,希望能有更详细的解释。
有13位网友表示赞同!
对音视频感兴趣的朋友们,不要错过这八篇论文,绝对能让你受益匪浅。
有11位网友表示赞同!
音视频基础知识这部分对我来说挺有帮助的,尤其是那些实用的技巧。
有9位网友表示赞同!
论文里的案例分析很棒,让我对音视频处理有了更直观的认识。
有9位网友表示赞同!
虽然论文内容有些枯燥,但为了深入学习音视频,还是得啃下来。
有8位网友表示赞同!
这八篇论文让我对音视频技术产生了浓厚的兴趣,希望作者能分享更多相关内容。
有11位网友表示赞同!
音视频基础知识这部分对我来说挺有挑战性的,不过我会努力克服困难,继续学习的。
有20位网友表示赞同!
论文里的实验数据很详细,对于想要深入研究的人来说是个很好的参考。
有14位网友表示赞同!