你需要根据业务对视频清晰度和流畅度的要求,选择合适的视频发布参数。比如,在一对一教学场景中,老师和学生的窗口比较大,要求的分辨率会高一点,随之帧率和码率也高;如果是一对四,老师和学生的窗口都比较小,分辨率可以低一点,对应的码率帧率也会低一点,以减少编解码的资源消耗和缓解下行带宽压力。
视频发布参数包括视频分辨率、帧率、码率。在进房间前后都可以进行设置。
宽(px)×高(px)。宽度对应视频显示界面的长边,高度对应视频显示界面的短边。关于视频显示界面的方向模式,参考视频采集旋转方向。15fps。对于分辨率小于 200 × 200 的图像大小,可以使用 10fps。一般来说,帧率不超过 30fps。-1 以使用 SDK 自动设定的码率。视频的分辨率、码率和帧率并非越大越好,且彼此需要维持一个平衡的关系。较高的分辨率需要较高的码率来支撑;码率一定的情况下,帧率过高又会降低视频的分辨率。
上述参数设置的均为理想情况下的最大值。当视频因网络环境等原因无法达到设置的分辨率、帧率或码率的最大值时,会取最接近最大值的那个值。为应对网络或硬件性能波动,RTC 通常建议你使用 推送多路流 和 性能回退 等功能保障网络或硬件性能不佳时的通信体验。
视频通信的单价主要取决于分辨率,参考计费规则。
你应当根据场景需要,选择合适的视频发布参数。以下是一些常见场景的推荐参数。
| 分辨率 | 高(px) | 宽(px) | 帧率(fps) | 默认码率(kbps) | 推荐最高码率(kbps) | 推荐最低码率(kbps) |
|---|---|---|---|---|---|---|
| 蓝光(1080P) | 1080 | 1920 | 20 | 2500 | 3800 | 1000 |
| 超清(720P) | 720 | 1280 | 15 | 1200 | 1900 | 800 |
| 高清(540P) | 540 | 960 | 15 | 1000 | 1520 | 500 |
| 标清(480P) | 480 | 864 | 15 | 800 | 1260 | 320 |
单个主播的视频参数:
| 高(px) | 宽(px) | 帧率(fps) | 码率(kbps) |
|---|---|---|---|
| 540 | 960 | 15 | 1200 |
| 360 | 640 | 15 | 800 |
| 270 | 480 | 15 | 600 |
| 248 | 432 | 15 | 400 |
| 窗口 | 高(px) | 宽(px) | 帧率(fps) | 码率(kbps) |
|---|---|---|---|---|
| 大窗 | 360 | 640 | 15 | 800 |
| 小窗 | 320 | 360 | 15 | 400 |
| 窗口 | 高(px) | 宽(px) | 帧率(fps) | 码率(kbps) |
|---|---|---|---|---|
| 主播窗口 | 540 | 960 | 15 | 1200 |
| 观众窗口 | 240 | 240 | 15 | 360 |
示意图如下:
1V6:

1V1:

1V2:

四宫格:

六宫格:

九宫格:

| 布局类型 | 窗口 | 高(px) | 宽(px) | 帧率(fps) | 码率(kbps) |
|---|---|---|---|---|---|
| 1V6 | 主播窗口 | 540 | 960 | 15 | 1200 |
| 1V6 | 嘉宾窗口 | 256 | 256 | 15 | 300 |
| 1V1 | / | 360 | 360 | 15 | 800 |
| 1V2 | 大窗口 | 360 | 640 | 15 | 800 |
| 1V2 | 小窗口 | 320 | 360 | 15 | 500 |
| 四宫格 | / | 320 | 360 | 15 | 500 |
| 六宫格 | 小窗口 | 240 | 320 | 15 | 400 |
| 九宫格 | 小窗口 | 240 | 240 | 15 | 280 |
| 窗口 | 高(px) | 宽(px) | 帧率(fps) | 码率(kbps) |
|---|---|---|---|---|
| 大窗口 | 540 | 960 | 15 | 1200 |
| 小窗口 | 256 | 256 | 15 | 300 |
| 高(px) | 宽(px) | 帧率(fps) | 码率(kbps) |
|---|---|---|---|
| 540 | 720 | 15 | 1000 |
| 高(px) | 宽(px) | 帧率(fps) | 码率(kbps) |
|---|---|---|---|
| 368 | 640 | 15 | 800 |
从观看感受来看,视频的分辨率、码率和帧率当然是越大越好。但实际业务中,你必须考虑到业务需要,设备性能,网络环境,流量费用等实际情况,选择合适的视频发布参数方案。总体来说,较高的分辨率需要较高的码率来支撑;码率一定的情况下,帧率过高又会降低视频的分辨率。我们建议你使用 SDK 默认的视频编码码率。
你可以参考下表,根据设定的视频分辨率,选择实际业务中使用的帧率和码率:
| 分辨率 (宽 × 高) | 帧率 (fps) | 流畅优先时建议码率 (kbps) | 画质优先时建议码率 (kbps) | 游戏场景下建议码率(kbps) |
|---|---|---|---|---|
| 160 × 120 | 15 | 65 | 130 | / |
| 120 × 120 | 15 | 50 | 100 | / |
| 320 × 180 | 15 | 140 | 280 | / |
| 180 × 180 | 15 | 100 | 200 | / |
| 240 × 180 | 15 | 120 | 240 | / |
| 320 × 240 | 15 | 200 | 400 | / |
| 240 × 240 | 15 | 140 | 280 | / |
| 424 × 240 | 15 | 220 | 440 | / |
| 640 × 360 | 15 | 400 | 800 | / |
| 360 × 360 | 15 | 260 | 520 | / |
| 640 × 360 | 30 | 600 | 1200 | / |
| 360 × 360 | 30 | 400 | 800 | / |
| 480 × 360 | 15 | 320 | 640 | / |
| 480 × 360 | 30 | 490 | 980 | / |
| 640 × 480 | 15 | 500 | 1000 | / |
| 480 × 480 | 15 | 400 | 800 | / |
| 640 × 480 | 30 | 750 | 1500 | / |
| 480 × 480 | 30 | 600 | 1200 | / |
| 848 × 480 | 15 | 610 | 1220 | / |
| 848 × 480 | 30 | 930 | 1860 | / |
| 640 × 480 | 10 | 400 | 800 | / |
| 1280 × 720 | 15 | 1130 | 2260 | / |
| 1280 × 720 | 30 | 1710 | 3420 | / |
| 960 × 720 | 15 | 910 | 1820 | / |
| 960 × 720 | 30 | 1380 | 2760 | / |
| 1920 × 1080 | 15 | 2080 | 4160 | / |
| 1920 × 1080 | 30 | 3150 | 6300 | / |
| 1920 × 1080 | 60 | 4780 | 6500 | / |
| 2048 × 1080 | 60 | / | / | 8000 |
| 4096 × 2160 | 60 | / | / | 20000 |
在各个平台上,你都可以设置视频发布参数:
| 平台 | API |
|---|---|
| Android | setVideoEncoderConfig |
| iOS | SetVideoEncoderConfig: |
| Mac | SetMaxVideoEncoderConfig: |
| Windows | SetVideoEncoderConfig |
在进入 RTC 房间前后,你都可以设置视频发布参数。我们建议你在开启直播前设置视频发布参数,这样可以加快首帧出图。