0、视频基础支持
- 帧率
- 码率
- 分辨率
- 像素格式
- 色彩空间
- I帧P帧B帧
- PTS与DTS
- YUV与RGB
- 位深与色域
- 封装格式:mp4、avi、flv、mkv等
- 编码格式:H.264(AVC)、VP8、H.265(HEVC)、VP9、AV1等
1、视频编码
1.1 mp4
在 MP4 文件中,音频和视频的编码通常会涉及到一个参数叫 Profile,特别是在视频编码如 H.264、H.265 等中,Profile 是用来定义编码的复杂度、特性集以及适用的场景。
视频编码
- 什么是 Profile?
Profile 是视频编码标准中的一个子集,规定了编码器和解码器可以使用的编码工具和功能。不同的 Profile 支持不同级别的复杂度和特性,适用于不同的使用场景。例如,有些 Profile 设计用于高质量、高复杂度的内容,而另一些则设计用于低复杂度、低带宽的设备。
在 H.264/AVC 和 H.265/HEVC 等视频编码标准中,Profile 是一个非常重要的概念。
- 常见的 H.264/AVC Profile
在 H.264 标准中,常见的 Profile 有以下几种:
(1) Baseline Profile
特点:简单的编码方式,不支持 B 帧、CABAC(上下文自适应二进制算术编码)等复杂特性。
用途:适合低延迟、低计算能力的设备,比如视频会议、移动设备等。
特性:相对简单,压缩率较低,编码效率不高,但对设备要求低。
(2) Main Profile
特点:支持 B 帧、CABAC 等特性,具有更好的压缩性能。
用途:常用于标准的广播视频、网络流媒体、高清电视等。
特性:相比 Baseline Profile,有更好的压缩率和图像质量。
(3) High Profile
特点:支持更多高级特性,如 8x8 宏块、CABAC 等,能提供更高的编码效率和视频质量。
用途:广泛用于蓝光光盘、高清电视、流媒体服务等。
特性:在相同的比特率下能提供更高的视频质量,适合高分辨率、高清内容。
- H.265/HEVC Profile
与 H.264 相比,H.265/HEVC 引入了更多的 Profile,进一步增强了视频压缩性能。常见的 Profile 包括:
(1) Main Profile
特点:H.265 的基础 Profile,支持 8-bit 色深的视频。
用途:适用于大多数常见的视频应用场景。
特性:比 H.264 的 Main Profile 压缩效率更高。
(2) Main 10 Profile
特点:支持 10-bit 色深的视频,适合高动态范围(HDR)视频。
用途:用于 4K、HDR 视频内容和流媒体应用。
特性:比 Main Profile 有更高的色彩精度和视频质量。
(3) Main Still Picture Profile
特点:仅用于编码静止图片。
用途:适合对静止图像进行高效压缩。
- 不同 Profile 的选择影响
不同的 Profile 主要影响以下几方面:
编码效率:高 Profile 由于使用了更复杂的编码工具,能提供更高的压缩效率,但也对解码器要求更高。
视频质量:高 Profile 在相同比特率下可以提供更好的画质。
设备兼容性:低 Profile(如 Baseline Profile)适用于计算能力较低的设备,而高 Profile 可能无法在这些设备上解码。
存储和带宽需求:高 Profile 对带宽和存储要求较低,但需要更强大的硬件支持。
- 使用场景
Baseline Profile:适合需要低延迟、设备解码能力有限的场景,如视频通话、手机视频。
Main Profile:适合常规的视频应用,如网络流媒体、广播视频。
High Profile:用于高质量视频,如蓝光光盘、高清电视、视频点播等场景。
总结
Profile 决定了编码的复杂度、功能集和设备的兼容性。
Baseline 适合低复杂度和低延迟的场景。
Main 提供中等复杂度和广泛适用性。
High 适合高质量、高分辨率的视频内容。
Profile 的选择需要根据应用场景、设备的解码能力和所需的压缩效率来权衡。
音频编码
在 MP4 文件中,如果音频编码使用的是 AAC(Advanced Audio Coding) 编码,Profile 也是一个重要的概念。AAC 的 Profile 决定了编码器和解码器的复杂性、音频质量以及应用场景。
-
AAC Profile 是什么?
AAC 的 Profile 定义了编码器和解码器可以使用的功能和技术。不同的 Profile 使用了不同的编码工具,能够在压缩效率、音质和解码复杂度之间做出权衡。常见的 AAC Profile 主要有以下几种: -
常见的 AAC Profile
AAC 标准中有多个 Profile,但以下几种是最常用的:
(1) AAC-LC (Low Complexity Profile)
特点:这是最常用的 AAC Profile,适合大多数音频应用。
用途:广泛应用于流媒体、移动设备、MP4 视频、广播等场景。
特性:计算复杂度较低,兼容性好,音质和压缩效率之间平衡良好。
优势:解码器对资源需求较低,因此几乎所有设备都能支持 AAC-LC。
(2) HE-AAC (High Efficiency AAC)
特点:是一种增强的 AAC Profile,特别适合低比特率编码,通常在 96 kbps 甚至更低的比特率下提供相对较高的音质。
用途:常用于低比特率的流媒体、广播、卫星广播和网络音频等场景。
特性:通过结合 SBR(Spectral Band Replication,频谱带复制)技术来提升低比特率下的音质。HE-AAC 也称为 AAC+ 或 AAC Plus。
HE-AAC v2:在 HE-AAC 基础上加入了 PS(Parametric Stereo)技术,可以进一步提升立体声音频的质量,特别适合超低比特率的音频流。
(3) AAC-SSR (Scalable Sample Rate)
特点:一种支持可伸缩采样率的 AAC Profile,允许编码器和解码器在不同的采样率下操作。
用途:主要用于需要支持多种采样率变化的场景,不过实际应用较少。
特性:复杂度较高,但能够在不同的采样率下提供良好的音频质量。
(4) AAC-ELD (Enhanced Low Delay)
特点:专为需要低延迟的实时应用而设计,如视频会议、电话会议等。
用途:适合需要同步音频和视频的场景,音频延迟非常低。
特性:相比其他 Profile,音质略有降低,但能够保证非常低的延迟。
- AAC Profile 选择对音频的影响
不同的 AAC Profile 在以下方面的影响主要体现在:
音质:HE-AAC 能在低比特率下提供更高的音质,而 AAC-LC 在高比特率下表现最佳。
解码复杂度:AAC-LC 是最简单的,几乎所有设备都能支持;而 HE-AAC 和 HE-AAC v2 需要更复杂的解码器。
比特率:HE-AAC 和 HE-AAC v2 适用于低比特率的应用场景,而 AAC-LC 更适合高比特率的音频。
延迟:AAC-ELD 提供最低的延迟,适合需要实时传输的应用。
- 使用场景
AAC-LC:适合大多数常规音频场景,包括高比特率的音乐流、广播和 MP4 视频的音轨。
HE-AAC:适合低比特率的流媒体和广播,如互联网音频流和移动端音频传输。
HE-AAC v2:适合超低比特率的音频场景,特别是立体声音频。
AAC-ELD:适合需要低延迟的应用,如视频会议和 IP 语音电话。
总结
AAC-LC:最常用的 Profile,适用于大多数应用,特别是高比特率的音频。
HE-AAC:用于低比特率场景,适合流媒体和广播。
HE-AAC v2:进一步优化低比特率的立体声音频。
AAC-ELD:专为低延迟场景设计,适合实时音视频应用。
不同的 AAC Profile 代表了编码工具的不同组合,影响音频压缩的效率、音质、解码复杂度等。因此,选择合适的 Profile 取决于具体的应用场景和需求。
2、分辨率 帧率
2.1、分辨率不是越高越好
较高的分辨率也需要较高的码率来支撑,如果分辨率选择 1280 x 720,但码率却指定为 200kbps,画面就会有大量的马赛克。
由于很多硬件编解码器只支持能==被 16 整除的像素宽度==,所以在使用厂商 SDK 实际编码出的分辨率并不一定完全按照参数自定,而是会自动进行 16 整除修正。
例如 640 x 360 的分辨率,在 SDK 内部有可能会适配为 640 x 368。
可以参考腾讯的文档:分辨率码率参照表
2.2、帧率不是越高越好
由于摄像头采集的画面是曝光阶段中所有现实物体的完整映射,所以并不是帧率越高,感官就越流畅,这一点跟游戏里的FPS是不一样的。
恰恰相反,帧率过高,会拉低每帧画面的画质,也会减少摄像机的曝光时间,效果可能会更差。
帧率(FPS),也就是每秒钟要编码多少帧画面。RTC场景下推荐设置为 15 FPS,这样既能保证画面足够流畅,又不会因为每秒帧数太多而拉低单幅画面的清晰度。
如果对流畅度要求比较高,可以设置为 20 FPS 或 25 FPS。但请不要设置 25 FPS 以上的数值,因为电影的常规帧率也只有 24 FPS。
3、码率不是越高越好
较高的码率也需要较高的分辨率来匹配,例如:对于 320 x 240 这样分辨率,1000kbps 的码率就很浪费了。
4.常见分辨率码率参照表
分辨率定义 | 宽高比 | 编码分辨率(16X) | 建议码率(VideoCall) | 建议码率(LIVE) |
---|---|---|---|---|
160x90 | 16:9 | 160x==96== | 150kbps | 250kbps |
256x144 | 16:9 | 256x144 | 200kbps | 300kbps |
320x180 | 16:9 | 320x==192== | 250kbps | 400kbps |
480x270 | 16:9 | 480x==272== | 350kbps | 550kbps |
640x360 | 16:9 | 640x==368== | 550kbps | 900kbps |
960x540 | 16:9 | 960x==544== | 850kbps | 1300kbps |
1280x720 | 16:9 | 1280x720 | 1200kbps | 1800kbps |
1920x1080 | 16:9 | 1920x==1088== | 2000kbps | 3000kbps |
2560×1440 | 16:9 | 2560×1440 | 4000kbps | 6000kps |
4096×2160 | 16:9 | 4096×2160 | 6000kbps | 9000kps |
4.1 常见清晰度
简称 | 全称 | 行业叫法 | 清晰度 | 分辨率 |
---|---|---|---|---|
FUHD | Full Ultra High Definition | 8K超高清 | 8K | 7680X4320 |
UHD | Ultra High Definition | 超高清(极清)、4K | 2160P | 3840X2160 |
QHD | Quad High Definition | 2K | 2K | 2560X1440 |
FHD | Full High Definition | 全高清(超清) | 1080P | 1920X1080 |
HD | High Definition | 高清 | 720P | 1280X720 |
SD | Standard Definition | 标清 | 540P | 960X540 |
5.H.264/AVC视频编解码技术
- H264系列十七 Slice(条带或片层)
- 解析H.264码流的宏块结构(上)
宏块结构(Macroblock)
- 十二、解析H.264码流的宏块结构(下):H.264帧内编码宏块的预测结构
- FFmpeg从入门到精通——进阶篇,SEI那些事儿
5.1 Android FFmpeg
5.1.1 Android FFmpeg MediaCodec硬编码
6.腾讯TRTC低延时的秘密
可参考: https://cloud.tencent.com/developer/article/1610391
-
ARQ
ARQ 即自动重传请求,TCP 的 ACK 机制是 ARQ 的一种方式。除了 ACK 以外,有一种机制为 NACK。不同于 ACK 是用来做接收确认,NACK 是没有收到数据包的确认.
-
FEC
FEC 即前向错误纠正,是通过增加网络层的校验数据包,增加数据冗余,抵抗传输过程中丢包带来的影响,遇到少量丢包时,接收方无须再通知发送方重传数据,可以直接在本地通过数据校验恢复原始数据,从而减少了延时。
不过 FEC 添加冗余数据包也会带来更多的网络带宽占用,因此 FEC 的这种工作方式是“以带宽换延时”。 -
QoS
利用好 ARQ 和 FEC 机制的基础,是需要有准确的带宽预测,也就是 QoS 中最关键的一环。
TRTC 依靠腾讯线上业务多年以来的技术积累,在 QoS 上有着众多专利技术,可以实现更为快速准确的带宽预测,通过及时地调整数据码率匹配网络带宽,可以减少客户端上的网络堆积,降低数据传输的耗时。
同时,通过准确的带宽预测,ARQ 和 FEC 策略能够更加有效地发挥作用,带来更好的传输效能。
7.谈H.323和SIP协议两者的区别
参考:https://developer.aliyun.com/article/127283
-
H.323
沿用的是传统的实现电话信令模式,比较成熟,H.323符合通信领域传统的设计思想,进行集中、层次控制,采用H.323协议便于与传统的电话网相连。
MCU可能会成为颈,特别是对于具有附加特性的大型会议;并且 323不支持信令的组播功能,其单功能限制了可扩展性,降低了可靠性。 -
SIP协议
借鉴了其它因特网的标准和协议的设计思想,在风格上遵循因特网一贯坚持的简练、开 放、兼容和可扩展等原则,比较简单。
-
webrtc VS SIP/H.323
-
FreeSWITCH
是一个开源的电话软交换平台,支持实时音视频通信及会议,支持SIP及WebRTC等多种通信协议。
FreeSWITCH中文站 -
PSTN
即Public Switched Telephone Network,中文全称是公共交换电话网,是一种用于全球语音通信的交换网络,这张网络大概拥有8亿用户,是当今世界最大的一张电信网络。
8.SEI
SEI(Supplemental Enhancement Information,媒体补充增强信息。
9.音频
9.1 3.5mm音频接口
3.5mm接口,通常是指直径为3.5mm的同轴插头,用于连接音频设备传递音频信号,由尖(Tip)、环(Ring)、套(Sleeve)组成,所谓的TRS或TRRS,就代表尖环套的数量,譬如TRRRS就表示一个尖(Tip),三个环(Ring)和一个套(Sleeve)组成。
之前流行的都是三段式,不带麦克风的,即TRS 现在流行的是四段式,带麦克风,但是分美标(白色绝缘圈)和国标(黑色绝缘圈),即TRRS(见后文) 还有一种不常见的TRRRS,一般生活中比较少见(5段式)。
下面是常见的TRS和TRRS耳机接口接线图以及说明,需要注意的是,TRRS有区分美标和国标两种不同的接线方式。
9.2 声道
当单声道音源被接入双喇叭音箱时,两个喇叭也都会发出声音。这是因为在单声道系统中,左、右声道传递的音频信号是一样的。
但是,请注意,虽然两个喇叭都能发声,音源仍是单声道的,也就是说左右喇叭发出的声音是完全一样的,没有立体声那种空间位置感。
由于单声道信号不能提供左右声道的立体声音景,所以听起来的效果和立体声是有较大差异的。
评论区