自定义视频渲染
功能描述
实时音视频传输过程中,上层应用可以不用SDK默认的渲染功能,选择对视频帧数据进行自定义渲染。
实现过程
- 加入房间前开启视频自渲染
加入房间前调用接口setExternalVideoFrameOutput打开视频自渲染功能。
//开启远端或者本地的视频自渲染 HRTCImageBufferFormat fileFormat; fileFormat.format = HRTC_VIDEO_IMAGE_FORMAT_YUV420P; fileFormat.bufferType = HRTC_VIDEO_IMAGE_BUFFER_BYTE_ARRAY; rtcEngine->setExternalVideoFrameOutput(true, true, fileFormat);
- 加入房间
参考接口调用流程中加入房间的时序图步骤加入房间。
- 渲染远端视频流
当远端用户加入房间后会触发onRemoteUserOnline回调,在该回调中使用pullRemoteVideo方法开启接收远端用户的视频流,如果不开启,无法渲染远端视频流。
//远端用户加入房间后触发的回调 void HWEngineEventHandler::onRemoteUserOnline(const char* roomId, const char* userId, const char* userName) { // 开启远端视频流接收 rtcEngine->pullRemoteVideo(userId, true); }
- 触发回调
加入房间后sdk会根据前面的参数设置调用onVideoFrameRender回调函数上报本地和远端视频帧数据给上层应用处理。
//自渲染回调 void HWEngineEventHandler::onVideoFrameRender(const char* roomId, HRTCMediaDirection direction, const char* userId, HRTCVideoFrame& videoFrame) { //获取videoFrame,进行数据处理 }