跳转到主要内容
AOQ SDK 功能

媒体流发送管理

AOQ SDK 媒体流发送的启停控制

enableSendMediaStream用于控制客户端是否向 AI 服务发送音频/视频媒体流,在 AOQ 协议接入场景中精确控制发送时机。

概述

enableSendMediaStream用于控制客户端是否向 AI 服务发送音频/视频媒体流。在 AOQ 协议接入场景中,部分模型要求在收到session.updated确认后才能接收媒体数据,因此需要通过此接口精确控制发送时机。

API 定义

  • iOS / Mac
  • Android
  • HarmonyOS (ArkTS)
// iOS / Mac
func enableSendMediaStream(_ trackType: AoqTrackType, enable: Bool)
参数说明:
参数类型说明
trackTypeAoqTrackType媒体轨道类型:.audio.video
enableBooltrue= 开启发送,false= 暂停发送

控制流程

典型的媒体流控制流程如下:
媒体流控制流程

使用示例(iOS Swift)

connect 前禁用发送

// 连接前关闭音视频发送,避免模型未就绪时收到数据
engine.enableSendMediaStream(.audio, enable: false)
engine.enableSendMediaStream(.video, enable: false)
// 发起连接
engine.connect(config)

收到 session.updated 后开启

func onDataMsg(_ msg: AoqDataMsg) {
  guard let obj = try? JSONSerialization.jsonObject(with: msg.data) as? [String: Any],
        let type = obj["type"] as? String else { return }
  if type == "session.updated" {
    // AI 侧已确认会话配置,开启媒体发送
    engine.enableSendMediaStream(.audio, enable: true)
    engine.enableSendMediaStream(.video, enable: true)
  }
}

注意事项

  • 调用时机:必须在createEngine之后调用,引擎未创建时调用无效。
  • 默认行为:如果不调用此接口,connect 成功后 SDK 会立即开始发送媒体流。
  • 模型兼容性:部分模型要求先收到session.updated再接收媒体数据,建议统一采用"先禁用、后开启"模式。
  • 独立控制:音频和视频可独立控制,例如仅发送音频不发送视频。

常见场景

场景操作说明
连接模型前enable(.audio, false)等待 session.updated 再发送
收到 session.updatedenable(.audio, true)AI 已就绪,开始发送