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

5.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 策略能够更加有效地发挥作用,带来更好的传输效能。

6.谈H.323和SIP协议两者的区别

参考:https://developer.aliyun.com/article/127283

Q.E.D.


Think Big, Act Small