更新时间:2023-10-26 GMT+08:00
分享

自定义视频渲染

功能描述

实时音视频传输过程中,上层应用可以不用SDK默认的渲染功能,选择对视频帧数据进行自定义渲染。

接口调用流程

实现过程

  1. 加入房间前开启视频自渲染

    加入房间前调用接口setExternalVideoFrameOutput打开视频自渲染功能。

    //开启远端或者本地的视频自渲染
    HRTCImageBufferFormat fileFormat;
    fileFormat.format = HRTC_VIDEO_IMAGE_FORMAT_YUV420P;
    fileFormat.bufferType = HRTC_VIDEO_IMAGE_BUFFER_BYTE_ARRAY;
    rtcEngine->setExternalVideoFrameOutput(true, true, fileFormat);
  2. 加入房间

    参考接口调用流程中加入房间的时序图步骤加入房间。

  3. 渲染远端视频流

    当远端用户加入房间后会触发onRemoteUserOnline回调,在该回调中使用pullRemoteVideo方法开启接收远端用户的视频流,如果不开启,无法渲染远端视频流。

    //远端用户加入房间后触发的回调
    void HWEngineEventHandler::onRemoteUserOnline(const char* roomId, const char* userId, const char* userName) {
        // 开启远端视频流接收
        rtcEngine->pullRemoteVideo(userId, true);
    } 
  4. 触发回调

    加入房间后sdk会根据前面的参数设置调用onVideoFrameRender回调函数上报本地和远端视频帧数据给上层应用处理。

    //自渲染回调
    void HWEngineEventHandler::onVideoFrameRender(const char* roomId, HRTCMediaDirection direction, const char* userId, HRTCVideoFrame& videoFrame) {
        //获取videoFrame,进行数据处理
    }

相关文档