跳转到主要内容
SDK简介

macOS SDK

AOQ macOS SDK Objective-C 接口参考

本文介绍 AOQ Client SDK macOS 版的 Objective-C 接口、回调和数据类型,帮助您在 macOS 应用中接入实时音视频和数据消息能力。 SDK 以全局单例方式持有引擎实例,通过 AoqClientEngine 类对外提供接口,通过 AoqEngineDelegate 协议统一回调异步事件。

接口目录

引擎生命周期

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

音频设备管理

接口简介
startAudioCapture:打开音频采集设备(麦克风)
stopAudioCapture关闭音频采集设备
muteAudioCapture:静音或取消静音音频采集
startAudioPlayer:开始音频渲染(播放远端音频)
stopAudioPlayer停止音频渲染
pauseAudioPlayer:暂停音频渲染(支持淡出)
resumeAudioPlayer:恢复音频渲染(支持淡入)
interruptAudioPlayer:fadeMs:打断本轮音频通话
enableLocalAudioVolumeIndication:开启或关闭本地采集音量提示

音频编码配置

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

视频设备管理

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

视频编码与外部输入

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

媒体流发送控制

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

音频文件播放

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

外部音频流

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

实时消息

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

音频帧回调

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

视频帧回调

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

AoqEngineDelegate 回调

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

接口详情

引擎生命周期

createEngine:delegate:

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

destroy

销毁引擎实例。销毁后需重新调用 createEngine:delegate: 方可继续使用。
+ (int)destroy;
返回值:0 表示成功;非 0 表示失败。

getVersion

获取 SDK 的版本号。
+ (NSString * _Nonnull)getVersion;
返回值:版本号字符串。

connect:

连接 Relay 服务器。业务 AppServer 应根据所用协议获取临时 AOQ 连接参数并下发给客户端,具体操作请参见Token 鉴权。
- (int)connect:(AoqConnectConfig * _Nonnull)config;
参数
参数类型说明
configAoqConnectConfig *连接鉴权配置,详见 AoqConnectConfig
返回值:0 表示调用已下发(异步执行);非 0 表示参数校验失败。

disconnect

断开服务器连接。
- (int)disconnect;
返回值:0 表示调用已下发(异步执行);非 0 表示失败。

音频设备管理

startAudioCapture:

打开音频采集设备(麦克风)。
- (int)startAudioCapture:(AoqAudioCaptureConfig * _Nonnull)config;
参数
参数类型说明
configAoqAudioCaptureConfig *音频采集配置,详见 AoqAudioCaptureConfig
返回值:0 表示成功;非 0 表示失败。

stopAudioCapture

关闭音频采集设备。
- (int)stopAudioCapture;
返回值:0 表示成功;非 0 表示失败。

muteAudioCapture:

静音或取消静音音频采集。
- (int)muteAudioCapture:(BOOL)mute;
参数
参数类型说明
muteBOOLYES 静音;NO 取消静音
返回值:0 表示成功;非 0 表示失败。

startAudioPlayer:

开始音频渲染,播放远端音频。
- (int)startAudioPlayer:(AoqAudioPlaybackConfig * _Nonnull)config;
参数
参数类型说明
configAoqAudioPlaybackConfig *音频播放配置,详见 AoqAudioPlaybackConfig
返回值:0 表示成功;非 0 表示失败。

stopAudioPlayer

停止音频渲染。
- (int)stopAudioPlayer;
返回值:0 表示成功;非 0 表示失败。

pauseAudioPlayer:

暂停音频渲染,支持淡出。
- (int)pauseAudioPlayer:(NSInteger)fadeMs;
参数
参数类型说明
fadeMsNSInteger淡出时长,单位毫秒;0 表示立即暂停
返回值:0 表示成功;非 0 表示失败。

resumeAudioPlayer:

恢复音频渲染,支持淡入。
- (int)resumeAudioPlayer:(NSInteger)fadeMs;
参数
参数类型说明
fadeMsNSInteger淡入时长,单位毫秒;0 表示立即恢复
返回值:0 表示成功;非 0 表示失败。

interruptAudioPlayer:fadeMs:

打断本轮音频通话,停止当前正在播放的音频内容。
- (int)interruptAudioPlayer:(AoqTrackType)trackType fadeMs:(NSInteger)fadeMs;
参数
参数类型说明
trackTypeAoqTrackType音轨类型,详见 AoqTrackType
fadeMsNSInteger淡出时长,单位毫秒;0 表示立即打断
返回值:0 表示成功;非 0 表示失败。

enableLocalAudioVolumeIndication:

开启或关闭本地采集音量提示。开启后按 config.interval 周期触发 onLocalAudioVolumeIndication: 回调;config.interval<= 0 时关闭回调。需在 startAudioCapture: 之后调用才有音量数据。
- (int)enableLocalAudioVolumeIndication:(AoqAudioVolumeIndicationConfig * _Nonnull)config;
参数
参数类型说明
configAoqAudioVolumeIndicationConfig *音量提示配置,详见 AoqAudioVolumeIndicationConfig
返回值:0 表示成功;非 0 表示失败。

音频编码配置

setAudioEncoderConfig:

设置音频编码参数。
- (int)setAudioEncoderConfig:(AoqAudioCodecConfig * _Nonnull)config;
参数
参数类型说明
configAoqAudioCodecConfig *音频编解码配置,详见 AoqAudioCodecConfig
返回值:0 表示成功;非 0 表示失败。

setAudioDecoderConfig:

设置音频解码参数。
- (int)setAudioDecoderConfig:(AoqAudioCodecConfig * _Nonnull)config;
参数
参数类型说明
configAoqAudioCodecConfig *音频编解码配置,详见 AoqAudioCodecConfig
返回值:0 表示成功;非 0 表示失败。

视频设备管理

startVideoCapture:

打开视频采集设备(摄像头)。配置 isExternal=YES 时不打开摄像头,由 pushExternalVideoCapturedFrame:frame: 喂帧。
- (int)startVideoCapture:(AoqVideoCaptureConfig * _Nonnull)config;
参数
参数类型说明
configAoqVideoCaptureConfig *视频采集配置,详见 AoqVideoCaptureConfig
返回值:0 表示成功;非 0 表示失败。

stopVideoCapture

关闭视频采集设备。
- (int)stopVideoCapture;
返回值:0 表示成功;非 0 表示失败。

setLocalView:canvas:

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

setRemoteView:canvas:

设置或移除远端视频渲染窗口。canvas 传 nil 或 canvas.view 为 nil 表示解绑。
- (int)setRemoteView:(AoqTrackType)trackType canvas:(AoqVideoCanvas * _Nullable)canvas;
参数
参数类型说明
trackTypeAoqTrackType视频轨道,传 AoqTrackTypeVideo
canvasAoqVideoCanvas *渲染画布,详见 AoqVideoCanvas;传 nil 表示解绑
返回值:0 表示成功;非 0 表示失败。

视频编码与外部输入

setVideoEncoderConfig:

设置视频编码参数,按 config.trackType 路由。
- (int)setVideoEncoderConfig:(AoqVideoCodecConfig * _Nonnull)config;
参数
参数类型说明
configAoqVideoCodecConfig *视频编解码配置,详见 AoqVideoCodecConfig
返回值:0 表示成功;非 0 表示失败。

setVideoDecoderConfig:

设置视频解码参数(订阅侧 codec 提议,需在 connect: 之前调用),按 config.trackType 路由。
- (int)setVideoDecoderConfig:(AoqVideoCodecConfig * _Nonnull)config;
参数
参数类型说明
configAoqVideoCodecConfig *视频编解码配置,详见 AoqVideoCodecConfig
返回值:0 表示成功;非 0 表示失败。

pushExternalVideoCapturedFrame:frame:

推送外部视频帧。需先调用 startVideoCapture: 且配置 isExternal=YES,未启动外部视频采集或格式不支持时返回 AoqECParamInvalid
- (int)pushExternalVideoCapturedFrame:(AoqTrackType)trackType
                                frame:(AoqVideoFrame * _Nonnull)frame;
参数
参数类型说明
trackTypeAoqTrackType路由目标,传 AoqTrackTypeVideo
frameAoqVideoFrame *外部视频帧数据,详见 AoqVideoFrame
返回值:0 表示成功;AoqECVideoExternalBufferFull(210)表示缓冲区满;<0 表示其他错误。

pushExternalVideoEncodedFrame:frame:

推送外部已编码视频帧,bypass 编码器直推。需先调用 setVideoEncoderConfig: 且配置 isExternal=YES,当前仅支持 JPEG。
- (int)pushExternalVideoEncodedFrame:(AoqTrackType)trackType
                               frame:(AoqVideoEncodedFrame * _Nonnull)frame;
参数
参数类型说明
trackTypeAoqTrackType路由目标,传 AoqTrackTypeVideo
frameAoqVideoEncodedFrame *外部已编码帧数据,详见 AoqVideoEncodedFrame
返回值:0 表示成功;非 0 表示失败。

媒体流发送控制

enableSendMediaStream:enable:

控制本地媒体流的发送开关。建议初始化后先关闭发送,待 onConnectionStatusChange: 回调 AoqConnectionStatusConnected 后再开启。
- (int)enableSendMediaStream:(AoqTrackType)trackType enable:(BOOL)enable;
参数
参数类型说明
trackTypeAoqTrackType路由目标,支持 AoqTrackTypeAudio/AoqTrackTypeVideo
enableBOOLYES 启用发送;NO 停用发送
返回值:0 表示调用已下发(异步执行);非 0 表示失败。

音频文件播放

startAudioFile:config:

开始推流播放本地音频文件。
- (int)startAudioFile:(NSString * _Nonnull)fileId
               config:(AoqAudioFileMixConfig * _Nonnull)config;
参数
参数类型说明
fileIdNSString *音频文件 ID,业务层需保证唯一性
configAoqAudioFileMixConfig *音频文件混音配置,详见 AoqAudioFileMixConfig
返回值:0 表示成功;非 0 表示失败。

stopAudioFile:

停止音频文件播放。
- (int)stopAudioFile:(NSString * _Nonnull)fileId;
参数
参数类型说明
fileIdNSString *音频文件 ID
返回值:0 表示成功;非 0 表示失败。

pauseAudioFile:

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

resumeAudioFile:

恢复音频文件播放。
- (int)resumeAudioFile:(NSString * _Nonnull)fileId;
参数
参数类型说明
fileIdNSString *音频文件 ID
返回值:0 表示成功;非 0 表示失败。

getAudioFileDuration:

获取音频文件总时长。
- (long long)getAudioFileDuration:(NSString * _Nonnull)fileId;
参数
参数类型说明
fileIdNSString *音频文件 ID
返回值:>=0 表示音频文件时长,单位毫秒;<0 表示失败。

getAudioFileCurrentPosition:

获取音频文件当前播放位置。
- (long long)getAudioFileCurrentPosition:(NSString * _Nonnull)fileId;
参数
参数类型说明
fileIdNSString *音频文件 ID
返回值:>=0 表示当前播放位置,单位毫秒;<0 表示失败。

setAudioFilePositionMillis:positionMillis:

设置音频文件播放位置(seek)。
- (int)setAudioFilePositionMillis:(NSString * _Nonnull)fileId
                  positionMillis:(long long)positionMillis;
参数
参数类型说明
fileIdNSString *音频文件 ID
positionMillislong long播放位置,单位毫秒
返回值:0 表示成功;非 0 表示失败。

setAudioFileVolume:type:volume:

设置音频文件音量。
- (int)setAudioFileVolume:(NSString * _Nonnull)fileId
                     type:(AoqAudioStreamDirection)type
                   volume:(NSInteger)volume;
参数
参数类型说明
fileIdNSString *音频文件 ID
typeAoqAudioStreamDirection音频流方向,详见 AoqAudioStreamDirection
volumeNSInteger音量值,范围 [0, 100]
返回值:0 表示成功;非 0 表示失败。

getAudioFileVolume:type:

获取音频文件当前音量。
- (int)getAudioFileVolume:(NSString * _Nonnull)fileId
                     type:(AoqAudioStreamDirection)type;
参数
参数类型说明
fileIdNSString *音频文件 ID
typeAoqAudioStreamDirection音频流方向,详见 AoqAudioStreamDirection
返回值:[0, 100] 表示音量值;<0 表示失败。

外部音频流

addAudioExternalStream:config:

新增一条外部音频流。
- (int)addAudioExternalStream:(NSString * _Nonnull)streamId
                       config:(AoqAudioExternalStreamConfig * _Nonnull)config;
参数
参数类型说明
streamIdNSString *外部音频流 ID,业务层需保证唯一性
configAoqAudioExternalStreamConfig *外部音频流配置,详见 AoqAudioExternalStreamConfig
返回值:0 表示成功;非 0 表示失败。

pushAudioExternalStreamData:data:

输入外部音频 PCM 数据。返回 AoqECAudioExternalBufferFull(110)时表示 SDK 缓存已满,建议等待约 20ms 后重新送当前数据帧。
- (int)pushAudioExternalStreamData:(NSString * _Nonnull)streamId
                              data:(AoqAudioFrameData * _Nonnull)data;
参数
参数类型说明
streamIdNSString *外部音频流 ID
dataAoqAudioFrameData *外部音频裸数据,详见 AoqAudioFrameData
返回值:0 表示成功;非 0 表示失败。 最佳实践:实时采集场景一次 Push 10ms 数据长度,有数据即 Push;数据来源为文件时一次 Push 40ms 数据长度、间隔 30ms 给一次,并处理 AoqECAudioExternalBufferFull 返回。

setAudioExternalStreamVolume:type:volume:

设置外部音频流音量。
- (int)setAudioExternalStreamVolume:(NSString * _Nonnull)streamId
                               type:(AoqAudioStreamDirection)type
                             volume:(NSInteger)volume;
参数
参数类型说明
streamIdNSString *外部音频流 ID
typeAoqAudioStreamDirection外部音频流类型,详见 AoqAudioStreamDirection
volumeNSInteger音量值,范围 [0, 100]
返回值:0 表示成功;非 0 表示失败。

getAudioExternalStreamVolume:type:

获取外部音频流音量。
- (int)getAudioExternalStreamVolume:(NSString * _Nonnull)streamId
                               type:(AoqAudioStreamDirection)type;
参数
参数类型说明
streamIdNSString *外部音频流 ID
typeAoqAudioStreamDirection外部音频流类型,详见 AoqAudioStreamDirection
返回值:[0, 100] 表示音量值;<0 表示失败。

clearAudioExternalStreamBuffer:fadeoutMs:

清空外部音频流缓存。
- (void)clearAudioExternalStreamBuffer:(NSString * _Nonnull)streamId
                              fadeoutMs:(NSInteger)fadeoutMs;
参数
参数类型说明
streamIdNSString *外部音频流 ID
fadeoutMsNSInteger淡出时长;-1 使用 SDK 内部默认淡出,0 表示全部清空无淡出,>0 保留指定毫秒淡出
返回值:无。

removeAudioExternalStream:

移除外部音频流。
- (int)removeAudioExternalStream:(NSString * _Nonnull)streamId;
参数
参数类型说明
streamIdNSString *外部音频流 ID
返回值:0 表示成功;非 0 表示失败。

实时消息

sendDataMsg:

发送实时数据消息。
- (int)sendDataMsg:(AoqDataMsg * _Nonnull)msg;
参数
参数类型说明
msgAoqDataMsg *消息内容,详见 AoqDataMsg
返回值:0 表示成功;非 0 表示失败。

音频帧回调

setAudioFrameObserver:

设置音频帧数据回调委托,传 nil 停止回调。设置后需调用 enableAudioFrameObserver:audioSource:config: 开启对应数据源的回调。
- (int)setAudioFrameObserver:(id<aoqaudioframedelegate> _Nullable)delegate;
参数
参数类型说明
delegateid<aoqaudioframedelegate> 音频帧回调委托,详见 AoqAudioFrameDelegate;传 nil 停止回调
返回值:0 表示成功;非 0 表示失败。

enableAudioFrameObserver:audioSource:config:

开启或关闭指定位置的音频帧回调。
- (int)enableAudioFrameObserver:(BOOL)enabled
                   audioSource:(AoqAudioSource)audioSource
                        config:(AoqAudioObserverConfig * _Nonnull)config;
参数
参数类型说明
enabledBOOL是否允许数据回调
audioSourceAoqAudioSource音频裸数据源类型,详见 AoqAudioSource
configAoqAudioObserverConfig *回调参数设置,详见 AoqAudioObserverConfig
返回值:0 表示成功;非 0 表示失败。

视频帧回调

setVideoFrameObserver:

设置视频帧数据回调委托,传 nil 停止回调。设置后需调用 enableVideoFrameObserver:videoSource:config: 开启对应数据源的回调。
- (int)setVideoFrameObserver:(id<aoqvideoframedelegate> _Nullable)delegate;
参数
参数类型说明
delegateid<aoqvideoframedelegate> 视频帧回调委托,详见 AoqVideoFrameDelegate;传 nil 停止回调
返回值:0 表示成功;非 0 表示失败。

enableVideoFrameObserver:videoSource:config:

开启或关闭指定位置的视频帧回调。
- (int)enableVideoFrameObserver:(BOOL)enabled
                    videoSource:(AoqVideoSource)videoSource
                         config:(AoqVideoObserverConfig * _Nonnull)config;
参数
参数类型说明
enabledBOOL是否启用某位置数据回调
videoSourceAoqVideoSource视频帧回调数据源(管线位置),详见 AoqVideoSource
configAoqVideoObserverConfig *回调参数设置,详见 AoqVideoObserverConfig
返回值:0 表示成功;非 0 表示失败。

回调

AoqEngineDelegate

AoqEngineDelegate 是 SDK 所有异步事件通知的统一出口,在 createEngine:delegate: 时传入。所有回调方法均为 @required。连接状态流转:Disconnected → Connecting → Connected/Failed → Disconnected

onError:message:

引擎错误回调。
- (void)onError:(NSInteger)code message:(NSString * _Nonnull)message;
参数
参数类型说明
codeNSInteger错误码,详见 AoqErrorCode
messageNSString *错误描述

onWarning:message:

引擎警告回调。
- (void)onWarning:(NSInteger)code message:(NSString * _Nonnull)message;
参数
参数类型说明
codeNSInteger警告码,详见 AoqWarningCode
messageNSString *警告描述

onConnectionStatusChange:

引擎连接状态变化回调。
- (void)onConnectionStatusChange:(AoqConnectionStatus)status;
参数
参数类型说明
statusAoqConnectionStatus连接状态,详见 AoqConnectionStatus

onStats:

引擎统计信息回调。
- (void)onStats:(AoqStats * _Nonnull)stats;
参数
参数类型说明
statsAoqStats *统计数据,详见 AoqStats

onAudioDeviceStateChanged:

音频设备采集 / 播放操作状态变化回调。
- (void)onAudioDeviceStateChanged:(AoqAudioDeviceState * _Nonnull)state;
参数
参数类型说明
stateAoqAudioDeviceState *音频设备状态,详见 AoqAudioDeviceState

onAudioDeviceRouteChanged:

音频输出路由变化回调。
- (void)onAudioDeviceRouteChanged:(NSInteger)routeType;
参数
参数类型说明
routeTypeNSInteger路由类型,取值详见 AoqAudioDeviceRouteType

onAudioFileState:

音频文件播放状态回调。
- (void)onAudioFileState:(AoqAudioFileState * _Nonnull)state;
参数
参数类型说明
stateAoqAudioFileState *文件播放状态,详见 AoqAudioFileState

onLocalAudioVolumeIndication:

本地采集音量提示回调,需调用 enableLocalAudioVolumeIndication: 开启。
- (void)onLocalAudioVolumeIndication:(AoqAudioVolume * _Nonnull)volume;
参数
参数类型说明
volumeAoqAudioVolume *本地音量信息,详见 AoqAudioVolume

onVideoDeviceStateChanged:

视频设备采集操作状态变化回调。
- (void)onVideoDeviceStateChanged:(AoqVideoDeviceState * _Nonnull)state;
参数
参数类型说明
stateAoqVideoDeviceState *视频设备状态,详见 AoqVideoDeviceState

onDataMsg:

收到实时数据消息回调。
- (void)onDataMsg:(AoqDataMsg * _Nonnull)msg;
参数
参数类型说明
msgAoqDataMsg *数据消息,详见 AoqDataMsg

AoqAudioFrameDelegate

音频帧数据回调协议,所有方法均为 @optional。请不要在回调中做任何耗时操作,否则可能导致声音异常。

onCapturedAudioFrame:

采集裸数据回调。通过 enableAudioFrameObserver: 设置 audioSource = AoqAudioSourceCaptured 开启,支持设置采样率、声道数,支持读写模式。
- (void)onCapturedAudioFrame:(AoqAudioFrameData * _Nonnull)frame;
参数
参数类型说明
frameAoqAudioFrameData *采集音频裸数据,详见 AoqAudioFrameData

onProcessCapturedAudioFrame:

3A 后数据回调。通过 enableAudioFrameObserver: 设置 audioSource = AoqAudioSourceProcessCaptured 开启,支持设置采样率、声道数,支持读写模式。
- (void)onProcessCapturedAudioFrame:(AoqAudioFrameData * _Nonnull)frame;
参数
参数类型说明
frameAoqAudioFrameData *3A 处理后音频裸数据,详见 AoqAudioFrameData

onPublishAudioFrame:frame:

推流数据回调。通过 enableAudioFrameObserver: 设置 audioSource = AoqAudioSourcePublish 开启,支持设置采样率、声道数,仅支持只读模式。
- (void)onPublishAudioFrame:(AoqTrackType)trackType
                      frame:(AoqAudioFrameData * _Nonnull)frame;
参数
参数类型说明
trackTypeAoqTrackType音轨类型,详见 AoqTrackType
frameAoqAudioFrameData *推流音频裸数据,详见 AoqAudioFrameData

onPlaybackAudioFrame:

播放数据回调。通过 enableAudioFrameObserver: 设置 audioSource = AoqAudioSourcePlayback 开启,支持设置采样率、声道数,支持读写模式。
- (void)onPlaybackAudioFrame:(AoqAudioFrameData * _Nonnull)frame;
参数
参数类型说明
frameAoqAudioFrameData *播放音频裸数据,详见 AoqAudioFrameData

AoqVideoFrameDelegate

视频帧数据回调协议,所有方法均为 @optional。请不要在回调中做任何耗时操作,否则可能导致画面卡顿。回调返回 YES 表示数据已修改、需写回 SDK(写回仅对 I420 / CVPixelBuffer 生效);返回 NO 表示只读。frame 中的数据仅在回调期间有效,异步使用需自行拷贝。

onCapturedVideoFrame:

本地采集后裸数据回调(前处理前)。通过 enableVideoFrameObserver: 设置 videoSource = AoqVideoSourceCaptured 开启。
- (BOOL)onCapturedVideoFrame:(AoqVideoFrame * _Nonnull)frame;
参数
参数类型说明
frameAoqVideoFrame *采集视频帧数据,详见 AoqVideoFrame
返回值:YES 数据已修改、需写回 SDK;NO 只读。

onPreEncodeVideoFrame:frame:

本地编码前裸数据回调(前处理后)。通过 enableVideoFrameObserver: 设置 videoSource = AoqVideoSourcePreEncode 开启。
- (BOOL)onPreEncodeVideoFrame:(AoqTrackType)trackType
                        frame:(AoqVideoFrame * _Nonnull)frame;
参数
参数类型说明
trackTypeAoqTrackType视频轨道类型,详见 AoqTrackType
frameAoqVideoFrame *编码前视频帧数据,详见 AoqVideoFrame
返回值:YES 数据已修改、需写回 SDK;NO 只读。

onRemoteVideoFrame:frame:

远端解码后、渲染前裸数据回调。通过 enableVideoFrameObserver: 设置 videoSource = AoqVideoSourceRemote 开启。
- (BOOL)onRemoteVideoFrame:(AoqTrackType)trackType
                     frame:(AoqVideoFrame * _Nonnull)frame;
参数
参数类型说明
trackTypeAoqTrackType视频轨道类型,详见 AoqTrackType
frameAoqVideoFrame *远端视频帧数据,详见 AoqVideoFrame
返回值:YES 数据已修改、需写回 SDK;NO 只读。

数据类型与枚举

通用类型

AoqCreateConfig

引擎创建配置。
字段类型默认值说明
workDirNSString *""SDK 工作目录
enableDumpAudioBOOLNO是否开启音频原始数据 dump(调试用)
extrasNSString *""扩展参数

AoqConnectConfig

连接 Relay 服务器配置。
字段类型说明
tokenNSString *连接鉴权 Token
sidNSString *会话 ID
certFingerprintNSString *服务器证书指纹
relayEndpointsNSArray<aoqrelayendpoint *>*Relay 接入点列表
workspaceIdHashNSString *工作空间哈希 ID
publishTracksNSArray<aoqtrackparam *>*本端推流 track 属性数组
subscribeTracksNSArray<aoqtrackparam *>*本端拉流 track 属性数组

AoqRelayEndpoint

Relay 接入点。
字段类型默认值说明
routeIndexNSInteger-1路径序号
endpointNSString *""服务端地址(域名或 IP)
portNSInteger0服务端端口

AoqTrackParam

track 属性。
字段类型默认值说明
trackTypeAoqTrackTypeAudiotrack 类型
trackModeAoqTrackModeSegment流式与非流式模式,仅对音频下行生效

AoqDataMsg

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

统计信息类型

AoqStats

引擎统计信息。
字段类型说明
audioPublishStatsNSArray<aoqaudiopublishstats *>*音频推流统计数组
videoPublishStatsNSArray<aoqvideopublishstats *>*视频推流统计数组
dataMsgPublishStatsNSArray<aoqdatamsgpublishstats *>*数据消息推流统计数组
audioSubscribeStatsNSArray<aoqaudiosubscribestats *>*音频拉流统计数组
videoSubscribeStatsNSArray<aoqvideosubscribestats *>*视频拉流统计数组
dataMsgSubscribeStatsNSArray<aoqdatamsgsubscribestats *>*数据消息拉流统计数组
networkStatsAoqNetworkStats *网络统计信息

AoqNetworkStats

网络统计信息。
字段类型说明
sendBitrateNSUInteger发送码率(bps)
sendBytesNSUInteger累计发送字节数
recvBitrateNSUInteger接收码率(bps)
recvBytesNSUInteger累计接收字节数
lossNSUInteger丢包率(0-100)
rttNSUInteger往返延迟(ms)

AoqAudioPublishStats

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

AoqVideoPublishStats

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

AoqDataMsgPublishStats

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

AoqAudioSubscribeStats

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

AoqVideoSubscribeStats

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

AoqDataMsgSubscribeStats

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

枚举类型

AoqErrorCode

错误码枚举。
枚举值说明
AoqECOK0成功
AoqECParamInvalid1参数非法
AoqECStateInvalid2状态非法
AoqECUnSupport3接口不支持
AoqECAudio100音频通用错误
AoqECAudioExternalBufferFull110外部音频缓冲区满
AoqECAudioDevice120音频设备通用错误
AoqECAudioDeviceRecordingAuthFailed121录音权限未获取
AoqECAudioDeviceRecordingOccupied122录音设备被占用
AoqECAudioDeviceRecordingBackgroundStart123后台启动录音
AoqECAudioDeviceRecordingStartFail124录音启动失败
AoqECAudioDevicePlayoutOccupied125播放设备被占用
AoqECAudioDevicePlayoutBackgroundStart126后台启动播放
AoqECAudioDevicePlayoutStartFail127播放启动失败
AoqECVideo200视频通用错误
AoqECVideoExternalBufferFull210外部视频缓冲区满
AoqECVideoExternalCaptureNotEnabled211未启用外部视频采集
AoqECVideoExternalEncoderNotEnabled212未启用外部视频编码
AoqECVideoDevice220视频设备通用错误
AoqECVideoDeviceCameraOpenFail221摄像头打开失败
AoqECVideoDeviceCameraAuthFailed222摄像头权限未获取
AoqECVideoDeviceCameraOccupied223摄像头被占用
AoqECVideoDeviceCameraRunningError224摄像头运行错误
AoqECVideoCodec230视频编解码通用错误
AoqECVideoCodecEncoderInitFail231编码器初始化失败
AoqECVideoRender240视频渲染通用错误
AoqECVideoRenderCreateFail241渲染视图创建失败
AoqECVideoRenderDrawError242渲染绘制错误

AoqWarningCode

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

AoqTrackType

轨道类型。
枚举值说明
AoqTrackTypeAudio0音频轨道
AoqTrackTypeVideo1视频轨道
AoqTrackTypeData2数据消息轨道

AoqEncoderType

编码器类型。
枚举值说明
AoqEncoderTypeUnknown0未知格式
AoqEncoderTypeAudioPCM1音频 PCM
AoqEncoderTypeAudioOpus2音频 Opus
AoqEncoderTypeVideoH2643视频 H.264
AoqEncoderTypeVideoJpeg4视频 JPEG
AoqEncoderTypeDataText5数据文本

AoqTrackMode

流式与非流式模式,仅对音频下行生效。
枚举值说明
AoqTrackModeSegment0分段:数据按语义片段(如一句话)打包送达
AoqTrackModeStream1流式:数据持续、连续地送达

AoqConnectionStatus

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

音频类型

AoqAudioCaptureConfig

音频采集配置。
字段类型默认值说明
isExternalBOOLNO是否外部采集
channelNSInteger1音频采集通道数,支持 1/2

AoqAudioPlaybackConfig

音频播放配置。
字段类型默认值说明
isExternalBOOLNO是否外部播放
channelNSInteger1音频播放通道数,支持 1/2

AoqAudioCodecConfig

音频编解码配置。
字段类型默认值说明
trackTypeAoqTrackTypeAudio轨道类型
codecTypeAoqEncoderTypeAudioPCM编码格式
sampleRateNSInteger48000采样率(Hz)
channelNSInteger1声道数
bitrateNSInteger32000比特率(bps)

AoqAudioDeviceState

音频设备状态。
字段类型说明
stateAoqAudioDeviceStateCode状态码
reasonNSInteger错误码(AoqErrorCode

AoqAudioDeviceStateCode

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

AoqAudioDeviceRouteType

音频设备路由类型。
枚举值说明
AoqAudioDeviceRouteDefault0默认
AoqAudioDeviceRouteHeadset1耳机
AoqAudioDeviceRouteEarpiece2听筒
AoqAudioDeviceRouteHeadsetNoMic3无麦耳机
AoqAudioDeviceRouteSpeakerPhone4内置扬声器
AoqAudioDeviceRouteUsb5USB
AoqAudioDeviceRouteBluetooth6蓝牙
AoqAudioDeviceRouteBluetoothA2dp7蓝牙 A2DP

AoqAudioFileMixConfig

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

AoqAudioFileState

音频文件状态。
字段类型说明
fileIdNSString *文件 ID
stateCodeAoqAudioFileStateCode状态码
errorCodeAoqAudioFileErrorCode错误码

AoqAudioFileStateCode

音频文件状态码。
枚举值说明
AoqAudioFileNone0无状态
AoqAudioFileStarted1开始播放
AoqAudioFileStopped2停止播放
AoqAudioFilePaused3暂停播放
AoqAudioFileResumed4恢复播放
AoqAudioFileEnded5播放完毕
AoqAudioFileBuffering6正在缓冲
AoqAudioFileBufferingEnd7缓冲结束
AoqAudioFileFailed8播放失败

AoqAudioFileErrorCode

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

AoqAudioExternalStreamConfig

外部音频流配置。
字段类型默认值说明
trackTypeAoqTrackTypeAudio音频轨道类型
codecTypeAoqEncoderTypeAudioPCM音频流格式,支持 PCM
channelsNSInteger1声道数
sampleRateNSInteger48000采样率(Hz)
playoutVolumeNSInteger100播放音量,范围 [0, 100]
publishVolumeNSInteger100推流音量,范围 [0, 100]
maxBufferDurationNSInteger1000最大缓冲时长(ms)
enable3ABOOLNO输入 PCM 是否做 3A 处理

AoqAudioFrameData

外部音频数据。
字段类型说明
dataPtrvoid *音频 PCM 裸数据指针
dataSizeNSIntegerPCM 数据字节数
numOfSamplesNSInteger采样点数(单声道)
bytesPerSampleNSInteger每个采样点字节数
numOfChannelsNSInteger声道数
samplesPerSecNSInteger每秒采样点数
pushSequenceint32_tPCM 输入轮次
timeStampint64_t时间戳
autoGenMuteBOOL数据回调有效,YES 表示 SDK 生成的静音数据

AoqAudioStreamDirection

外部音频流方向。
枚举值说明
AoqAudioStreamPublish0推流音频
AoqAudioStreamPlayout1播放音频

AoqAudioExternalStreamToggle

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

AoqAudioSource

音频帧回调数据来源。
枚举值说明
AoqAudioSourceCaptured0采集的音频数据
AoqAudioSourceProcessCaptured13A 后的音频数据
AoqAudioSourcePublish2推流的音频数据(需 Connect 成功)
AoqAudioSourcePlayback3播放的音频数据

AoqAudioObserverMode

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

AoqAudioObserverConfig

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

AoqAudioVolumeIndicationConfig

本地音量提示配置。
字段类型默认值说明
intervalNSInteger0回调间隔(ms);0 且
smoothNSInteger3音量平滑系数,范围 [0, 10],取值越大越平滑

AoqAudioVolume

本地音量信息。
字段类型说明
volumeNSInteger平滑后的瞬时音量,范围 [0, 255]

视频类型

AoqVideoCaptureConfig

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

AoqVideoCanvas

视频渲染数据结构。
字段类型默认值说明
viewNSView *nil显示视图,传 nil 表示移除渲染绑定
renderModeAoqRenderModeAuto渲染模式
调用方需保证 view 生命周期长于 setLocalView:/setRemoteView: 设置期间。

AoqRenderMode

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

AoqVideoPixelFormat

视频像素格式。
枚举值说明
AoqVideoPixelFormatUnknown0未知格式
AoqVideoPixelFormatI4201I420
AoqVideoPixelFormatNV122NV12
AoqVideoPixelFormatNV213NV21
AoqVideoPixelFormatBGRA4BGRA
AoqVideoPixelFormatRGBA5RGBA
AoqVideoPixelFormatCVPixelBuffer6零拷贝路径,pixelBuffer 字段填 CVPixelBufferRef

AoqVideoFrame

外部视频数据。
字段类型说明
formatAoqVideoPixelFormat像素格式
widthNSInteger宽度(像素)
heightNSInteger高度(像素)
dataNSData *打包格式数据(NV12/NV21/BGRA/RGBA)
dataY/dataU/dataVNSData *I420 三平面数据
strideY/strideU/strideVNSIntegerI420 三平面步长
pixelBufferCVPixelBufferRef零拷贝,format=AoqVideoPixelFormatCVPixelBuffer 时使用
timeStampint64_t时间戳(ms);0 时 SDK 用本地时钟补

AoqVideoEncodedFrame

外部已编码视频帧。调用方自行完成编码,SDK 不做二次编码,直接打包发送。
字段类型说明
codecAoqVideoCodecType编码格式
dataNSData *编码后数据
widthNSInteger宽度(像素)
heightNSInteger高度(像素)
timeStampint64_t时间戳(ms);0 时 SDK 用本地时钟补

AoqVideoCodecType

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

AoqVideoDeviceState

视频设备状态。
字段类型说明
stateAoqVideoDeviceStateCode状态码
reasonNSInteger错误码(AoqErrorCode

AoqVideoDeviceStateCode

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

AoqMirrorMode

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

AoqOrientationMode

方向模式。
枚举值说明
AoqOrientationModeAuto0自动
AoqOrientationModePortrait1竖屏
AoqOrientationModeLandscape2横屏

AoqVideoCodecConfig

视频编解码参数(编解码共用)。用于解码时仅 trackType/codecType/width/height/fps/bitrate 生效(作为订阅提议参与协商),其余字段仅编码使用。
字段类型默认值说明
isExternalBOOLNO外部编码模式;YES 时由客户推送已编码帧,SDK 不做采集和编码
trackTypeAoqTrackTypeVideo轨道类型
codecTypeAoqEncoderTypeVideoH264编码格式
widthNSInteger540分辨率宽
heightNSInteger960分辨率高
fpsNSInteger5帧率
bitrateNSInteger500000起始码率(bps)
minBitrateNSInteger128000最小码率(bps)
keyframeIntervalNSInteger2关键帧间隔(秒)
mirrorModeAoqMirrorModeDisabled镜像模式
orientationModeAoqOrientationModeAuto方向模式

AoqVideoSource

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

AoqVideoObserverMode

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

AoqVideoObserverAlignment

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

AoqVideoObserverConfig

视频帧回调配置。
字段类型默认值说明
formatAoqVideoPixelFormatI420期望回调像素格式
alignmentAoqVideoObserverAlignmentDefault宽度对齐策略
modeAoqVideoObserverModeReadOnly读写模式,仅 I420 / CVPixelBuffer 支持 ReadWrite
mirrorAppliedBOOLNO是否对回调数据应用镜像

AoqRenderView

渲染视图控件,继承自 NSView,可作为 AoqVideoCanvas.view 使用。
属性类型说明
engineDisplayViewNSView *(只读)引擎内部显示视图
renderWidthint(只读)渲染宽度
renderHeightint(只读)渲染高度
enableMetalBOOL(只读)是否启用 Metal 渲染
delegateid<aoqrenderviewdelegate> 渲染视图事件委托

AoqRenderViewDelegate

渲染视图事件委托协议。
- (void)onRenderViewSizeChanged:(AoqRenderView * _Nonnull)view;
回调说明
onRenderViewSizeChanged:渲染视图尺寸变化回调