Tencent RTC 集成与开发常见问题 (1)

2021-09-22 11:15:51 浏览数 (1)

问题: 通过QWidget::winId()获取到窗口ID赋值给TRTC渲染,为什么无法看到效果?

答:这个是新手常见的问题,由于QT内部有一套自己的渲染逻辑,渲染可能被QT的逻辑覆盖,或者这个ID不是实际可渲染的对象(以Windows为例子,这个ID不是Windows的窗口句柄)。

解决办法:

1.通过QOpenGLWidget相关类的winId给TRTC。

2.通过TRTC的自定义渲染。(推荐自定义渲染,避免与QT渲染逻辑冲突产生更多的问题,比如透明UI渲染错误等)

问题:WPF框架继承TRTC渲染闪烁或无法渲染。

答:这个问题和上面QT渲染产生原因都是大同小异,WPF框架有一套自己的渲染逻辑,TRTCSDK与WPF两个渲染相互覆盖产生冲突。只要保障只有一个在渲染即可,可以禁用框架渲染,使用SDK自定义渲染,自己处理渲染逻辑。

解决办法:

1.通过TRTC的自定义渲染。(建议一些UI框架的走自定义渲染)

问题:控制台应用调用进房等接口,收不到回调。伪代码如下:

代码语言:c 复制
int main(int argc, char *argv[])
{
    //
    trtcCloud->addCallback(cb);
    trtcCloud->enterRoom(params ...);
    //等待进房回调
    system("pause");
}

答:需要注意的是,回调大部分需要通过主线程的消息循环,由于大部分窗口项目会自带一个消息循环,所以基本不需要您做这个操作。你需要维持一个主线程消息循环,改正后伪代码如下:

代码语言:c 复制
int main(int argc, char *argv[])
{
    //
    trtcCloud->addCallback(cb);
    trtcCloud->enterRoom(params ...);
    
    //替换pause
    //system("pause");
    BOOL bRet;

    while( (bRet = GetMessage( &msg, hWnd, 0, 0 )) != 0) { 
        if (bRet == -1) {
        }
        else {
            TranslateMessage(&msg); 
            DispatchMessage(&msg); 
        }
    }
}

问题:TRTC房间内观看其他用户的视频,一会儿模糊,一会儿清晰,有闪烁。

答:这个是由于SDK内部根据设备状态预测调整码率造成的,属于正常现象。如果是用的老版本建议升级,从腾讯官方网站中提供的更新日志来看,基本每个版本都在优化这个策略。

解决办法:

1.调高码率能提升观感。原因在于高码率在同样的码率波动下用户很难察觉到,比如说低码率同等分辨率:100目标码率,SDK自动调整码率10,那么就是10%的码率波动,观看者非常容易察觉,1000码率,SDK调整了20,只有2%的码率波动,观看者基本没感觉。

2.调整网络。

3.设置SDK内部策略为“清晰优先”。

0 人点赞