Skip to main content
功能參考

媒體流發送管理

enableSendMediaStream 用於控制用戶端是否向 AI 服務發送音頻/視頻媒體流,在 AOQ 協議接入情境中精確控制發送時機。

概述

enableSendMediaStream 用於控制用戶端是否向 AI 服務發送音頻/視頻媒體流。在 AOQ 協議接入情境中,部分模型要求在收到 session.updated 確認後才能接收媒體資料,因此需要通過此介面精確控制發送時機。

API 定義

iOS / Mac
// iOS / Mac
func enableSendMediaStream(_ trackType: AoqTrackType, enable: Bool)
Android
// Android
void enableSendMediaStream(AoqTrackType trackType, boolean enable)
OHOS (ArkTS)
// OHOS (ArkTS)
enableSendMediaStream(trackType: AoqTrackType, enable: boolean): void
參數說明:

參數

類型

說明

trackType

AoqTrackType

媒體軌道類型:.audio.video

enable

Bool

true = 開啟發送,false = 暫停發送

控制流程程

典型的媒體流量控制流程如下:
111

使用樣本(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.updated

enable(.audio, true)

AI 已就緒,開始發送