AOQ Client SDK iOS API 參考,涵蓋引擎生命週期、音視頻裝置管理、編碼配置、媒體流量控制、音頻檔案播放、外部音頻流、即時訊息、幀回調、委託協議以及資料類型與枚舉。
目錄
引擎生命週期
介面 | 簡介 |
|---|---|
createEngine:delegate: | 建立引擎執行個體(單例模式) |
destroy | 銷毀引擎執行個體 |
getVersion | 擷取 SDK 版本號碼 |
connect: | 串連 Relay 伺服器 |
disconnect | 斷開伺服器串連 |
音訊裝置管理
介面 | 簡介 |
|---|---|
startAudioCapture: | 開啟音頻採集裝置(麥克風) |
stopAudioCapture | 關閉音頻採集裝置 |
muteAudioCapture: | 靜音或取消靜音音頻採集 |
startAudioPlayer: | 開始音頻渲染(播放遠端音頻) |
stopAudioPlayer | 停止音頻渲染 |
pauseAudioPlayer: | 暫停音頻渲染,支援淡出 |
resumeAudioPlayer: | 恢複音頻渲染,支援淡入 |
interruptAudioPlayer:fadeMs: | 打斷本輪語音通話 |
enableSpeakerphone: | 切換音訊輸出到擴音器或耳機 |
isSpeakerphoneEnabled | 查詢當前是否使用擴音器輸出 |
setAudioSessionRestriction: | 設定 AVAudioSession 控制許可權 |
音頻編碼配置
介面 | 簡介 |
|---|---|
setAudioEncoderConfig: | 設定音頻編碼參數 |
setAudioDecoderConfig: | 設定音頻解碼參數 |
視頻裝置管理
介面 | 簡介 |
|---|---|
startVideoCapture: | 開啟視頻採集裝置(網路攝影機) |
stopVideoCapture | 關閉視頻採集裝置 |
switchCamera: | 切換前後置網路攝影機 |
setLocalView:canvas: | 設定或移除本地視頻渲染視窗 |
setRemoteView:canvas: | 設定或移除遠端視頻渲染視窗 |
視頻編碼與外部輸入
介面 | 簡介 |
|---|---|
setVideoEncoderConfig: | 設定視頻編碼參數 |
pushExternalVideoCapturedFrame:frame: | 推送外部採集視訊框架 |
pushExternalVideoEncodedFrame:frame: | 推送外部已編碼視訊框架 |
媒體流發送控制
介面 | 簡介 |
|---|---|
enableSendMediaStream:enable: | 控制本地媒體流的發送開關 |
音頻檔案播放
介面 | 簡介 |
|---|---|
startAudioFile:config: | 開始推流播放本地音頻檔案 |
stopAudioFile: | 停止音頻檔案播放 |
pauseAudioFile: | 暫停音頻檔案播放 |
resumeAudioFile: | 恢複音頻檔案播放 |
getAudioFileDuration: | 擷取音頻檔案總時間長度 |
getAudioFileCurrentPosition: | 擷取音頻檔案當前播放位置 |
setAudioFilePositionMillis:positionMillis: | 設定音頻檔案播放位置(seek) |
setAudioFileVolume:type:volume: | 設定音頻檔案音量 |
getAudioFileVolume:type: | 擷取音頻檔案當前音量 |
外部音頻流
介面 | 簡介 |
|---|---|
addAudioExternalStream:config: | 新增一條外部音頻流 |
removeAudioExternalStream: | 移除外部音頻流 |
pushAudioExternalStreamData:data: | 輸入外部音頻 PCM 資料 |
setAudioExternalStreamVolume:type:volume: | 設定外部音頻流音量 |
getAudioExternalStreamVolume:type: | 擷取外部音頻流音量 |
clearAudioExternalStreamBuffer:fadeoutMs: | 清空外部音頻流緩衝 |
即時訊息
介面 | 簡介 |
|---|---|
sendDataMsg: | 發送即時資料訊息 |
音訊框架回調
介面 | 簡介 |
|---|---|
setAudioFrameObserver: | 設定音訊框架資料回調 delegate |
enableAudioFrameObserver:audioSource:config: | 開啟或關閉指定位置的音訊框架回調 |
視訊框架回調
介面 | 簡介 |
|---|---|
setVideoFrameObserver: | 設定視訊框架資料回調 delegate |
enableVideoFrameObserver:videoSource:config: | 開啟或關閉指定位置的視訊框架回調 |
AoqEngineDelegate 回調
回調 | 簡介 |
|---|---|
onError:message: | 引擎錯誤回調 |
onWarning:message: | 引擎警告回調 |
onConnectionStatusChange: | 串連狀態變化回調 |
onStats: | 統計資料回調 |
onAudioDeviceStateChanged: | 音訊裝置操作狀態變化回調 |
onAudioDeviceRouteChanged: | 音訊輸出路由變化回調 |
onAudioDeviceInterrupted: | 音訊裝置中斷回調 |
onVideoDeviceStateChanged: | 視頻裝置操作狀態變化回調 |
onAudioFileState: | 音頻檔案播放狀態回調 |
onDataMsg: | 收到即時資料訊息回調 |
AoqAudioFrameDelegate | 音訊框架資料監聽協議 |
AoqVideoFrameDelegate | 視訊框架資料監聽協議 |
介面詳情
引擎生命週期
createEngine:delegate:
建立引擎執行個體。SDK 內部以全域單例方式持有引擎。
destroy
getVersion
connect:
disconnect
音訊裝置管理
音頻編碼配置
視頻裝置管理
視頻編碼與外部輸入
媒體流發送控制
音頻檔案播放
外部音頻流
即時訊息
音訊框架回調
視訊框架回調
AoqEngineDelegate 回調
所有回調方法均為 @required。
AoqAudioFrameDelegate (@optional)
AoqVideoFrameDelegate (@optional)
資料類型與枚舉
AoqErrorCode
枚舉值 | 值 | 說明 |
|---|---|---|
AoqErrorCodeOK | 0 | 成功 |
AoqErrorCodeParamInvalid | 1 | 參數非法 |
AoqErrorCodeStateInvalid | 2 | 狀態非法 |
AoqErrorCodeUnSupport | 3 | 不支援的操作 |
AoqErrorCodeAudio | 100 | 音頻通用錯誤 |
AoqErrorCodeAudioExternalBufferFull | 110 | 外部音頻緩衝區滿 |
AoqErrorCodeAudioDevice | 120 | 音訊裝置通用錯誤 |
AoqErrorCodeAudioDeviceRecordingAuthFailed | 121 | 錄音許可權未擷取 |
AoqErrorCodeAudioDeviceRecordingOccupied | 122 | 錄音裝置被佔用 |
AoqErrorCodeAudioDeviceRecordingBackgroundStart | 123 | 後台啟動錄音失敗 |
AoqErrorCodeAudioDeviceRecordingStartFail | 124 | 錄音啟動失敗 |
AoqErrorCodeAudioDevicePlayoutOccupied | 125 | 播放裝置被佔用 |
AoqErrorCodeAudioDevicePlayoutBackgroundStart | 126 | 後台啟動播放失敗 |
AoqErrorCodeAudioDevicePlayoutStartFail | 127 | 播放啟動失敗 |
AoqErrorCodeAudioDeviceEarpieceRequiresVoipMode | 128 | 耳機輸出需要 VoIP 模式 |
AoqErrorCodeVideo | 200 | 視頻通用錯誤 |
AoqErrorCodeVideoExternalBufferFull | 210 | 外部視頻緩衝區滿 |
AoqErrorCodeVideoExternalCaptureNotEnabled | 211 | 外部視頻採集未啟用 |
AoqErrorCodeVideoExternalEncoderNotEnabled | 212 | 外部視頻編碼未啟用 |
AoqErrorCodeVideoDevice | 220 | 視頻裝置通用錯誤 |
AoqErrorCodeVideoDeviceCameraOpenFail | 221 | 網路攝影機開啟失敗 |
AoqErrorCodeVideoDeviceCameraAuthFailed | 222 | 網路攝影機許可權未擷取 |
AoqErrorCodeVideoDeviceCameraOccupied | 223 | 網路攝影機被佔用 |
AoqErrorCodeVideoDeviceCameraRunningError | 224 | 網路攝影機運行異常 |
AoqErrorCodeVideoCodec | 230 | 視頻編解碼通用錯誤 |
AoqErrorCodeVideoCodecEncoderInitFail | 231 | 視頻編碼器初始化失敗 |
AoqErrorCodeVideoRender | 240 | 視頻渲染通用錯誤 |
AoqErrorCodeVideoRenderCreateFail | 241 | 視頻渲染建立失敗 |
AoqErrorCodeVideoRenderDrawError | 242 | 視頻渲染繪製錯誤 |
AoqTrackType
枚舉值 | 值 | 說明 |
|---|---|---|
AoqTrackTypeAudio | 0 | 音頻軌道 |
AoqTrackTypeVideo | 1 | 視頻軌道 |
AoqTrackTypeData | 2 | 資料訊息軌道 |
AoqConnectConfig
欄位 | 類型 | 說明 |
|---|---|---|
token | NSString * | 串連鑒權 Token |
sid | NSString * | 會話 ID |
certFingerprint | NSString * | 伺服器憑證指紋 |
relayEndpoints | NSArray<AoqRelayEndpoint *> * | Relay 存取點列表 |
workspaceIdHash | NSString * | 工作空間 ID Hash |
publishTracks | NSArray<AoqTrackParam *> * | 本端計劃發布的軌道列表 |
subscribeTracks | NSArray<AoqTrackParam *> * | 本端計劃訂閱的軌道列表 |
AoqAudioPlaybackConfig
欄位 | 類型 | 預設值 | 說明 |
|---|---|---|---|
isVoipMode | BOOL | NO | YES 啟用 VoIP 模式(硬體 AEC),移動端有效 |
isDefaultSpeaker | BOOL | YES | YES 預設擴音器;NO 耳機 |
isExternal | BOOL | NO | YES 外部音訊輸出 |
channel | NSInteger | 1 | 聲道數 1/2 |
統計資料類型
AoqStats
欄位 | 類型 | 說明 |
|---|---|---|
audioPublishStats | NSArray<AoqAudioPublishStats *> * | 音頻推流統計 |
videoPublishStats | NSArray<AoqVideoPublishStats *> * | 視頻推流統計 |
dataMsgPublishStats | NSArray<AoqDataMsgPublishStats *> * | 資料訊息推流統計 |
audioSubscribeStats | NSArray<AoqAudioSubscribeStats *> * | 音頻拉流統計 |
videoSubscribeStats | NSArray<AoqVideoSubscribeStats *> * | 視頻拉流統計 |
dataMsgSubscribeStats | NSArray<AoqDataMsgSubscribeStats *> * | 資料訊息拉流統計 |
networkStats | AoqNetworkStats * | 網路統計 |
AoqNetworkStats
欄位 | 類型 | 說明 |
|---|---|---|
sendBitrate | NSUInteger | 發送碼率(bps) |
sendBytes | NSUInteger | 累計發送位元組 |
recvBitrate | NSUInteger | 接收碼率(bps) |
recvBytes | NSUInteger | 累計接收位元組 |
loss | NSUInteger | 丟包率 |
rtt | NSUInteger | 往返時延(ms) |
AoqAudioPublishStats
trackType / bitrate / bytes / encodeVolume
AoqVideoPublishStats
trackType / bitrate / bytes / encodeFps
AoqAudioSubscribeStats
trackType / bitrate / bytes / playVolume
AoqVideoSubscribeStats
trackType / bitrate / bytes / decodeFps / renderFps
AoqDataMsgPublishStats / AoqDataMsgSubscribeStats
trackType / bitrate / bytes
與 Android 版本的主要差異
差異點 | iOS | Android |
|---|---|---|
回調模式 | @protocol delegate | abstract class listener |
AVAudioSession 控制 | setAudioSessionRestriction:(iOS 專屬) | 無對應介面 |
音頻焦點回調 | 無(iOS 用 onAudioDeviceInterrupted: 代替) | onAudioDeviceFocusChanged |
視頻像素格式 | 支援 CVPixelBuffer 零拷貝 | 支援 TextureOES / Texture2D |
視頻渲染 View | UIView | SurfaceView / TextureView |
藍芽模式配置 | 無 isBTScoMode(系統自動管理) | AoqCreateConfig.isBTScoMode |
視訊框架回調寫回 | I420 / CVPixelBuffer | I420 |