跳转到主要内容
SDK简介

AOQ Client SDK iOS API 参考

AOQ Client SDK iOS API 参考,涵盖引擎生命周期、音视频设备管理、编码配置、媒体流控制、音频文件播放、外部音频流、实时消息、帧回调、委托协议以及数据类型与枚举。

目录

引擎生命周期

接口简介
createEngine创建引擎实例(单例模式)
destroy销毁引擎实例
getVersion获取 SDK 版本号
connect连接 Relay 服务器
disconnect断开服务器连接

音频设备管理

接口简介
startAudioCapture打开音频采集设备(麦克风)
stopAudioCapture关闭音频采集设备
muteAudioCapture静音或取消静音音频采集
startAudioPlayer开始音频渲染(播放远端音频)
stopAudioPlayer停止音频渲染
pauseAudioPlayer暂停音频渲染,支持淡出
resumeAudioPlayer恢复音频渲染,支持淡入
interruptAudioPlayer打断本轮音频通话
enableSpeakerphone切换音频输出到扬声器或听筒
isSpeakerphoneEnabled查询当前是否使用扬声器输出
setAudioSessionRestriction设置 AVAudioSession 控制权限(iOS 独有)

音频编码配置

接口简介
setAudioEncoderConfig设置音频编码参数
setAudioDecoderConfig设置音频解码参数

音频文件播放

接口简介
startAudioFile开始推流播放本地音频文件
stopAudioFile停止音频文件播放
pauseAudioFile暂停音频文件播放
resumeAudioFile恢复音频文件播放
getAudioFileDuration获取音频文件总时长
getAudioFileCurrentPosition获取音频文件当前播放位置
setAudioFilePositionMillis设置音频文件播放位置(seek)
setAudioFileVolume设置音频文件音量
getAudioFileVolume获取音频文件当前音量

外部音频流

接口简介
addAudioExternalStream新增一条外部音频流
pushAudioExternalStreamData输入外部音频 PCM 数据
setAudioExternalStreamVolume设置外部音频流音量
getAudioExternalStreamVolume获取外部音频流音量
clearAudioExternalStreamBuffer清空外部音频流缓存
removeAudioExternalStream移除外部音频流

音频帧回调

接口简介
setAudioFrameObserver设置音频帧数据回调 delegate
enableAudioFrameObserver开启或关闭指定位置的音频帧回调

本地音量提示

接口简介
enableLocalAudioVolumeIndication开启或关闭本地采集音量提示

视频设备管理

接口简介
startVideoCapture打开视频采集设备(摄像头)
stopVideoCapture关闭视频采集设备
switchCamera切换前后置摄像头
setLocalView设置或移除本地视频渲染窗口
setRemoteView设置或移除远端视频渲染窗口

视频编码与外部输入

接口简介
setVideoEncoderConfig设置视频编码参数
setVideoDecoderConfig设置视频解码参数
pushExternalVideoCapturedFrame推送外部采集视频帧
pushExternalVideoEncodedFrame推送外部已编码视频帧

屏幕采集

接口简介
startScreenCapture启动屏幕采集(Broadcast Upload Extension)
stopScreenCapture停止屏幕采集

媒体流发送控制

接口简介
enableSendMediaStream控制本地媒体流的发送开关

视频帧回调

接口简介
setVideoFrameObserver设置视频帧数据回调 delegate
enableVideoFrameObserver开启或关闭指定位置的视频帧回调

实时消息

接口简介
sendDataMsg发送实时数据消息

AoqEngineDelegate 回调

接口简介
onError引擎错误回调
onWarning引擎警告回调
onConnectionStatusChange连接状态变化回调
onStats引擎统计信息回调
onAudioDeviceStateChanged音频设备操作状态变化回调
onAudioDeviceRouteChanged音频输出路由变化回调
onAudioDeviceInterrupted音频设备中断回调
onAudioFileState音频文件播放状态回调
onLocalAudioVolumeIndication本地采集音量提示回调
onVideoDeviceStateChanged视频设备操作状态变化回调
onDataMsg收到实时数据消息回调
onScreenCaptureStateChanged屏幕采集状态变化回调(@optional)

AoqAudioFrameDelegate 回调

接口简介
onCapturedAudioFrame采集到原始音频帧时触发。数据为采集后的原始 PCM,未经任何处理。
onProcessCapturedAudioFrame3A 处理后的音频帧触发。数据已经过回声消除、降噪等处理。
onPublishAudioFrame推流前的音频帧触发。数据为最终编码发送前的音频。
onPlaybackAudioFrame播放前的远端音频帧触发。数据为解码后、混音后待播放的音频。

AoqVideoFrameDelegate 回调

接口简介
onCapturedVideoFrame采集到原始视频帧时触发(前处理前)。
onPreEncodeVideoFrame编码前的视频帧触发(前处理后)。
onRemoteVideoFrame远端解码后、渲染前的视频帧触发。

接口详情

引擎生命周期

createEngine:delegate:

创建引擎实例。SDK 内部以全局单例方式持有引擎,重复调用会返回已创建的实例。
+ (instancetype _Nonnull)createEngine:(AoqCreateConfig * _Nonnull)config
                             delegate:(id<AoqEngineDelegate> _Nonnull)delegate;
参数类型说明
configAoqCreateConfig *引擎创建配置
delegateid<AoqEngineDelegate>引擎事件回调代理
返回值:AoqClientEngine 引擎实例,不会返回 nil。

destroy

销毁引擎实例,释放所有资源。销毁后需要重新调用 createEngine: 才能继续使用。
+ (int)destroy;
参数:无。 返回值:0 表示成功;非 0 表示失败(对应 AoqErrorCode)。

getVersion

获取 SDK 当前版本号。可在 createEngine: 之前调用。
+ (NSString * _Nonnull)getVersion;
参数:无。 返回值:版本号字符串,如 "1.3.0"。

connect:

连接 Relay 服务器。连接参数由业务方 AppServer 通过 /api/v1/allocate 分配后下发给客户端。调用后立即返回,实际连接结果通过 onConnectionStatusChange: 回调通知。
- (int)connect:(AoqConnectConfig * _Nonnull)config;
参数类型说明
configAoqConnectConfig *连接配置,包含 Token、SID、Relay 接入点列表、发布/订阅轨道等
返回值:0 表示调用已下发(异步执行);非 0 表示参数校验失败(对应 AoqErrorCode)。
Screen track 当前仅支持上行,下行订阅尚未实现,因此 config.subscribeTracks 中不能传入 AoqTrackTypeScreen,否则返回 AoqECUnSupport 且连接不会发起;连接成功前不建议调用 enableSendMediaStream:enable:YES,应在 onConnectionStatusChange: 收到 Connected 后再开启。

disconnect

断开与服务器的连接,释放连接相关资源。调用后立即返回,实际断开结果通过 onConnectionStatusChange: 回调通知。
- (int)disconnect;
参数:无。 返回值:0 表示调用已下发(异步执行);非 0 表示失败(对应 AoqErrorCode)。

音频设备管理

startAudioCapture:

打开音频采集设备(麦克风),开始采集本地音频。若使用外部音频输入(pushAudioExternalStreamData:data:),需将 isExternal 设为 YES,此时不会真正打开麦克风。
- (int)startAudioCapture:(AoqAudioCaptureConfig * _Nonnull)config;
参数类型说明
configAoqAudioCaptureConfig *音频采集配置
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode,如 AoqECAudioDeviceRecordingAuthFailed 表示录音权限未获取)。
需在 Info.plist 配置 NSMicrophoneUsageDescription 并获取录音权限;设备状态变化通过 onAudioDeviceStateChanged: 回调通知。

stopAudioCapture

关闭音频采集设备,停止本地音频采集。
- (int)stopAudioCapture;
参数:无。 返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

muteAudioCapture:

静音或取消静音音频采集。静音后 SDK 仍持续采集但发送静音帧,与 stopAudioCapture 不同。
- (int)muteAudioCapture:(BOOL)mute;
参数类型说明
muteBOOLYES 表示静音;NO 表示取消静音
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。
需在 startAudioCapture: 之后调用才生效。

startAudioPlayer:

开始音频渲染,播放远端音频到扬声器/听筒。若使用外部渲染(自行播放 PCM),需将 isExternal 设为 YES。
- (int)startAudioPlayer:(AoqAudioPlaybackConfig * _Nonnull)config;
参数类型说明
configAoqAudioPlaybackConfig *音频播放配置
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode,如 AoqECAudioDevicePlayoutOccupied 表示播放设备被占用)。
设备状态变化通过 onAudioDeviceStateChanged: 回调通知;输出路由变化通过 onAudioDeviceRouteChanged: 回调通知。

stopAudioPlayer

停止音频渲染,关闭播放设备。
- (int)stopAudioPlayer;
参数:无。 返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

pauseAudioPlayer:

暂停音频渲染,支持淡出效果。暂停期间远端音频数据仍会到达但不播放。
- (int)pauseAudioPlayer:(NSInteger)fadeMs;
参数类型说明
fadeMsNSInteger淡出时长(毫秒);0 表示立即暂停
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

resumeAudioPlayer:

恢复音频渲染,支持淡入效果。需在 pauseAudioPlayer: 之后调用。
- (int)resumeAudioPlayer:(NSInteger)fadeMs;
参数类型说明
fadeMsNSInteger淡入时长(毫秒);0 表示立即恢复
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

interruptAudioPlayer:fadeMs:

打断本轮音频通话,清空当前播放缓冲区。常用于 AI 对话场景下用户打断 AI 说话。
- (int)interruptAudioPlayer:(AoqTrackType)trackType fadeMs:(NSInteger)fadeMs;
参数类型说明
trackTypeAoqTrackType需要打断的轨道类型
fadeMsNSInteger淡出时长(毫秒);0 表示立即打断
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

enableSpeakerphone:

切换音频输出到扬声器或听筒。仅在 startAudioPlayer: 之后生效。
- (int)enableSpeakerphone:(BOOL)enable;
参数类型说明
enableBOOLYES 表示切换到扬声器;NO 表示切换到听筒
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode,如 AoqECAudioDeviceEarpieceRequiresVoipMode 表示听筒需要 VoIP 模式)。
切换到听筒需要 AoqAudioPlaybackConfig.isVoipMode=YES;路由变化通过 onAudioDeviceRouteChanged: 回调通知。

isSpeakerphoneEnabled

查询当前是否使用扬声器输出。
- (BOOL)isSpeakerphoneEnabled;
参数:无。 返回值:YES 表示当前使用扬声器;NO 表示当前使用听筒或其他路由。

setAudioSessionRestriction:

设置 SDK 对 AVAudioSession 的控制权限(iOS 独有)。用于业务方自行管理 AVAudioSession 时,限制 SDK 的干预范围。
- (int)setAudioSessionRestriction:(int)restriction;
参数类型说明
restrictionintAVAudioSession 控制权限位掩码,对应 AoqAudioSessionRestriction;可多位按位或组合
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。
默认 SDK 完全管理 AVAudioSession;若业务方需要自行控制 category/激活状态,通过本接口约束 SDK 行为。

音频编码配置

setAudioEncoderConfig:

设置音频编码参数,用于上行推流的音频编码。配置变更会立即生效。
- (int)setAudioEncoderConfig:(AoqAudioCodecConfig * _Nonnull)config;
参数类型说明
configAoqAudioCodecConfig *音频编码配置;trackType 应设为 AoqTrackTypeAudio
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode,如 AoqECParamInvalid 表示参数非法)。
codecType 决定编码格式(默认 Opus),sampleRate 与 channel 需与采集端匹配;bitrate 仅在 Opus 等有损编码下生效。

setAudioDecoderConfig:

设置音频解码参数,用于下行拉流的音频解码。需与远端编码参数匹配。
- (int)setAudioDecoderConfig:(AoqAudioCodecConfig * _Nonnull)config;
参数类型说明
configAoqAudioCodecConfig *音频解码配置;trackType 应设为 AoqTrackTypeAudio
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。
sampleRate 需与远端编码器输出采样率一致,否则可能触发解码错误或音质异常。

音频文件播放

startAudioFile:config:

开始推流播放本地音频文件。可同时推流到远端和本地播放,音量分别由 publishVolume 和 playoutVolume 控制。
- (int)startAudioFile:(NSString * _Nonnull)fileId config:(AoqAudioFileMixConfig * _Nonnull)config;
参数类型说明
fileIdNSString *文件标识符,业务方自定义,用于后续控制
configAoqAudioFileMixConfig *音频文件播放配置
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。
播放状态变化通过 onAudioFileState: 回调通知;同一 fileId 重复调用会覆盖之前的播放。

stopAudioFile:

停止音频文件播放。
- (int)stopAudioFile:(NSString * _Nonnull)fileId;
参数类型说明
fileIdNSString *文件标识符,与 startAudioFile:config: 传入的一致
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

pauseAudioFile:

暂停音频文件播放。
- (int)pauseAudioFile:(NSString * _Nonnull)fileId;
参数类型说明
fileIdNSString *文件标识符
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

resumeAudioFile:

恢复音频文件播放。需在 pauseAudioFile: 之后调用。
- (int)resumeAudioFile:(NSString * _Nonnull)fileId;
参数类型说明
fileIdNSString *文件标识符
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

getAudioFileDuration:

获取音频文件总时长。
- (long long)getAudioFileDuration:(NSString * _Nonnull)fileId;
参数类型说明
fileIdNSString *文件标识符
返回值:文件总时长(毫秒);文件未加载或不存在时返回 0。

getAudioFileCurrentPosition:

获取音频文件当前播放位置。
- (long long)getAudioFileCurrentPosition:(NSString * _Nonnull)fileId;
参数类型说明
fileIdNSString *文件标识符
返回值:当前播放位置(毫秒);文件未加载或不存在时返回 0。

setAudioFilePositionMillis:positionMillis:

设置音频文件播放位置(seek)。
- (int)setAudioFilePositionMillis:(NSString * _Nonnull)fileId positionMillis:(long long)positionMillis;
参数类型说明
fileIdNSString *文件标识符
positionMillislong long目标播放位置(毫秒)
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

setAudioFileVolume:type:volume:

设置音频文件音量,可分别控制推流音量和本地播放音量。
- (int)setAudioFileVolume:(NSString * _Nonnull)fileId type:(AoqAudioStreamDirection)type volume:(NSInteger)volume;
参数类型说明
fileIdNSString *文件标识符
typeAoqAudioStreamDirection音量方向;AoqAudioStreamPublish 推流,AoqAudioStreamPlayout 播放
volumeNSInteger音量值,取值范围 [0-100]
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

getAudioFileVolume:type:

获取音频文件当前音量。
- (int)getAudioFileVolume:(NSString * _Nonnull)fileId type:(AoqAudioStreamDirection)type;
参数类型说明
fileIdNSString *文件标识符
typeAoqAudioStreamDirection音量方向
返回值:当前音量值 [0-100];文件不存在时返回 0。

外部音频流

addAudioExternalStream:config:

新增一条外部音频流。可创建多条独立的外部流,通过 streamId 区分。
- (int)addAudioExternalStream:(NSString * _Nonnull)streamId config:(AoqAudioExternalStreamConfig * _Nonnull)config;
参数类型说明
streamIdNSString *外部流标识符,业务方自定义
configAoqAudioExternalStreamConfig *外部音频流配置
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

pushAudioExternalStreamData:data:

输入外部音频 PCM 数据到指定流。
- (int)pushAudioExternalStreamData:(NSString * _Nonnull)streamId data:(AoqAudioFrameData * _Nonnull)data;
参数类型说明
streamIdNSString *外部流标识符
dataAoqAudioFrameData *PCM 音频帧数据
返回值:0 表示调用成功;非 0 表示失败。缓冲区满时返回 AoqECAudioExternalBufferFull(110)。
data.dataPtr 指向的内存仅在调用期间有效,SDK 内部会拷贝;采样率/声道数需与 addAudioExternalStream:config: 时的配置一致。

setAudioExternalStreamVolume:type:volume:

设置外部音频流音量,可分别控制推流音量和本地播放音量。
- (int)setAudioExternalStreamVolume:(NSString * _Nonnull)streamId type:(AoqAudioStreamDirection)type volume:(NSInteger)volume;
参数类型说明
streamIdNSString *外部流标识符
typeAoqAudioStreamDirection音量方向
volumeNSInteger音量值,取值范围 [0-100]
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

getAudioExternalStreamVolume:type:

获取外部音频流当前音量。
- (int)getAudioExternalStreamVolume:(NSString * _Nonnull)streamId type:(AoqAudioStreamDirection)type;
参数类型说明
streamIdNSString *外部流标识符
typeAoqAudioStreamDirection音量方向
返回值:当前音量值 [0-100];流不存在时返回 0。

clearAudioExternalStreamBuffer:fadeoutMs:

清空外部音频流缓存,支持淡出效果。常用于打断当前播放内容。
- (void)clearAudioExternalStreamBuffer:(NSString * _Nonnull)streamId fadeoutMs:(NSInteger)fadeoutMs;
参数类型说明
streamIdNSString *外部流标识符
fadeoutMsNSInteger淡出时长(毫秒);-1 表示使用默认值,0 表示立即清空,>0 表示保留指定毫秒数淡出
返回值:无(void)。

removeAudioExternalStream:

移除外部音频流,释放相关资源。
- (int)removeAudioExternalStream:(NSString * _Nonnull)streamId;
参数类型说明
streamIdNSString *外部流标识符
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

音频帧回调

setAudioFrameObserver:

设置音频帧数据回调 delegate。传入 delegate=nil 表示移除监听。
- (int)setAudioFrameObserver:(id<AoqAudioFrameDelegate> _Nullable)delegate;
参数类型说明
delegateid<AoqAudioFrameDelegate>音频帧监听协议;传 nil 表示移除
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。
需先调用本接口设置 delegate,再通过 enableAudioFrameObserver:audioSource:config: 开启具体位置的回调。

enableAudioFrameObserver:audioSource:config:

开启或关闭指定位置的音频帧回调。
- (int)enableAudioFrameObserver:(BOOL)enabled audioSource:(AoqAudioSource)audioSource config:(AoqAudioObserverConfig * _Nonnull)config;
参数类型说明
enabledBOOLYES 表示开启;NO 表示关闭
audioSourceAoqAudioSource音频源位置;可选采集/3A处理后/推流/播放
configAoqAudioObserverConfig *回调配置
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。
回调线程为 SDK 内部线程,禁止在回调中执行耗时操作或阻塞调用;dataPtr 仅在回调期间有效,异步使用需自行拷贝。

本地音量提示

enableLocalAudioVolumeIndication:

开启或关闭本地采集音量提示。开启后 SDK 按 config.interval 周期触发 onLocalAudioVolumeIndication: 回调,上报本地采集音量及是否人声。
- (int)enableLocalAudioVolumeIndication:(AoqAudioVolumeIndicationConfig * _Nonnull)config;
参数类型说明
configAoqAudioVolumeIndicationConfig *音量提示配置;interval<=0 表示关闭回调
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。
需在 startAudioCapture: 之后调用才有音量数据;interval>0 且 <10 时按 10 处理。

视频设备管理

startVideoCapture:

打开视频采集设备(摄像头),采集内容通过 AoqTrackTypeVideo 通道发送。若使用外部视频输入(pushExternalVideoCapturedFrame:frame:),需将 isExternal 设为 YES,此时不会真正打开摄像头。
- (int)startVideoCapture:(AoqVideoCaptureConfig * _Nonnull)config;
参数类型说明
configAoqVideoCaptureConfig *视频采集配置
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode,如 AoqECVideoDeviceCameraAuthFailed 表示摄像头权限未获取)。
需在 Info.plist 配置 NSCameraUsageDescription 并获取摄像头权限;设备状态变化通过 onVideoDeviceStateChanged: 回调通知。

stopVideoCapture

关闭视频采集设备,停止本地视频采集。
- (int)stopVideoCapture;
参数:无。 返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

switchCamera:

切换前后置摄像头。需在 startVideoCapture:(isExternal=NO) 之后调用。
- (int)switchCamera:(AoqCameraDirection)direction;
参数类型说明
directionAoqCameraDirection目标摄像头方向;AoqCameraDirectionFront 前置,AoqCameraDirectionBack 后置
返回值:0 表示调用成功;< 0 表示失败(对应 AoqErrorCode)。
外部采集模式(isExternal=YES)下调用无效。

setLocalView:canvas:

设置或移除本地视频渲染窗口。传入 canvas=nil 或 canvas.view=nil 表示解绑渲染。
- (int)setLocalView:(AoqTrackType)trackType canvas:(AoqVideoCanvas * _Nullable)canvas;
参数类型说明
trackTypeAoqTrackType轨道类型;本地预览传 AoqTrackTypeVideo
canvasAoqVideoCanvas *视频渲染画布;传 nil 表示解绑
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。

setRemoteView:canvas:

设置或移除远端视频渲染窗口。传入 canvas=nil 或 canvas.view=nil 表示解绑。
- (int)setRemoteView:(AoqTrackType)trackType canvas:(AoqVideoCanvas * _Nullable)canvas;
参数类型说明
trackTypeAoqTrackType轨道类型
canvasAoqVideoCanvas *视频渲染画布;传 nil 表示解绑
返回值:0 表示调用成功;非 0 表示失败。trackType 为 AoqTrackTypeScreen 时返回 AoqECUnSupport,窗口不会绑定。
Screen track 当前仅支持上行,没有远端画面可渲染,因此 trackType 不能传入 AoqTrackTypeScreen。

视频编码与外部输入

setVideoEncoderConfig:

设置视频编码参数,用于上行推流的视频编码,按 config.trackType 路由。若 isExternal=YES,SDK 不做二次编码,由 pushExternalVideoEncodedFrame:frame: 直推已编码帧。
- (int)setVideoEncoderConfig:(AoqVideoCodecConfig * _Nonnull)config;
参数类型说明
configAoqVideoCodecConfig *视频编码配置
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。
使用 pushExternalVideoEncodedFrame: 时,必须先调用本接口且 isExternal=YES,该模式不经过采集管线,无需 startVideoCapture:/startScreenCapture:;使用 pushExternalVideoCapturedFrame: 时,isExternal 保持 NO,由 SDK 内部编码。

setVideoDecoderConfig:

设置视频解码参数,用于下行拉流的视频解码,按 config.trackType 路由。解码时仅 trackType/codecType/width/height/fps/bitrate 生效,其余字段仅编码使用。
- (int)setVideoDecoderConfig:(AoqVideoCodecConfig * _Nonnull)config;
参数类型说明
configAoqVideoCodecConfig *视频解码配置
返回值:0 表示调用成功;非 0 表示失败。config.trackType 为 AoqTrackTypeScreen 时返回 AoqECUnSupport,配置不会下发。
Screen track 当前仅支持上行,没有下行订阅,因此 config.trackType 不能传入 AoqTrackTypeScreen。

pushExternalVideoCapturedFrame:frame:

推送外部原始视频帧,SDK 编码后发送。按 trackType 路由,对应通道需已开启外部采集。
- (int)pushExternalVideoCapturedFrame:(AoqTrackType)trackType frame:(AoqVideoFrame * _Nonnull)frame;
参数类型说明
trackTypeAoqTrackType轨道类型;AoqTrackTypeVideo 需先 startVideoCapture:(isExternal=YES),AoqTrackTypeScreen 需先 startScreenCapture:(isExternal=YES)
frameAoqVideoFrame *外部视频帧数据
返回值:0 表示调用成功;对应通道未开启外部采集返回 AoqECVideoExternalCaptureNotEnabled(211);缓冲满返回 AoqECVideoExternalBufferFull(210);< 0 表示其他失败。
frame.timeStamp<=0 时 SDK 会用本地时钟自动补齐;支持 CVPixelBuffer 零拷贝路径(format=AoqVideoPixelFormatCVPixelBuffer)。

pushExternalVideoEncodedFrame:frame:

推送外部已编码视频帧(SDK 不做二次编码,直接打包发送)。仅当对应 trackType 已 setVideoEncoderConfig:(isExternal=YES) 后才消费,不依赖 startVideoCapture:/startScreenCapture:。
- (int)pushExternalVideoEncodedFrame:(AoqTrackType)trackType frame:(AoqVideoEncodedFrame * _Nonnull)frame;
参数类型说明
trackTypeAoqTrackType轨道类型;支持 AoqTrackTypeVideo / AoqTrackTypeScreen
frameAoqVideoEncodedFrame *外部已编码视频帧
返回值:0 表示调用成功;对应通道未开启外部编码返回 AoqECVideoExternalEncoderNotEnabled(212);< 0 表示失败。
frame.timeStamp 直接透传,SDK 不做补齐;调用方需自行保证时间戳单调递增。

屏幕采集

- (int)startScreenCapture:(AoqScreenCaptureConfig * _Nonnull)config;
- (int)stopScreenCapture;
config 为屏幕采集配置。屏幕画面通过 AoqTrackTypeScreen 轨道发送。 启动返回 0 表示请求已受理,最终状态通过 onScreenCaptureStateChanged 通知;非 0 表示同步拒绝,不重复报告失败事件。停止返回 0 表示成功,非 0 表示失败,停止结果由该回调通知。 isExternal=NO 时使用 Broadcast Upload Extension。应用需集成并配置 AoqScreenShare.framework,展示系统广播选择器;等待超时通过 onScreenCaptureStateChanged: 回调报告失败,错误码为 AoqECScreenStartFailed。无需等待 Started 才启用发送。 外部原始帧:设置 isExternal=YES 后,不启用 Extension 接收通道,通过 pushExternalVideoCapturedFrame 输入 Screen 轨道的原始帧,由 SDK 编码。外部已编码帧:先通过 setVideoEncoderConfig 将 Screen 轨道设置为外部编码,再调用 pushExternalVideoEncodedFrame;不需要调用 startScreenCapture。

媒体流发送控制

enableSendMediaStream:enable:

控制本地媒体流的发送开关,按 trackType 路由。关闭时 SDK 仍采集/编码但不发送到网络。
- (int)enableSendMediaStream:(AoqTrackType)trackType enable:(BOOL)enable;
参数类型说明
trackTypeAoqTrackType轨道类型;支持 AoqTrackTypeAudio/AoqTrackTypeVideo/AoqTrackTypeScreen
enableBOOLYES 表示开启发送;NO 表示关闭发送
返回值:0 表示调用成功;< 0 表示失败(对应 AoqErrorCode)。
建议初始化后先 enableSendMediaStream:enable:NO,待 onConnectionStatusChange: 收到 Connected 后再开启,避免连接建立前的数据丢失。

视频帧回调

setVideoFrameObserver:

设置视频帧数据回调 delegate。传入 delegate=nil 表示移除监听。
- (int)setVideoFrameObserver:(id<AoqVideoFrameDelegate> _Nullable)delegate;
参数类型说明
delegateid<AoqVideoFrameDelegate>视频帧监听协议;传 nil 表示移除
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。
需先调用本接口设置 delegate,再通过 enableVideoFrameObserver:videoSource:config: 开启具体位置的回调。

enableVideoFrameObserver:videoSource:config:

开启或关闭指定位置的视频帧回调。
- (int)enableVideoFrameObserver:(BOOL)enabled videoSource:(AoqVideoSource)videoSource config:(AoqVideoObserverConfig * _Nonnull)config;
参数类型说明
enabledBOOLYES 表示开启;NO 表示关闭
videoSourceAoqVideoSource视频源位置;可选采集后/编码前/远端解码后
configAoqVideoObserverConfig *回调配置;通过 config.trackType 指定观察 Video 或 Screen 轨道
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。
回调线程为 SDK 内部线程,禁止在回调中执行耗时操作;仅 I420/CVPixelBuffer 格式支持读写模式(mode=ReadWrite),其他格式只读。

实时消息

sendDataMsg:

发送实时数据消息到远端。需在 connect: 成功且 enableSendMediaStream:(Data, YES) 之后调用。
- (int)sendDataMsg:(AoqDataMsg * _Nonnull)msg;
参数类型说明
msgAoqDataMsg *数据消息
返回值:0 表示调用成功;非 0 表示失败(对应 AoqErrorCode)。
远端通过 onDataMsg: 回调接收;消息大小受 SDK 内部限制,超大消息建议分片发送。

AoqEngineDelegate 回调

onError:message:

引擎错误回调。发生不可恢复错误时触发。
- (void)onError:(NSInteger)code message:(NSString * _Nonnull)message;
参数类型说明
codeNSInteger错误码,对应 AoqErrorCode 枚举值
messageNSString *错误描述信息
返回值:无(void)。

onWarning:message:

引擎警告回调。发生可恢复异常时触发,不影响 SDK 继续运行。
- (void)onWarning:(NSInteger)code message:(NSString * _Nonnull)message;
参数类型说明
codeNSInteger警告码,对应 AoqWarningCode 枚举值
messageNSString *警告描述信息
返回值:无(void)。

onConnectionStatusChange:

连接状态变化回调。状态流转:Disconnected -> Connecting -> Connected/Failed -> Disconnected。
- (void)onConnectionStatusChange:(AoqConnectionStatus)status;
参数类型说明
statusAoqConnectionStatus当前连接状态
返回值:无(void)。
收到 Connected 后再调用 enableSendMediaStream:enable:YES 开启媒体流发送。

onStats:

引擎统计信息回调。SDK 周期性上报音视频推拉流及网络统计数据,可用于实时监控通话质量、网络状态、诊断音视频问题。
- (void)onStats:(AoqStats * _Nonnull)stats;
参数类型说明
statsAoqStats *统计信息,包含音频/视频/数据消息的推拉流统计及网络统计
返回值:无(void)。

onAudioDeviceStateChanged:

音频设备采集/播放操作状态变化回调。
- (void)onAudioDeviceStateChanged:(AoqAudioDeviceState * _Nonnull)state;
参数类型说明
stateAoqAudioDeviceState *音频设备状态;包含 state(状态码)和 reason(错误原因)
返回值:无(void)。

onAudioDeviceRouteChanged:

音频输出路由变化回调。
- (void)onAudioDeviceRouteChanged:(NSInteger)routeType;
参数类型说明
routeTypeNSInteger当前音频输出路由,对应 AoqAudioDeviceRouteType 枚举值
返回值:无(void)。

onAudioDeviceInterrupted:

音频设备中断回调。系统级中断(如来电、其他 App 抢占音频焦点)时触发。
- (void)onAudioDeviceInterrupted:(BOOL)interrupt;
参数类型说明
interruptBOOLYES 表示被中断;NO 表示中断恢复
返回值:无(void)。

onAudioFileState:

音频文件播放状态回调。
- (void)onAudioFileState:(AoqAudioFileState * _Nonnull)state;
参数类型说明
stateAoqAudioFileState *音频文件播放状态;包含 fileId、stateCode、errorCode
返回值:无(void)。

onLocalAudioVolumeIndication:

本地采集音量提示回调。需调用 enableLocalAudioVolumeIndication: 开启后才会触发。
- (void)onLocalAudioVolumeIndication:(AoqAudioVolume * _Nonnull)volume;
参数类型说明
volumeAoqAudioVolume *本地音量信息;包含 isSpeech(是否人声)和 volume(平滑后瞬时音量 [0-255])
返回值:无(void)。 onScreenCaptureStateChanged: 为 @optional,其余 AoqEngineDelegate 回调方法为 @required。

onVideoDeviceStateChanged:

视频设备采集操作状态变化回调。
- (void)onVideoDeviceStateChanged:(AoqVideoDeviceState * _Nonnull)state;
参数类型说明
stateAoqVideoDeviceState *视频设备状态;包含 state(状态码)和 reason(错误原因)
返回值:无(void)。

onDataMsg:

收到实时数据消息回调。
- (void)onDataMsg:(AoqDataMsg * _Nonnull)msg;
参数类型说明
msgAoqDataMsg *数据消息
返回值:无(void)。
回调线程为 SDK 内部线程,禁止在回调中执行耗时操作;NSData 仅在回调期间有效,异步使用需自行拷贝。

onScreenCaptureStateChanged

屏幕采集状态变化回调(@optional)。使用 AoqScreenCaptureStateCode 与统一的 AoqErrorCode,在主线程按顺序通知。屏幕失败不重复通过 onError: 上报。
- (void)onScreenCaptureStateChanged:(AoqScreenCaptureState * _Nonnull)state;
参数类型说明
stateAoqScreenCaptureState *屏幕采集状态;包含 state(状态码)和 reason(错误原因)
返回值:无(void)。
Started 表示采集/外部输入已就绪,不表示媒体已发送;Fail 和 Stopped 均为清理完成后的终态。

AoqAudioFrameDelegate 回调

音频帧数据监听协议。所有方法均为 @optional,按需实现。
@protocol AoqAudioFrameDelegate <NSObject>
@optional
- (void)onCapturedAudioFrame:(AoqAudioFrameData * _Nonnull)frame;
- (void)onProcessCapturedAudioFrame:(AoqAudioFrameData * _Nonnull)frame;
- (void)onPublishAudioFrame:(AoqTrackType)trackType frame:(AoqAudioFrameData * _Nonnull)frame;
- (void)onPlaybackAudioFrame:(AoqAudioFrameData * _Nonnull)frame;
@end
方法触发时机参数
onCapturedAudioFrame:采集到原始音频帧时frame: AoqAudioFrameData *
onProcessCapturedAudioFrame:3A 处理后的音频帧frame: AoqAudioFrameData *
onPublishAudioFrame:frame:推流前的音频帧trackType: 轨道类型;frame: AoqAudioFrameData *
onPlaybackAudioFrame:播放前的远端音频帧frame: AoqAudioFrameData *
返回值:无(void)。
通过 enableAudioFrameObserver:audioSource:config: 开启对应 AoqAudioSource 后才会触发;dataPtr 仅在回调期间有效。

onCapturedAudioFrame

采集到原始音频帧时触发。数据为采集后的原始 PCM,未经任何处理。
- (void)onCapturedAudioFrame:(AoqAudioFrameData *)frame;
参数类型说明
frameAoqAudioFrameData *采集的音频帧数据
返回值:无(void)。
frame.dataPtr 引用 SDK 内部内存,仅在回调期间有效,异步使用需自行拷贝。

onProcessCapturedAudioFrame

3A 处理后的音频帧触发。数据已经过回声消除、降噪等处理。
- (void)onProcessCapturedAudioFrame:(AoqAudioFrameData *)frame;
参数类型说明
frameAoqAudioFrameData *3A 处理后的音频帧数据
返回值:无(void)。
frame.dataPtr 引用 SDK 内部内存,仅在回调期间有效,异步使用需自行拷贝。

onPublishAudioFrame

推流前的音频帧触发。数据为最终编码发送前的音频。
- (void)onPublishAudioFrame:(AoqTrackType)trackType frame:(AoqAudioFrameData *)frame;
参数类型说明
trackTypeAoqTrackType轨道类型
frameAoqAudioFrameData *推流前的音频帧数据
返回值:无(void)。
frame.dataPtr 引用 SDK 内部内存,仅在回调期间有效,异步使用需自行拷贝。

onPlaybackAudioFrame

播放前的远端音频帧触发。数据为解码后、混音后待播放的音频。
- (void)onPlaybackAudioFrame:(AoqAudioFrameData *)frame;
参数类型说明
frameAoqAudioFrameData *播放前的远端音频帧数据
返回值:无(void)。
frame.dataPtr 引用 SDK 内部内存,仅在回调期间有效,异步使用需自行拷贝。

AoqVideoFrameDelegate 回调

视频帧数据监听协议。所有方法均为 @optional,返回 NO 表示不修改数据。三个回调均带 trackType 参数,用于区分 Video / Screen 轨道。
@protocol AoqVideoFrameDelegate <NSObject>
@optional
- (BOOL)onCapturedVideoFrame:(AoqTrackType)trackType frame:(AoqVideoFrame * _Nonnull)frame;
- (BOOL)onPreEncodeVideoFrame:(AoqTrackType)trackType frame:(AoqVideoFrame * _Nonnull)frame;
- (BOOL)onRemoteVideoFrame:(AoqTrackType)trackType frame:(AoqVideoFrame * _Nonnull)frame;
@end
方法触发时机参数
onCapturedVideoFrame:frame:采集到原始视频帧时(前处理前)trackType: 轨道类型;frame: AoqVideoFrame *
onPreEncodeVideoFrame:frame:编码前的视频帧(前处理后)trackType: 轨道类型;frame: AoqVideoFrame *
onRemoteVideoFrame:frame:远端解码后、渲染前的视频帧trackType: 轨道类型;frame: AoqVideoFrame *
返回值:BOOL。返回 YES 表示数据已修改需写回 SDK(仅 I420/CVPixelBuffer 格式写回生效);返回 NO 表示不修改。
通过 enableVideoFrameObserver:videoSource:config: 开启对应 AoqVideoSource 后才会触发;frame 中 NSData/pixelBuffer 引用 SDK 内部内存,仅在回调期间有效,异步使用需自行拷贝。

onCapturedVideoFrame

采集到原始视频帧时触发(前处理前)。
- (BOOL)onCapturedVideoFrame:(AoqTrackType)trackType frame:(AoqVideoFrame *)frame;
参数类型说明
trackTypeAoqTrackType轨道类型(Video/Screen)
frameAoqVideoFrame *采集的视频帧数据
返回值:BOOL。YES 表示数据已修改需写回 SDK(仅 I420/CVPixelBuffer 生效),NO 表示不修改。
通过 enableVideoFrameObserver:videoSource:config: 开启对应 AoqVideoSource 后才会触发;frame 中 NSData/pixelBuffer 引用 SDK 内部内存,仅在回调期间有效,异步使用需自行拷贝。

onPreEncodeVideoFrame

编码前的视频帧触发(前处理后)。
- (BOOL)onPreEncodeVideoFrame:(AoqTrackType)trackType frame:(AoqVideoFrame *)frame;
参数类型说明
trackTypeAoqTrackType轨道类型(Video/Screen)
frameAoqVideoFrame *编码前的视频帧数据
返回值:BOOL。YES 表示数据已修改需写回 SDK(仅 I420/CVPixelBuffer 生效),NO 表示不修改。
通过 enableVideoFrameObserver:videoSource:config: 开启对应 AoqVideoSource 后才会触发;frame 中 NSData/pixelBuffer 引用 SDK 内部内存,仅在回调期间有效,异步使用需自行拷贝。

onRemoteVideoFrame

远端解码后、渲染前的视频帧触发。
- (BOOL)onRemoteVideoFrame:(AoqTrackType)trackType frame:(AoqVideoFrame *)frame;
参数类型说明
trackTypeAoqTrackType轨道类型(Video/Screen)
frameAoqVideoFrame *远端解码后的视频帧数据
返回值:BOOL。YES 表示数据已修改需写回 SDK(仅 I420/CVPixelBuffer 生效),NO 表示不修改。
通过 enableVideoFrameObserver:videoSource:config: 开启对应 AoqVideoSource 后才会触发;frame 中 NSData/pixelBuffer 引用 SDK 内部内存,仅在回调期间有效,异步使用需自行拷贝。

数据类型与枚举

通用类型

AoqConnectConfig

subscribeTracks 不能包含 AoqTrackTypeScreen,否则 connect 返回 AoqECUnSupport,不发起连接。setRemoteView 不支持 Screen,传入时返回 AoqECUnSupport。
字段类型说明
tokenNSString *连接鉴权 Token
sidNSString *会话 ID
certFingerprintNSString *服务器证书指纹
relayEndpointsNSArray<AoqRelayEndpoint *> *Relay 接入点列表
workspaceIdHashNSString *工作空间 ID Hash
publishTracksNSArray<AoqTrackParam *> *本端计划发布的轨道列表
subscribeTracksNSArray<AoqTrackParam *> *本端计划订阅的轨道列表

AoqRelayEndpoint

Relay 接入点。
字段类型默认值说明
routeIndexNSInteger-1路径序号
endpointNSString *""服务端地址(域名或 IP)
portNSInteger0服务端 UDP 端口
tcpPortNSInteger0TCP 降级端口,0 表示使用 SDK 默认端口 443

AoqTrackParam.trackMode

字段类型默认值说明
trackModeAoqTrackModeAoqTrackModeSegment仅对音频下行生效。

AoqCreateConfig(v1.3.0 新增字段)

字段类型默认值说明
maxEncodedVideoFrameBytesNSInteger190 × 1024编码后单帧大小上限(字节),仅用于 SDK 内部 JPEG 编码。
enableDropOversizedVideoFrameBOOLNO仅用于 SDK 内部 JPEG 编码:降至最低质量后仍超限时,是否允许丢弃该帧。

AoqTrackParam

Track 属性。
字段类型默认值说明
trackTypeAoqTrackTypeAoqTrackTypeAudio轨道类型
trackModeAoqTrackModeAoqTrackModeSegment流式与非流式模式,仅对音频下行生效

枚举类型

AoqTrackMode

枚举值值说明
AoqTrackModeSegment0分段:按语义片段(如一句话)交付数据;仅对音频下行生效。
AoqTrackModeStream1流式:连续交付数据;仅对音频下行生效。

AoqErrorCode

枚举值值说明
AoqECOK0成功
AoqECParamInvalid1参数非法
AoqECStateInvalid2状态非法
AoqECUnSupport3不支持的操作
AoqECAudio100音频通用错误
AoqECAudioExternalBufferFull110外部音频缓冲区满
AoqECAudioDevice120音频设备通用错误
AoqECAudioDeviceRecordingAuthFailed121录音权限未获取
AoqECAudioDeviceRecordingOccupied122录音设备被占用
AoqECAudioDeviceRecordingBackgroundStart123后台启动录音失败
AoqECAudioDeviceRecordingStartFail124录音启动失败
AoqECAudioDevicePlayoutOccupied125播放设备被占用
AoqECAudioDevicePlayoutBackgroundStart126后台启动播放失败
AoqECAudioDevicePlayoutStartFail127播放启动失败
AoqECAudioDeviceEarpieceRequiresVoipMode128听筒输出需要 VoIP 模式
AoqECVideo200视频通用错误
AoqECVideoExternalBufferFull210外部视频缓冲区满
AoqECVideoExternalCaptureNotEnabled211外部视频采集未启用
AoqECVideoExternalEncoderNotEnabled212外部视频编码未启用
AoqECVideoDevice220视频设备通用错误
AoqECVideoDeviceCameraOpenFail221摄像头打开失败
AoqECVideoDeviceCameraAuthFailed222摄像头权限未获取
AoqECVideoDeviceCameraOccupied223摄像头被占用
AoqECVideoDeviceCameraRunningError224摄像头运行异常
AoqECVideoCodec230视频编解码通用错误
AoqECVideoCodecEncoderInitFail231视频编码器初始化失败
AoqECVideoRender240视频渲染通用错误
AoqECVideoRenderCreateFail241视频渲染创建失败
AoqECVideoRenderDrawError242视频渲染绘制错误
AoqECScreen300屏幕共享通用错误
AoqECScreenAuthFailed310屏幕共享授权失败
AoqECScreenStartFailed311屏幕共享启动失败

AoqTrackType

枚举值值说明
AoqTrackTypeAudio0音频轨道
AoqTrackTypeVideo1视频轨道
AoqTrackTypeData2数据消息轨道
AoqTrackTypeScreen3屏幕共享轨道,仅支持上行。

AoqWarningCode

警告码枚举。
枚举值值说明
AoqWCOK0无警告
AoqWCAudio100音频通用警告
AoqWCAudioHowling101音频啸叫检测
AoqWCAudioDevice120音频设备通用警告
AoqWCAudioDeviceMicEnumerateError121麦克风枚举错误
AoqWCAudioDeviceMicStartTimeout122麦克风启动超时
AoqWCAudioDeviceRecordingError123录音过程错误
AoqWCAudioDeviceSpeakerEnumerateError124扬声器枚举错误
AoqWCAudioDeviceSpeakerStartTimeout125扬声器启动超时
AoqWCAudioDevicePlayoutError126播放过程错误
AoqWCVideo200视频通用警告
AoqWCVideoCameraEnumerateError201摄像头枚举错误
AoqWCVideoEncoderSwitched202视频编码器已切换
AoqWCVideoRenderDowngrade203视频渲染降级

AoqEncoderType

Track 媒体格式。
枚举值值说明
AoqEncoderTypeUnknown0未知格式
AoqEncoderTypeAudioPCM1音频 PCM
AoqEncoderTypeAudioOpus2音频 Opus
AoqEncoderTypeVideoH2643视频 H.264
AoqEncoderTypeVideoJpeg4视频 JPEG
AoqEncoderTypeDataText5数据文本

AoqConnectionStatus

引擎连接状态。
枚举值值说明
AoqConnectionStatusDisconnected0未连接
AoqConnectionStatusConnecting1连接中
AoqConnectionStatusConnected2已连接
AoqConnectionStatusFailed3连接失败

AoqMirrorMode

镜像模式。
枚举值值说明
AoqMirrorModeDisabled0关闭镜像
AoqMirrorModeEnabled1开启镜像

AoqOrientationMode

视频方向。
枚举值值说明
AoqOrientationModeAuto0自动适应
AoqOrientationModePortrait1竖屏
AoqOrientationModeLandscape2横屏

音频类型

AoqAudioPlaybackConfig

字段类型默认值说明
isVoipModeBOOLNOYES 启用 VoIP 模式(硬件 AEC),移动端有效
isDefaultSpeakerBOOLYESYES 默认扬声器;NO 听筒
isExternalBOOLNOYES 外部音频输出
channelNSInteger1声道数 1/2

AoqAudioCaptureConfig

音频采集配置。
字段类型默认值说明
isExternalBOOLNO是否为外部采集模式
isVoipModeBOOLNO是否启用 VoIP 模式(硬件 AEC),移动端有效
channelNSInteger1声道数,支持 1/2

AoqAudioCodecConfig

音频编解码配置。setAudioEncoderConfig: 与 setAudioDecoderConfig: 共用。
字段类型默认值说明
trackTypeAoqTrackTypeAoqTrackTypeAudio轨道类型
codecTypeAoqEncoderTypeAoqEncoderTypeAudioOpus编码格式
sampleRateNSInteger48000采样率(Hz)
channelNSInteger1声道数
bitrateNSInteger32000比特率(bps)

AoqAudioSessionRestriction

AVAudioSession 控制权限位掩码(NS_OPTIONS,可按位或组合)。setAudioSessionRestriction: 使用。
枚举值值说明
AoqAudioSessionNone0不限制(SDK 完全管理 AVAudioSession)
AoqAudioSessionSetCategory1限制 SDK 设置 category
AoqAudioSessionConfigureSession2限制 SDK 配置 session
AoqAudioSessionDeactivateSession4限制 SDK 反激活 session
AoqAudioSessionActivateSession8限制 SDK 激活 session

AoqAudioDeviceStateCode

音频设备采集播放操作状态码。
枚举值值说明
AoqAudioDeviceNone0无状态
AoqAudioDeviceRecordStarting1采集启动中
AoqAudioDeviceRecordStarted2采集已启动
AoqAudioDeviceRecordStopping3采集停止中
AoqAudioDeviceRecordStopped4采集已停止
AoqAudioDeviceRecordFail5采集失败
AoqAudioDevicePlayStarting6播放启动中
AoqAudioDevicePlayStarted7播放已启动
AoqAudioDevicePlayStopping8播放停止中
AoqAudioDevicePlayStopped9播放已停止
AoqAudioDevicePlayFail10播放失败

AoqAudioDeviceState

音频设备采集播放操作状态。
字段类型默认值说明
stateAoqAudioDeviceStateCodeAoqAudioDeviceNone设备操作状态
reasonNSInteger0错误原因代码(参考 AoqErrorCode)

AoqAudioDeviceRouteType

音频设备路由类型。
枚举值值说明
AoqAudioDeviceRouteDefault0默认路由
AoqAudioDeviceRouteHeadset1有麦克风的头戴设备
AoqAudioDeviceRouteEarpiece2听筒
AoqAudioDeviceRouteHeadsetNoMic3无麦克风的头戴设备
AoqAudioDeviceRouteSpeakerPhone4扬声器
AoqAudioDeviceRouteUsb5USB 音频设备
AoqAudioDeviceRouteBluetooth6蓝牙 SCO 模式
AoqAudioDeviceRouteBluetoothA2dp7蓝牙 A2DP 模式

音频文件类型

AoqAudioFileMixConfig

音频文件播放配置。
字段类型默认值说明
fileNameNSString *""文件名(含路径),非空
cyclesNSInteger-1循环次数,-1 表示无限循环
startPosMsNSInteger0起始播放位置(毫秒)
publishVolumeNSInteger100推流音量,取值范围 [0-100]
playoutVolumeNSInteger100播放音量,取值范围 [0-100]

AoqAudioFileStateCode

音频文件播放状态码。
枚举值值说明
AoqAudioFileNone0无状态
AoqAudioFileStarted1播放已启动
AoqAudioFileStopped2播放已停止
AoqAudioFilePaused3播放已暂停
AoqAudioFileResumed4播放已恢复
AoqAudioFileEnded5播放已结束
AoqAudioFileBuffering6播放缓冲中
AoqAudioFileBufferingEnd7缓冲结束
AoqAudioFileFailed8播放失败

AoqAudioFileErrorCode

音频文件播放错误码。
枚举值值说明
AoqAudioFileNoError0无错误
AoqAudioFileOpenFailed1文件打开失败
AoqAudioFileDecodeFailed2文件解码失败

AoqAudioFileState

音频文件状态。
字段类型默认值说明
fileIdNSString *""文件标识符
stateCodeAoqAudioFileStateCodeAoqAudioFileNone文件播放状态码
errorCodeAoqAudioFileErrorCodeAoqAudioFileNoError文件错误码

外部音频流与音量类型

AoqAudioVolume

字段类型默认值说明
isSpeechBOOLNO是否为人声。
volumeNSInteger0平滑后的瞬时音量,范围 0~255。

AoqAudioVolumeIndicationConfig

字段类型默认值说明
reportSpeechBOOLNO是否检测人声。
intervalNSInteger0回调间隔(毫秒);小于等于 0 时关闭,大于 0 且小于 10 时按 10 处理。
smoothNSInteger3平滑系数,范围 0~10;越大越平滑。

AoqAudioStreamDirection

音频流方向。
枚举值值说明
AoqAudioStreamPublish0发布流(推流)
AoqAudioStreamPlayout1播放流(拉流)

AoqAudioExternalStreamToggle

外部音频流切换状态。
枚举值值说明
AoqAudioExternalStreamToggleNormal0正常状态
AoqAudioExternalStreamTogglePause1暂停状态

AoqAudioExternalStreamConfig

外部音频流配置。
字段类型默认值说明
trackTypeAoqTrackTypeAoqTrackTypeAudio音频轨道类型
codecTypeAoqEncoderTypeAoqEncoderTypeAudioPCM音频流格式
channelsNSInteger1声道数
sampleRateNSInteger48000采样率(Hz)
playoutVolumeNSInteger100播放音量 [0-100]
publishVolumeNSInteger100推流音量 [0-100]
maxBufferDurationNSInteger1000最大缓冲时长(毫秒)
enable3ABOOLNO是否对输入 PCM 进行 3A 处理

AoqAudioFrameData

外部音频帧数据。
字段类型默认值说明
dataPtrvoid *NULL音频 PCM 裸数据指针(@Nullable)
dataSizeNSInteger0PCM 数据字节数
numOfSamplesNSInteger0采样点数(单声道)
bytesPerSampleNSInteger0每个采样点的字节数
numOfChannelsNSInteger0声道数
samplesPerSecNSInteger0每秒采样点数(采样率)
pushSequenceint32_t0PCM 输入轮次
timeStampint64_t0时间戳
autoGenMuteBOOLNO数据回调有效,YES 表示 SDK 生成的静音数据

AoqAudioSource

音频帧回调数据来源。
枚举值值说明
AoqAudioSourceCaptured0采集的音频数据
AoqAudioSourceProcessCaptured13A 处理后的音频数据
AoqAudioSourcePublish2推流的音频数据
AoqAudioSourcePlayback3播放的音频数据

AoqAudioObserverMode

音频帧回调模式。
枚举值值说明
AoqAudioObserverModeReadOnly0只读模式
AoqAudioObserverModeReadWrite1读写模式

AoqAudioObserverConfig

音频帧回调配置。
字段类型默认值说明
sampleRateNSInteger48000回调音频采样率(Hz)
channelsNSInteger1回调音频声道数
modeAoqAudioObserverModeAoqAudioObserverModeReadOnly读写模式

视频类型

AoqScreenCaptureState

字段类型默认值说明
stateAoqScreenCaptureStateCodeAoqScreenCaptureNone屏幕采集状态。
reasonNSInteger0正常为 0;失败时为 AoqErrorCode 错误码。

AoqScreenCaptureStateCode

枚举值值说明
AoqScreenCaptureNone0无
AoqScreenCaptureStarting1启动中
AoqScreenCaptureStarted2输入已就绪,不表示媒体已发送
AoqScreenCaptureStopping3停止中
AoqScreenCaptureStopped4已停止
AoqScreenCaptureFail5启动或运行失败

AoqScreenCaptureConfig

字段类型默认值说明
isExternalBOOLNO是否由应用提供屏幕原始帧。
appGroupNSString *nil可选的主 App 与 Broadcast Extension 共享 AppGroup 标识。为空时通过 Socket 握手传递配置,两者均无需申请 App Groups 能力;外部采集时无效。

AoqVideoCodecConfig

字段类型默认值说明
trackTypeAoqTrackTypeAoqTrackTypeVideo轨道类型
codecTypeAoqEncoderTypeAoqEncoderTypeVideoH264编解码格式
widthNSInteger540宽度(像素)
heightNSInteger960高度(像素)
fpsNSInteger5帧率
bitrateNSInteger500000码率(bps)
minBitrateNSInteger128000最小码率(bps)
keyframeIntervalNSInteger2关键帧间隔(秒)
mirrorModeAoqMirrorModeAoqMirrorModeDisabled镜像模式
orientationModeAoqOrientationModeAoqOrientationModeAuto方向模式
isExternalBOOLNO是否由应用输入已编码帧。

AoqRenderMode

渲染显示模式。
枚举值值说明
AoqRenderModeAuto0自动模式
AoqRenderModeStretch1拉伸平铺模式,宽高比不一致时画面会变形
AoqRenderModeFill2填充黑边模式,宽高比不一致时上下或左右填充黑边
AoqRenderModeCrop3裁剪模式,宽高比不一致时裁剪宽或高,画面内容会丢失

AoqVideoCanvas

视频渲染画布。
字段类型默认值说明
viewUIView *nil显示视图,传 nil 表示移除渲染绑定(@Nullable)
renderModeAoqRenderModeAoqRenderModeAuto渲染模式

AoqCameraDirection

摄像头方向。
枚举值值说明
AoqCameraDirectionFront0前置摄像头
AoqCameraDirectionBack1后置摄像头(移动端有效)

AoqVideoCaptureConfig

视频采集配置。
字段类型默认值说明
widthNSInteger1280采集宽度(像素),isExternal=YES 时无效
heightNSInteger720采集高度(像素),isExternal=YES 时无效
fpsNSInteger15采集帧率,isExternal=YES 时无效(节奏由送帧决定)
isExternalBOOLNO是否外部采集;YES 时不打开摄像头,由 pushExternalVideoCapturedFrame: 喂帧
cameraDirectionAoqCameraDirectionAoqCameraDirectionFront摄像头方向,isExternal=YES 时无效

AoqVideoPixelFormat

视频像素格式。
枚举值值说明
AoqVideoPixelFormatUnknown0未知格式
AoqVideoPixelFormatI4201I420(YUV 三平面格式)
AoqVideoPixelFormatNV122NV12(YUV 半平面格式)
AoqVideoPixelFormatNV213NV21(YUV 半平面格式)
AoqVideoPixelFormatBGRA4BGRA(32 位)
AoqVideoPixelFormatRGBA5RGBA(32 位)
AoqVideoPixelFormatCVPixelBuffer6Apple 平台零拷贝路径,pixelBuffer 字段填 CVPixelBufferRef
iOS 不支持 TextureOES/Texture2D,零拷贝路径使用 CVPixelBuffer。

AoqVideoFrame

外部视频数据,同时用于视频帧回调(AoqVideoFrameDelegate)。
字段类型默认值说明
formatAoqVideoPixelFormatAoqVideoPixelFormatUnknown像素格式
widthNSInteger0宽度(像素)
heightNSInteger0高度(像素)
dataNSData *nil打包格式数据(NV12/NV21/BGRA/RGBA)(@Nullable)
dataYNSData *nilI420 Y 平面数据(@Nullable)
dataUNSData *nilI420 U 平面数据(@Nullable)
dataVNSData *nilI420 V 平面数据(@Nullable)
strideYNSInteger0Y 平面行跨度
strideUNSInteger0U 平面行跨度
strideVNSInteger0V 平面行跨度
pixelBufferCVPixelBufferRefNULLApple 零拷贝;format=AoqVideoPixelFormatCVPixelBuffer 时使用(@Nullable)
timeStampint64_t0时间戳(毫秒);0 时 SDK 用本地时钟补齐
iOS 无 textureId/transformMatrix/eglContext 字段,零拷贝改用 pixelBuffer。

AoqVideoCodecType

外部编码帧 codec 类型。
枚举值值说明
AoqVideoCodecTypeJPEG0JPEG 编码

AoqVideoEncodedFrame

外部已编码视频帧。调用方自行完成编码,SDK 不做二次编码,直接打包发送。
字段类型默认值说明
codecAoqVideoCodecTypeAoqVideoCodecTypeJPEG编码格式
dataNSData *非空编码后数据
widthNSInteger0宽度(像素)
heightNSInteger0高度(像素)
timeStampint64_t0时间戳(毫秒);0 时 SDK 用本地时钟补齐

AoqVideoDeviceStateCode

视频设备采集操作状态码。
枚举值值说明
AoqVideoDeviceNone0无状态
AoqVideoDeviceCaptureStarting1摄像头正在启动
AoqVideoDeviceCaptureStarted2摄像头已启动
AoqVideoDeviceCaptureStopping3摄像头正在停止
AoqVideoDeviceCaptureStopped4摄像头已停止
AoqVideoDeviceCaptureFail5摄像头启动失败

AoqVideoDeviceState

视频设备采集操作状态。
字段类型默认值说明
stateAoqVideoDeviceStateCodeAoqVideoDeviceNone设备采集操作状态
reasonNSInteger0错误原因代码(参考 AoqErrorCode)

视频帧回调类型

AoqVideoSource

视频帧回调数据源(管线位置)。
枚举值值说明
AoqVideoSourceCaptured0采集后的视频数据(前处理前)
AoqVideoSourcePreEncode1编码前的视频数据(前处理后)
AoqVideoSourceRemote2远端解码后、渲染前的视频数据

AoqVideoObserverMode

视频帧回调模式。
枚举值值说明
AoqVideoObserverModeReadOnly0只读模式
AoqVideoObserverModeReadWrite1读写模式

AoqVideoObserverAlignment

视频输出宽度对齐方式。
枚举值值说明
AoqVideoObserverAlignmentDefault0默认对齐
AoqVideoObserverAlignmentEven1偶数对齐
AoqVideoObserverAlignment424 字节对齐
AoqVideoObserverAlignment838 字节对齐
AoqVideoObserverAlignment16416 字节对齐

AoqVideoObserverConfig

视频帧回调配置。
字段类型默认值说明
trackTypeAoqTrackTypeAoqTrackTypeVideo需要观察的视频轨道;仅支持 Video / Screen
formatAoqVideoPixelFormatAoqVideoPixelFormatI420期望回调像素格式
alignmentAoqVideoObserverAlignmentAoqVideoObserverAlignmentDefault宽度对齐策略
modeAoqVideoObserverModeAoqVideoObserverModeReadOnly读写模式,仅 I420/CVPixelBuffer 支持读写
mirrorAppliedBOOLNO是否对回调数据应用镜像

数据消息类型

AoqDataMsg

实时消息数据结构。
字段类型默认值说明
dataNSData *空 NSData消息数据,指向调用方持有的内存

统计数据类型

AoqStats

字段类型说明
audioPublishStatsNSArray<AoqAudioPublishStats *> *音频推流统计
videoPublishStatsNSArray<AoqVideoPublishStats *> *视频推流统计
dataMsgPublishStatsNSArray<AoqDataMsgPublishStats *> *数据消息推流统计
audioSubscribeStatsNSArray<AoqAudioSubscribeStats *> *音频拉流统计
videoSubscribeStatsNSArray<AoqVideoSubscribeStats *> *视频拉流统计
dataMsgSubscribeStatsNSArray<AoqDataMsgSubscribeStats *> *数据消息拉流统计
networkStatsAoqNetworkStats *网络统计

AoqNetworkStats

字段类型说明
sendBitrateNSUInteger发送码率(bps)
sendBytesNSUInteger累计发送字节
recvBitrateNSUInteger接收码率(bps)
recvBytesNSUInteger累计接收字节
lossNSUInteger丢包率
rttNSUInteger往返时延(ms)

AoqAudioPublishStats

音频推流统计。
字段类型说明
trackTypeAoqTrackType轨道类型
bitrateNSUInteger码率(bps)
bytesNSUInteger累计发送字节数
encodeVolumeNSUInteger推流编码音量

AoqVideoPublishStats

视频推流统计。
字段类型说明
trackTypeAoqTrackType轨道类型
bitrateNSUInteger码率(bps)
bytesNSUInteger累计发送字节数
encodeFpsNSUInteger编码帧率

AoqAudioSubscribeStats

音频拉流统计。
字段类型说明
trackTypeAoqTrackType轨道类型
bitrateNSUInteger码率(bps)
bytesNSUInteger累计接收字节数
playVolumeNSUInteger播放音量

AoqVideoSubscribeStats

视频拉流统计。
字段类型说明
trackTypeAoqTrackType轨道类型
bitrateNSUInteger码率(bps)
bytesNSUInteger累计接收字节数
decodeFpsNSUInteger解码帧率
renderFpsNSUInteger渲染帧率

AoqDataMsgPublishStats

数据消息推流统计。
字段类型说明
trackTypeAoqTrackType轨道类型
bitrateNSUInteger码率(bps)
bytesNSUInteger累计发送字节数

AoqDataMsgSubscribeStats

数据消息拉流统计。
字段类型说明
trackTypeAoqTrackType轨道类型
bitrateNSUInteger码率(bps)
bytesNSUInteger累计接收字节数