【最佳实践】巡检项:实时音视频 (TRTC) 原生平台 SDK 视频码率设置是否合理

2023-04-23 11:47:21 浏览数 (2)

问题/风险描述:

在直播场景中,主播的推流分辨率已经设置为1080p,但观众端看到的画面还是很模糊。通过分析这个案例,发现问题不是出现在推流端分辨率过低导致的模糊。从仪表盘上观察推流数据发现,上行分辨率是1080p,但是推流的码率过低。1080p x 15fps的码率只有500kbps左右,在排除了推流端的网络带宽不足情况,跟客户确认了,应用侧设置码率是只有500kbps。

根据客户提供推流参数,我们对比复现了在相同1080p分辨率下,分别用1000kbps和500kbps的码率在直播模式下进行了测试。

如下图所示,在500kbps的码率下,即使是1080p的分辨率,画面相比1000kbps要模糊不小,所以判断这个案例是因为用客户设置的码率过低,编码器把画面压缩比设置过大,导致的画面细节丢失而产生的模糊现象。

1000kbps画面质量1000kbps画面质量
500kbps画面质量500kbps画面质量
 设置1000kbps推流 设置1000kbps推流
设置500kbps推流设置500kbps推流

解决方案:

根据上面的分析得知,因为没有正确设置推流端的码率,码率过小情况下,即使是带宽充足也会出现视频画面模糊问题。

解决办法是根据推流端画面分辨率和帧率,然后参考这里的表格设置适合的码率:实时音视频 设定画面质量 - 无 UI 集成方案 - 文档中心 - 腾讯云

下面是设置Native SDK推流端分辨率、码率的代码:

代码语言:javascript复制
TRTCCloudDef.TRTCVideoEncParam param = new TRTCCloudDef.TRTCVideoEncParam();
param.videoResolution = TRTCCloudDef.TRTC_VIDEO_RESOLUTION_1920_1080;
// 设置码率 2000kbps
param.videoBitrate = 2000;
// 设置最小码率 1200kbps
param.minVideoBitrate = 1200;
param.videoResolutionMode = TRTC_VIDEO_RESOLUTION_MODE_PORTRAIT;
param.enableAdjustRes = false;
param.videoFps = 25;
mTRTCCloud.setVideoEncoderParam(param);

注意事项:

在不同的场景对画面的质量要求是不一样的,应该根据场景设置适合的码率,比如广播影视比普通视频通话对画面要求要高得多,这时候可以设置更高的码率。

另外,如果设置最小码率,SDK会根据用户带宽自动调整码率,在带宽不足情况下,牺牲画面质量来保持通话的流畅性。

0 人点赞