tencent cloud

文档反馈

Android&iOS&Windows&Mac

最后更新时间:2022-07-20 14:26:08

    本文档主要介绍如何使用 TRTC SDK 实现自定义视频采集和渲染,分为:视频采集、视频渲染两个部分。

    自定义视频采集

    TRTC SDK 的自定义视频采集功能的开启分为两步,即:开启功能、发送视频帧给 SDK,具体 API 使用步骤见下文,同时我们也提供有对应平台的的API-Example:

    开启自定义视频采集功能

    首先,您需要调用 TRTCCloud 的 enableCustomVideoCapture 接口开启 TRTC SDK 自定义视频采集的功能,开启后会跳过 TRTC SDK 自己的摄像头采集和图像处理逻辑,仅保留编码和传输能力,示例代码如下:

    TRTCCloud mTRTCCloud = TRTCCloud.shareInstance();
    mTRTCCloud.enableCustomVideoCapture(TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG, true);

    发送自定义视频帧

    然后您就可以使用 TRTCCloud 的 sendCustomVideoData 接口向 TRTC SDK 发送您自己的视频数据,示例代码如下:

    说明:

    为了避免不必要的性能损失,对于输入 TRTC SDK 的视频数据,在不同平台上有不同的格式要求,更多信息,详见我们的 API 文档:简体中文 English

    // Android 平台有 Buffer 和 Texture 两种方案,此处以 Texture 方案为例,推荐!
    TRTCCloudDef.TRTCVideoFrame videoFrame = new TRTCCloudDef.TRTCVideoFrame();
    videoFrame.texture = new TRTCCloudDef.TRTCTexture();
    videoFrame.texture.textureId = textureId;
    videoFrame.texture.eglContext14 = eglContext;
    videoFrame.width = width;
    videoFrame.height = height;
    videoFrame.timestamp = timestamp;
    videoFrame.pixelFormat = TRTCCloudDef.TRTC_VIDEO_PIXEL_FORMAT_Texture_2D;
    videoFrame.bufferType = TRTCCloudDef.TRTC_VIDEO_BUFFER_TYPE_TEXTURE;
    mTRTCCloud.sendCustomVideoData(TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG, videoFrame);

    自定义视频渲染

    自定义渲染主要分为:本地预览画面的渲染、和远端用户画面的渲染,基本原理:设置本地/远端的自定义渲染回调,然后 TRTC SDK 会通过回调函数onRenderVideoFrame中传递出来对应的视频帧(即TRTCVideoFrame),然后就开发者可以根据收到的视频帧进行自定义渲染了,这个流程需要具备一定的OpenGL 基础,我们也提供有对应平台的的API-Example:

    设置本地预览画面的渲染回调

    mTRTCCloud.setLocalVideoRenderListener(TRTCCloudDef.TRTC_VIDEO_PIXEL_FORMAT_Texture_2D, TRTCCloudDef.TRTC_VIDEO_BUFFER_TYPE_TEXTURE, new TRTCCloudListener.TRTCVideoRenderListener() {
    @Override
    public void onRenderVideoFrame(String suserId int streamType, TRTCCloudDef.TRTCVideoFrame frame) {
    // 详见TRTC-API-Example 中自定义渲染的工具类:com.tencent.trtc.mediashare.helper.CustomFrameRender
    }
    });

    设置远端用户画面的渲染回调

    mTRTCCloud.setRemoteVideoRenderListener(userId, TRTCCloudDef.TRTC_VIDEO_PIXEL_FORMAT_I420, TRTCCloudDef.TRTC_VIDEO_BUFFER_TYPE_BYTE_ARRAY, new TRTCCloudListener.TRTCVideoRenderListener() {
    @Override
    public void onRenderVideoFrame(String userId, int streamType, TRTCCloudDef.TRTCVideoFrame frame) {
    // 详见TRTC-API-Example 中自定义渲染的工具类:com.tencent.trtc.mediashare.helper.CustomFrameRender
    }
    });
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持