-
网速:ISP提供的网络服务下载速度,单位为Mbps,兆比特每秒,b为bit,B为Byte
例如网速 1Mbps=1*1024/8KBps,约等于 128KB/s 实际场景中还需扣除约 12% 的信息头标识等各种控制讯号,理论速度为 112KB/s
-
码率:同分辨率下,码率越高越清晰。在直播场景中,面对复杂网络场景,可以通过检测网速自适用调整码率大小
-
帧率:影响画面流畅度,帧率越大,画面越流畅不晃眼不卡顿;一般帧率小于24,人眼感觉到卡顿。直播可适当调低fps,可降低发包频率,降低对不可靠网络的影响
-
分辨率:影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。
-
清晰度:在码率一定的情况下,分辨率越大清晰度越低越模糊;在分辨率一定的情况下,码率越高,图像越清晰。在直播场景中分辨率一定的情况下,可动态调整码率来适配网速变化
-
fps:有的编码器 fps 设置的是期望值,未必生效,可通过采集端设置帧率采集;帧率越大,画面越流畅,通话场景建议设置15,单位时间推送的数据次数变小,减少网络抖动影响
-
分辨率:并非越大越好。屏幕小的设备可设置采集端小点的分辨率,对应码率设置可找 分辨率与码率对应关系,此处通过宽*高简单计算
-
gop:直播场景中,可将gop调整至2s内,可降低出图时长,双向通话由于是从IDR帧启始传输,可将gop稍调长一些,在 WebRTC 里,每 7200 帧要编一个关键帧,或者每 240s 要编一个关键帧。在码率不变的前提下,GOP值越大更容易获取较好的图像质量;但需注意gop过大会在场景切换时,容易造成长时间大片模糊
-
Android 当中 VBR 在画面内容保持静止时,码率会降得很低,一旦画面内容开始动起来,码率上升速度会跟不上,就会导致画面质量很差; VBR 上调码率后,有可能导致中间网络路径的丢包/延迟增加,进而导致问题; CBR 会存在关键帧后的几帧内容模糊的问题,如果关键帧间隔较短,画面就会模糊--清晰--模糊--清晰; WebRTC 使用的方案是 CBR + 长关键帧间隔来增强画面质量;
-
iOS VideoToolBox 框架只支持ABR模式,介于VBR和CBR之间
-
码率的设置需要与网络环境达到平衡,码率越小,传输内容越少,受网络波动越小,画面越模糊。网络环境较差情况下,码率越大容易造成卡顿
- 参考分辨率,码率对应表
分辨率(宽 * 高) | 帧率 (fps) | 视频通话场景(Kbps) | 直播场景(Kbps) | 全帧率(Kbps) |
---|---|---|---|---|
352 * 288 | 15 | 100 | 300 | 768 |
640 * 480 | 15 | 300 | 900 | 1536 |
1280 * 720 | 15 | 920 | 2100 | 3072 |
1920 * 1080 | 15 | 2070 | 4096 | 8192 |