侧边栏壁纸
  • 累计撰写 262 篇文章
  • 累计创建 140 个标签
  • 累计收到 16 条评论

目 录CONTENT

文章目录

音视频

Sherlock
2023-02-15 / 0 评论 / 0 点赞 / 260 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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 是用来定义编码的复杂度、特性集以及适用的场景。

视频编码

  1. 什么是 Profile?

Profile 是视频编码标准中的一个子集,规定了编码器和解码器可以使用的编码工具和功能。不同的 Profile 支持不同级别的复杂度和特性,适用于不同的使用场景。例如,有些 Profile 设计用于高质量、高复杂度的内容,而另一些则设计用于低复杂度、低带宽的设备。

在 H.264/AVC 和 H.265/HEVC 等视频编码标准中,Profile 是一个非常重要的概念。

  1. 常见的 H.264/AVC Profile
    在 H.264 标准中,常见的 Profile 有以下几种:

(1) Baseline Profile
特点:简单的编码方式,不支持 B 帧、CABAC(上下文自适应二进制算术编码)等复杂特性。
用途:适合低延迟、低计算能力的设备,比如视频会议、移动设备等。
特性:相对简单,压缩率较低,编码效率不高,但对设备要求低。
(2) Main Profile
特点:支持 B 帧、CABAC 等特性,具有更好的压缩性能。
用途:常用于标准的广播视频、网络流媒体、高清电视等。
特性:相比 Baseline Profile,有更好的压缩率和图像质量。
(3) High Profile
特点:支持更多高级特性,如 8x8 宏块、CABAC 等,能提供更高的编码效率和视频质量。
用途:广泛用于蓝光光盘、高清电视、流媒体服务等。
特性:在相同的比特率下能提供更高的视频质量,适合高分辨率、高清内容。

  1. 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
特点:仅用于编码静止图片。
用途:适合对静止图像进行高效压缩。

  1. 不同 Profile 的选择影响
    不同的 Profile 主要影响以下几方面:

编码效率:高 Profile 由于使用了更复杂的编码工具,能提供更高的压缩效率,但也对解码器要求更高。
视频质量:高 Profile 在相同比特率下可以提供更好的画质。
设备兼容性:低 Profile(如 Baseline Profile)适用于计算能力较低的设备,而高 Profile 可能无法在这些设备上解码。
存储和带宽需求:高 Profile 对带宽和存储要求较低,但需要更强大的硬件支持。

  1. 使用场景
    Baseline Profile:适合需要低延迟、设备解码能力有限的场景,如视频通话、手机视频。
    Main Profile:适合常规的视频应用,如网络流媒体、广播视频。
    High Profile:用于高质量视频,如蓝光光盘、高清电视、视频点播等场景。

总结
Profile 决定了编码的复杂度、功能集和设备的兼容性。
Baseline 适合低复杂度和低延迟的场景。
Main 提供中等复杂度和广泛适用性。
High 适合高质量、高分辨率的视频内容。

Profile 的选择需要根据应用场景、设备的解码能力和所需的压缩效率来权衡。

音频编码

在 MP4 文件中,如果音频编码使用的是 AAC(Advanced Audio Coding) 编码,Profile 也是一个重要的概念。AAC 的 Profile 决定了编码器和解码器的复杂性、音频质量以及应用场景。

  1. AAC Profile 是什么?
    AAC 的 Profile 定义了编码器和解码器可以使用的功能和技术。不同的 Profile 使用了不同的编码工具,能够在压缩效率、音质和解码复杂度之间做出权衡。常见的 AAC Profile 主要有以下几种:

  2. 常见的 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,音质略有降低,但能够保证非常低的延迟。

  1. AAC Profile 选择对音频的影响
    不同的 AAC Profile 在以下方面的影响主要体现在:

音质:HE-AAC 能在低比特率下提供更高的音质,而 AAC-LC 在高比特率下表现最佳。
解码复杂度:AAC-LC 是最简单的,几乎所有设备都能支持;而 HE-AAC 和 HE-AAC v2 需要更复杂的解码器。
比特率:HE-AAC 和 HE-AAC v2 适用于低比特率的应用场景,而 AAC-LC 更适合高比特率的音频。
延迟:AAC-ELD 提供最低的延迟,适合需要实时传输的应用。

  1. 使用场景
    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)
160x9016:9160x==96==150kbps250kbps
256x14416:9256x144200kbps300kbps
320x18016:9320x==192==250kbps400kbps
480x27016:9480x==272==350kbps550kbps
640x36016:9640x==368==550kbps900kbps
960x54016:9960x==544==850kbps1300kbps
1280x72016:91280x7201200kbps1800kbps
1920x108016:91920x==1088==2000kbps3000kbps
2560×144016:92560×14404000kbps6000kps
4096×216016:94096×21606000kbps9000kps

4.1 常见清晰度

简称全称行业叫法清晰度分辨率
FUHDFull Ultra High Definition8K超高清8K7680X4320
UHDUltra High Definition超高清(极清)、4K2160P3840X2160
QHDQuad High Definition2K2K2560X1440
FHDFull High Definition全高清(超清)1080P1920X1080
HDHigh Definition高清720P1280X720
SDStandard Definition标清540P960X540

5.H.264/AVC视频编解码技术

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

8.SEI

SEI(Supplemental Enhancement Information,媒体补充增强信息。

如何理解和使用 SEI(媒体补充增强信息)?

9.音频

9.1 3.5mm音频接口

3.5mm接口,通常是指直径为3.5mm的同轴插头,用于连接音频设备传递音频信号,由尖(Tip)、环(Ring)、套(Sleeve)组成,所谓的TRS或TRRS,就代表尖环套的数量,譬如TRRRS就表示一个尖(Tip),三个环(Ring)和一个套(Sleeve)组成。

3.5mm音频接口.webp 之前流行的都是三段式,不带麦克风的,即TRS 3.5mm三段式接口.png 现在流行的是四段式,带麦克风,但是分美标(白色绝缘圈)和国标(黑色绝缘圈),即TRRS(见后文) 还有一种不常见的TRRRS,一般生活中比较少见(5段式)。

下面是常见的TRS和TRRS耳机接口接线图以及说明,需要注意的是,TRRS有区分美标和国标两种不同的接线方式。

3.5mm音频接口接线方式.jpeg 3.5mm音频接口四段式美标和国标.jpg

9.2 声道

当单声道音源被接入双喇叭音箱时,两个喇叭也都会发出声音。这是因为在单声道系统中,左、右声道传递的音频信号是一样的。

但是,请注意,虽然两个喇叭都能发声,音源仍是单声道的,也就是说左右喇叭发出的声音是完全一样的,没有立体声那种空间位置感。
由于单声道信号不能提供左右声道的立体声音景,所以听起来的效果和立体声是有较大差异的。


《WebRTC 探索:前端视角下的实时通信解析》(下)

0
rtc
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区