Skip to main content
SDK簡介

AOQ Client SDK iOS API 參考

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 內部以全域單例方式持有引擎。
+ (instancetype _Nonnull)createEngine:(AoqCreateConfig * _Nonnull)config
                             delegate:(id<AoqEngineDelegate> _Nonnull)delegate;

destroy

+ (int)destroy;

getVersion

+ (NSString * _Nonnull)getVersion;

connect:

- (int)connect:(AoqConnectConfig * _Nonnull)config;

disconnect

- (int)disconnect;

音訊裝置管理

- (int)startAudioCapture:(AoqAudioCaptureConfig * _Nonnull)config;
- (int)stopAudioCapture;
- (int)muteAudioCapture:(BOOL)mute;
- (int)startAudioPlayer:(AoqAudioPlaybackConfig * _Nonnull)config;
- (int)stopAudioPlayer;
- (int)pauseAudioPlayer:(NSInteger)fadeMs;
- (int)resumeAudioPlayer:(NSInteger)fadeMs;
- (int)interruptAudioPlayer:(AoqTrackType)trackType fadeMs:(NSInteger)fadeMs;
- (int)enableSpeakerphone:(BOOL)enable;
- (BOOL)isSpeakerphoneEnabled;
- (int)setAudioSessionRestriction:(int)restriction;

音頻編碼配置

- (int)setAudioEncoderConfig:(AoqAudioCodecConfig * _Nonnull)config;
- (int)setAudioDecoderConfig:(AoqAudioCodecConfig * _Nonnull)config;

視頻裝置管理

- (int)startVideoCapture:(AoqVideoCaptureConfig * _Nonnull)config;
- (int)stopVideoCapture;
- (int)switchCamera:(AoqCameraDirection)direction;
- (int)setLocalView:(AoqTrackType)trackType canvas:(AoqVideoCanvas * _Nullable)canvas;
- (int)setRemoteView:(AoqTrackType)trackType canvas:(AoqVideoCanvas * _Nullable)canvas;
setLocalView/setRemoteView 的 trackType 參數傳 AoqTrackTypeVideo。

視頻編碼與外部輸入

- (int)setVideoEncoderConfig:(AoqVideoCodecConfig * _Nonnull)config;
- (int)pushExternalVideoCapturedFrame:(AoqTrackType)trackType frame:(AoqVideoFrame * _Nonnull)frame;
- (int)pushExternalVideoEncodedFrame:(AoqTrackType)trackType frame:(AoqVideoEncodedFrame * _Nonnull)frame;
trackType 參數傳 AoqTrackTypeVideo。

媒體流發送控制

- (int)enableSendMediaStream:(AoqTrackType)trackType enable:(BOOL)enable;
trackType 支援 AoqTrackTypeAudio / AoqTrackTypeVideo。

音頻檔案播放

- (int)startAudioFile:(NSString * _Nonnull)fileId config:(AoqAudioFileMixConfig * _Nonnull)config;
- (int)stopAudioFile:(NSString * _Nonnull)fileId;
- (int)pauseAudioFile:(NSString * _Nonnull)fileId;
- (int)resumeAudioFile:(NSString * _Nonnull)fileId;
- (long long)getAudioFileDuration:(NSString * _Nonnull)fileId;
- (long long)getAudioFileCurrentPosition:(NSString * _Nonnull)fileId;
- (int)setAudioFilePositionMillis:(NSString * _Nonnull)fileId positionMillis:(long long)positionMillis;
- (int)setAudioFileVolume:(NSString * _Nonnull)fileId type:(AoqAudioStreamDirection)type volume:(NSInteger)volume;
- (int)getAudioFileVolume:(NSString * _Nonnull)fileId type:(AoqAudioStreamDirection)type;

外部音頻流

- (int)addAudioExternalStream:(NSString * _Nonnull)streamId config:(AoqAudioExternalStreamConfig * _Nonnull)config;
- (int)pushAudioExternalStreamData:(NSString * _Nonnull)streamId data:(AoqAudioFrameData * _Nonnull)data;
- (int)setAudioExternalStreamVolume:(NSString * _Nonnull)streamId type:(AoqAudioStreamDirection)type volume:(NSInteger)volume;
- (int)getAudioExternalStreamVolume:(NSString * _Nonnull)streamId type:(AoqAudioStreamDirection)type;
- (void)clearAudioExternalStreamBuffer:(NSString * _Nonnull)streamId fadeoutMs:(NSInteger)fadeoutMs;
- (int)removeAudioExternalStream:(NSString * _Nonnull)streamId;

即時訊息

- (int)sendDataMsg:(AoqDataMsg * _Nonnull)msg;

音訊框架回調

- (int)setAudioFrameObserver:(id<AoqAudioFrameDelegate> _Nullable)delegate;
- (int)enableAudioFrameObserver:(BOOL)enabled audioSource:(AoqAudioSource)audioSource config:(AoqAudioObserverConfig * _Nonnull)config;

視訊框架回調

- (int)setVideoFrameObserver:(id<AoqVideoFrameDelegate> _Nullable)delegate;
- (int)enableVideoFrameObserver:(BOOL)enabled videoSource:(AoqVideoSource)videoSource config:(AoqVideoObserverConfig * _Nonnull)config;

AoqEngineDelegate 回調

所有回調方法均為 @required。
- (void)onError:(NSInteger)code message:(NSString * _Nonnull)message;
- (void)onWarning:(NSInteger)code message:(NSString * _Nonnull)message;
- (void)onConnectionStatusChange:(AoqConnectionStatus)status;
- (void)onStats:(AoqStats * _Nonnull)stats;
- (void)onAudioDeviceStateChanged:(AoqAudioDeviceState * _Nonnull)state;
- (void)onAudioDeviceRouteChanged:(NSInteger)routeType;
- (void)onAudioDeviceInterrupted:(BOOL)interrupt;
- (void)onAudioFileState:(AoqAudioFileState * _Nonnull)state;
- (void)onVideoDeviceStateChanged:(AoqVideoDeviceState * _Nonnull)state;
- (void)onDataMsg:(AoqDataMsg * _Nonnull)msg;

AoqAudioFrameDelegate (@optional)

- (void)onCapturedAudioFrame:(AoqAudioFrameData * _Nonnull)frame;
- (void)onProcessCapturedAudioFrame:(AoqAudioFrameData * _Nonnull)frame;
- (void)onPublishAudioFrame:(AoqTrackType)trackType frame:(AoqAudioFrameData * _Nonnull)frame;
- (void)onPlaybackAudioFrame:(AoqAudioFrameData * _Nonnull)frame;

AoqVideoFrameDelegate (@optional)

- (BOOL)onCapturedVideoFrame:(AoqVideoFrame * _Nonnull)frame;
- (BOOL)onPreEncodeVideoFrame:(AoqTrackType)trackType frame:(AoqVideoFrame * _Nonnull)frame;
- (BOOL)onRemoteVideoFrame:(AoqTrackType)trackType frame:(AoqVideoFrame * _Nonnull)frame;

資料類型與枚舉

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

AOQ Client SDK iOS API 參考 - Alibaba Cloud Model Studio