实时音视频 SparkRTC-常见问题
常见问题
- 调用加入房间接口成功后,再调用pushExternalVideoFrame返回90000001 SDK内部系统错误
需要收到加入房间成功回调通知后,才能调用pushExternalVideoFrame。
- joiner和player都加入房间成功,joiner调用pushExternalVideoFrame返回0,但是player没有收到onRenderVideoFrame回调
需要接收端在收到onUserJoined消息后,在主线程里调用pullRemoteVideo和startRemoteStreamView。
- startRemoteStreamView会返回90000008设置远端窗口失败错误
startRemoteStreamView的调用是需要放在主线程,不能在onUserJoined调用,否则会返回90000008错误码。
- 1080p经过RTC传输后,被自动缩放且颜色改变
老版本SDK不支持1080p。
- 推流1080p,接收到的是360p的流
关闭发送端设置发流编码参数分辨率自适应,关闭收端分辨率自适应。
int setVideoEncoderConfig(unsigned int totalBitRate, HRTCVideoEncParam *encoderParams, unsigned int encoderCount) // HRTCVideoEncParam.disableAdjustRes=trueint setVideoEncoderConfig(const HRTCVideoEncParam &encParam) // HRTCVideoEncParam.disableAdjustRes=trueint startRemoteStreamView(const char* userId, view_t view, HR TCS treamType streamType, bool disableAdjustRes) // disableAdjustRes=true
- rtc设置了音频的自渲染和自采集,但是不推音频的pcm数据,onPlaybackAudioFrame也会收到回调
这是正常现象,SDK会定时回调onPlaybackAudioFrame,里面是空白语音包。
- 自渲染没有图像
onVideoFrameRender回调函数实现中,y、u、v分量需要按如下方式获取:
virtual bool onVideoFrameRender(const char* userId, HRTCVideoFrame& videoFrame){Frame frame;frame.width = videoFrame.width;frame.height = videoFrame.height;frame.yBuf = videoFrame.data;frame.uBuf = videoFrame.data + videoFrame.width * videoFrame.height; //宽*高frame.vBuf = videoFrame.data + videoFrame.width * videoFrame.height * 5 / 4; // 宽*高*5/4frame.yStride = videoFrame.Stride;frame.uStride = videoFrame.Stride / 2;frame.vStrides = videoFrame.Stride / 2;//用frame取渲染窗口return true;}