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

目 录CONTENT

文章目录

音视频

Sherlock
2023-02-15 / 0 评论 / 0 点赞 / 266 阅读 / 0 字
温馨提示:
本文最后更新于2024-10-28,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

0、视频基础支持

  • 帧率
  • 码率
  • 分辨率
  • 像素格式
  • 色彩空间
  • I帧P帧B帧
  • PTS与DTS
  • YUV与RGB
  • 位深与色域
  • 封装格式:mp4、avi、flv、mkv等
  • 编码格式:H.264(AVC)、VP8、H.265(HEVC)、VP9、AV1等

1、视频编码

1.1 编码格式

1.1.1 H.264(AVC)

  • 优点:

    • 1.编码效率高
    • 2.视频画质好:低码率和低带宽提供高质量图像传输
    • 3.压缩技术的效率高:保证数据质量的前提下,数据压缩比高
    • 4.网络适应能力强:可以在实时通信应用低延时模式,在无延时的视频存储或视频流服务器中工作
    • 5.兼容性好:兼容几乎所有浏览器,全部的移动和智能电视/OTT(OTT:指通过公共网络向用户提供内容分发业务,OTT可以使用任何网络接入,内容和服务可以跳过运营商通过网络直接面向用户提供,OTT完全以互联网架构为基础,典型代表有美国谷歌电视Google TV、Hulu、Netflix)
    • 6.编码选项少:降低编码复杂度
    • 7.错误恢复功能:提供解决网络传输包丢失问题的工具,适用高误码率无线网络中传输视频数据
  • 缺点:

    • 1.编码计算复杂度高,解码复杂度高
    • 2.对播放的硬件系统要求高 实时传播,比如视频会议,直播
    • 3.会产生特别大体积文件
    • 4.压缩视频的效率不高
    • 5.不支持4K以上分辨率的视频
    • 6.图像质量不高,原本黑色的东西看起来是灰色的。并且当比特率很低的时候,编码结果会是一块一块的,这种问题很常见
  • 应用场景:

    最常见的视频编码格式,是由国际电信联盟制定的,侧重网络传输。

1.1.2 HEVC(H.265)

  • 优点:

    • 1.码率低,编码效率高
    • 2.占存储空间少:同样的画质和同样的码率,H.265比H2.64 占用的存储空间要少理论50%
    • 3.节省带宽:H.265可以使用更少的带宽提供部分与H.264同样的功能
    • 4.网络适应能力更强:H.264可以在低于2Mbps的速度实现标清数字图像传送,而H.265/HEVC可以在低于1.5Mbps的传输带宽下,实现1080p全高清视频传输
    • 5.HEVC文件在编码同一个视频时,相比H.264而言文件体积仅是后者的50%,但是可以获得相同的视频质量
    • 6.较之H.264,颜色看起来更好,人为更改看上去更不明显
    • 7.支持 8K(8192×4320) 及以上的分辨率
  • 缺点:

    • 1.兼容性差:兼容很少的浏览器,移动设备中的安卓、IOS,和全部的智能电视/OTT
    • 2.解码难度更大
    • 3.解码视频时对电量消耗高
    • 4.实时编码难度大:H.265编码复杂度较之H.264呈几何增长,编码用时也随之增长,以现有的终端设备难以实现实时编码
    • 5.编码器使用难度大:H.265只是规定了一个可用技术的范围,编码时很多特性可以用,也可以不用。所以H.265编码器的使用难度大概是x264的2-3倍不止
    • 6.专利授权复杂
  • 应用场景:

    为了应对互联网流媒体、通信、视频会议、数字存储媒体和电视广播等各种应用对运动图像更高压缩率的日益增长的需求而开发的。2013年1月26号,HEVC正式成为国际标准,收取版税。

      1. 目前H.265几乎没有在直播领域应用,多在点播领域
      1. 在企业、安防中使用较为广泛
      1. 4K蓝光视频 主要用HEVC

1.1.3 AV1

  • 优点:

    • 1.压缩率高:相比VP9,压缩率进一步提升,同等画质下可比VP9节约30%的码率
    • 2.无需版权费
  • 缺点:

    • 1.编码速度慢
  • 应用场景:

    一个开源、免版权费的视频编码格式,目标是解决H265昂贵的专利费用和复杂的专利授权问题并成为新一代领先的免版权费的编码标准。
    应用场景为流媒体,支持直播和点播。

    对于8K 视频,AV1 的性能优势更为突出,比如现在在油管、奈飞以及亚马逊观看的众多流媒体视频,已经采用AV1编码格式,特别是8K视频

1.1.4 VP9

  • 优点:

    • 1.编码成本低:与AV1相比,VP9可以节省很多编码时间和计算成本。对于观看时间不长的视频,AV1多码率编码带来的成本增加可能会比AV1其节省的流量费用还要多
    • 2.Chrome类浏览器不支持HEVC解码,而VP9内容视频可以通过使用硬件加速在一些主流设备上播放
    • 3.能在低端Android设备上更好的播放:HEVC和AV1在一些低端Android设备上无法很好地播放。对于1080p+或胶片噪声视频,VP9的性能接近HEVC,在某些情况下,VP9的性能有时甚至优于HEVC
    • 4.无需版权费
  • 缺点:

    • 1.应用并不广泛:在实际推广中,微软、苹果等公司不愿看到 VP9 一家独大,其他互联网厂商也不希望主流视频编码格式被垄断,因此目前在主要在 Google 自家的产品中得到支持,其他使用 VP9 的大厂并不多
    • 2.编码速度慢:与HEVC相比,由于没有任何硬件加速编码可供VP9使用所以会更慢一些
    • 3.不适用某些视频播放器播放:如VLC,不能流畅的播放VP9,其他基于FFplay的播放器,比如MPC-VC就没有这个问题
  • 应用场景:

    由Google开发的开放格式、无使用授权费的视频压缩标准。

    • 1.点播
    • 2.互联网应用场景中使用较多:因为VP9 简易、实用的解决方案以及开发免费的特性 1.较之H.265,VP9在压缩比HD还大的视频文件上要更高一筹,因此VP9可能非常适合用于高分辨率VR视频

1.1.5 综合比较

  • 是否需要专利授权费用:

    • H.264(需要)–> H.265(需要)
    • VP9(不需要)–> AV1(不需要)
  • 兼容性:

    H.264 > VP9 > AV1 > HEVC

  • 编码性能:

    AV1和HEVC存在差距

1.2 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

评论区