开发者社区 问答 正文

mPaaS音视频通话拉流相关的文档能提供一下吗?

mPaaS音视频通话拉流相关的文档能提供一下吗?https://help.aliyun.com/document_detail/372593.html?spm=a2c4g.372591.0.i0
我在这边只看到了创建和加入房间的api

展开
收起
真的很搞笑 2024-04-15 15:45:38 34 分享 版权
阿里云 AI 助理回答

在 mPaaS 音视频通话中,拉流相关的功能主要通过订阅音视频流的接口实现。以下是关于拉流相关文档的详细说明和操作步骤:


1. 拉流的核心概念

拉流是指从服务器或其他参与者处获取音视频数据并进行播放的过程。在 mPaaS 音视频通话中,拉流的操作通过 Subscribe 接口完成。


2. 拉流的关键接口:Subscribe

以下是 Subscribe 接口的定义和参数说明:

接口定义

struct SubscribeParam {
    SubscribeParam(): enableVideo(false), enableAudio(true) {}
    bool enableVideo;  // 是否订阅视频流
    bool enableAudio;  // 是否订阅音频流
    std::string streamId;  // 要订阅的流标识(每个发布者有唯一的流 ID)
};

void Subscribe(const SubscribeParam& subParam);

参数说明

  • enableVideo:是否订阅视频流,默认为 false
  • enableAudio:是否订阅音频流,默认为 true
  • streamId:要订阅的流的唯一标识。房间内的每个发布者都有一个对应的流 ID,用于指定订阅哪个参与者的音视频流。

3. 拉流的操作流程

以下是拉流的具体操作步骤:

步骤 1:加入房间

在拉流之前,需要先加入房间。可以通过 JoinRoom 接口完成房间的加入操作。

struct JoinRoomParam {
    std::string roomId;       // 房间 ID
    std::string uid;          // 用户 ID
    std::string sign;         // 签名
    std::string bizName;      // 业务名称
    std::string subBiz;       // 子业务名称
    std::string token;        // 加入房间的凭证
    std::string workspaceId;  // 工作空间 ID(mPaaS 类业务需要填写)
    bool autoSubscribe;       // 是否自动订阅房间内发布的音视频流
    EngineType engine;        // 媒体数据传输模式(默认使用 SFU 模式)
    std::string ext;          // 扩展字段(暂未使用)
};

void JoinRoom(const JoinRoomParam& joinParam);
  • autoSubscribe 参数:
    • 如果设置为 true,则会自动订阅房间内所有发布者的音视频流,无需手动调用 Subscribe
    • 如果设置为 false,则需要手动调用 Subscribe 接口订阅特定的流。

步骤 2:订阅音视频流

根据需求调用 Subscribe 接口订阅特定的音视频流。例如:

SubscribeParam subParam;
subParam.enableVideo = true;  // 订阅视频流
subParam.enableAudio = true;  // 订阅音频流
subParam.streamId = "stream123";  // 指定要订阅的流 ID
Subscribe(subParam);

4. 高级功能与注意事项

高级功能

  • 动态调整订阅内容:可以根据网络状况或用户需求动态调整订阅的音视频流。例如,当带宽不足时,可以选择仅订阅音频流。
  • 多流管理:房间内可能存在多个发布者,每个发布者对应一个流 ID。通过 streamId 参数可以灵活选择订阅的目标流。

注意事项

  • 流 ID 的获取:流 ID 通常由发布者生成,并在房间内广播。订阅方需要确保获取到正确的流 ID。
  • 自动订阅模式:如果启用了 autoSubscribe,则无需手动调用 Subscribe 接口,但可能会增加带宽消耗。
  • 错误处理:订阅失败时,SDK 会通过统一的错误回调接口通知业务层,请确保正确处理相关错误码。

5. 示例代码

以下是一个完整的拉流示例代码:

// 加入房间
JoinRoomParam joinParam;
joinParam.roomId = "room123";
joinParam.uid = "user1";
joinParam.sign = "signature";
joinParam.bizName = "biz123";
joinParam.subBiz = "subBiz123";
joinParam.token = "token123";
joinParam.workspaceId = "workspace123";
joinParam.autoSubscribe = false;  // 手动订阅
JoinRoom(joinParam);

// 订阅音视频流
SubscribeParam subParam;
subParam.enableVideo = true;
subParam.enableAudio = true;
subParam.streamId = "stream123";  // 指定流 ID
Subscribe(subParam);

6. 相关组件支持

在小程序或 Web 端,可以通过音视频通话组件实现拉流功能。以下是组件的相关说明:

组件属性

  • config:配置对象,包含拉流所需的参数。
  • currentUserId:当前播放内容的用户 ID,用于切换播放目标。

组件事件

  • onPlayerChange:用户播放界面切换事件。
  • onUserChange:用户变化事件。
  • onError:通用报错事件。

使用示例

<rtc
 config="{{ config }}"
 currentUserId="{{ currentUserId }}"
 onPlayerChange="handlePlayerChange"
 onUserChange="handleUserChange"
 onError="handleError"
/>

7. 总结

通过上述接口和组件,您可以实现 mPaaS 音视频通话中的拉流功能。核心操作包括加入房间和订阅音视频流,同时支持动态调整订阅内容和处理错误。请根据实际需求选择自动订阅或手动订阅模式,并确保正确处理流 ID 和错误回调。

如果您需要更详细的代码示例或进一步的技术支持,请参考 mPaaS 官方文档或联系技术支持团队。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答