实时音视频

  • 实时音视频 > 使用指南 > Android >视频大小流

    视频大小流

    最近更新时间: 2023-08-17 15:51:54

    本文主要介绍视频大小流的使用方式。

    功能介绍

    大小流示意图

    当用户 A 开启大流时,会发送多个不同分辨率的视频码流到服务端;此时,不同的用户需要订阅 A 的视频流时可以根据自己的需要或者服务端的策略来订阅到不同质量的视频流。

    开启大小流

    在创建音视频 Track 时,可以通过 Track config 提供的 setMultiProfileEnabled 接口来启用大小流功能,以 QNCameraVideoTrack 为例,其启用方式如下:

    QNCameraVideoTrackConfig cameraVideoTrackConfig = new QNCameraVideoTrackConfig(TAG_CAMERA)
            .setMultiProfileEnabled(true); // 配置启用大小流
    mCameraVideoTrack = QNRTC.createCameraVideoTrack(cameraVideoTrackConfig);
    

    开启大小流功能后,发送端可以通过获取统计信息的接口 QNRTCClient.getLocalVideoTrackStats 来感知发送情况。

    订阅大小流

    订阅端可以通过 QNRemoteVideoTrack.isMultiProfileEnabled 接口判断远端用户是否发布大小流。若接口返回 true,则可通过 QNRemoteVideoTrack.setProfile 来订阅指定的 QNTrackProfile。

    示例代码如下:

    if (remoteVideoTrack.isMultiProfileEnabled()) {
        remoteVideoTrack.setProfile(QNTrackProfile.MEDIUM);
    }
    

    注意:setProfile 接口仅是设置预期的流等级,并不代表实际的订阅等级,若实际发送端还未发送指定等级的流,则将无法订阅到指定的 profile

    当订阅指定 profile 生效后,将通过回调 QNTrackInfoChangedListener.onVideoProfileChanged 告知,具体使用方式如下:

    remoteVideoTrack.setTrackInfoChangedListener(new QNTrackInfoChangedListener() {
        @Override
        public void onVideoProfileChanged(QNTrackProfile profile) {
            // 当订阅的 profile 发生改变时触发,该 profile 为当前实际订阅到的 profile
        }
    });
    

    注意事项

    • 开启大小流功能设置编码宽高最低为 1280 x 720
    • 目前仅支持在发送端发布单路视频 Track 的场景下,使用大小流功能
    • 大小流场景下,需确保在创建视频 Track 时通过 QNVideoEncoderConfig 将视频降级模式 QNDegradationPreference 设置为 QNDegradationPreference.MAINTAIN_RESOLUTION 或者 QNDegradationPreference.ADAPT_BITRATE_ONLY,保证推流分辨率不会改变
    • 对于开启大小流的用户,建议保证有良好的网络环境,保证多流发送质量

    示例代码

    大小流场景的示例代码可参考 QNRTC-API-Examples

    以上内容是否对您有帮助?
  • Qvm free helper
    Close