0、视频基础支持

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

1、分辨率不是越高越好

较高的分辨率也需要较高的码率来支撑,如果分辨率选择 1280 x 720,但码率却指定为 200kbps,画面就会有大量的马赛克。

由于很多硬件编解码器只支持能被 16 整除的像素宽度,所以在使用厂商 SDK 实际编码出的分辨率并不一定完全按照参数自定,而是会自动进行 16 整除修正。
例如 640 x 360 的分辨率,在 SDK 内部有可能会适配为 640 x 368。

可以参考腾讯的文档:分辨率码率参照表

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 160x96 150kbps 250kbps
256x144 16:9 256x144 200kbps 300kbps
320x180 16:9 320x192 250kbps 400kbps
480x270 16:9 480x272 350kbps 550kbps
640x360 16:9 640x368 550kbps 900kbps
960x540 16:9 960x544 850kbps 1300kbps
1280x720 16:9 1280x720 1200kbps 1800kbps
1920x1080 16:9 1920x1088 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视频编解码技术

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

Q.E.D.


Think Big, Act Small