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 | 媒體軌道類型: |
enable | Bool |
|
控制流程程
典型的媒體流量控制流程如下:
使用樣本(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再接收媒體資料,建議統一採用"先禁用、後開啟"模式。 - 獨立控制:音頻和視頻可獨立控制,例如僅發送音頻不發送視頻。
常見情境
情境 | 操作 | 說明 |
|---|---|---|
串連模型前 |
| 等待 session.updated 再發送 |
收到 session.updated |
| AI 已就緒,開始發送 |