跳转到主要内容
SDK简介

Windows SDK

AOQ Windows SDK C++ 接口参考

本文介绍 AOQ Client SDK Windows 版的 C++ 接口、回调和数据类型,帮助您在 Windows 应用中接入实时音视频和数据消息能力。 SDK 以全局单例方式持有引擎实例,通过 AoqClientEngine 类对外提供接口,通过 AoqEngineEventListener 抽象类统一回调异步事件。所有类型定义位于 AoqClientSdk 命名空间,头文件为 AoqClientEngine.h
所有 const char* 字符串由调用方负责生命周期,至少需保持到相应调用返回后,引擎内部将按需拷贝。

接口目录

引擎生命周期

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

音频设备管理

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

音频编码配置

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

视频设备管理

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

视频编码与外部输入

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

媒体流发送控制

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

音频文件播放

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

外部音频流

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

实时消息

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

音频帧回调

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

视频帧回调

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

AoqEngineEventListener 回调

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

接口详情

引擎生命周期

createEngine

创建引擎实例。SDK 内部以全局单例方式持有引擎,重复调用会返回已创建的实例。
static AoqClientEngine* createEngine(const AoqCreateConfig& config,
                                     AoqEngineEventListener* listener);
参数
参数类型说明
configconst AoqCreateConfig&引擎创建配置,详见 AoqCreateConfig
listenerAoqEngineEventListener*事件回调监听器,详见 AoqEngineEventListener
返回值:引擎实例指针,失败返回 nullptr

destroy

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

getVersion

获取 SDK 的版本号。
static const char* getVersion();
返回值:版本号字符串。

connect

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

disconnect

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

音频设备管理

startAudioCapture

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

stopAudioCapture

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

muteAudioCapture

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

startAudioPlayer

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

stopAudioPlayer

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

pauseAudioPlayer

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

resumeAudioPlayer

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

interruptAudioPlayer

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

enableLocalAudioVolumeIndication

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

音频编码配置

setAudioEncoderConfig

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

setAudioDecoderConfig

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

视频设备管理

startVideoCapture

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

stopVideoCapture

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

setLocalView

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

setRemoteView

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

视频编码与外部输入

setVideoEncoderConfig

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

setVideoDecoderConfig

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

pushExternalVideoCapturedFrame

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

pushExternalVideoEncodedFrame

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

媒体流发送控制

enableSendMediaStream

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

音频文件播放

startAudioFile

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

stopAudioFile

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

pauseAudioFile

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

resumeAudioFile

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

getAudioFileDuration

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

getAudioFileCurrentPosition

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

setAudioFilePositionMillis

设置音频文件播放位置(seek)。
virtual int setAudioFilePositionMillis(const char* fileId, int64_t positionMillis);
参数
参数类型说明
fileIdconst char*音频文件 ID
positionMillisint64_t播放位置,单位毫秒
返回值:0 表示成功;非 0 表示失败。

setAudioFileVolume

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

getAudioFileVolume

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

外部音频流

addAudioExternalStream

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

pushAudioExternalStreamData

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

setAudioExternalStreamVolume

设置外部音频流音量。
virtual int setAudioExternalStreamVolume(const char* streamId, AoqAudioStreamDirection type, int vol);
参数
参数类型说明
streamIdconst char*外部音频流 ID
typeAoqAudioStreamDirection外部音频流类型,详见 AoqAudioStreamDirection
volint音量值,范围 [0, 100]
返回值:0 表示成功;非 0 表示失败。

getAudioExternalStreamVolume

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

clearAudioExternalStreamBuffer

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

removeAudioExternalStream

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

实时消息

sendDataMsg

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

音频帧回调

setAudioFrameObserver

设置音频帧数据回调监听器,传 nullptr 停止回调。设置后需调用 enableAudioFrameObserver 开启对应数据源的回调。
virtual int setAudioFrameObserver(IAudioFrameObserver* observer) = 0;
参数
参数类型说明
observerIAudioFrameObserver*音频帧回调监听器,详见 IAudioFrameObserver;传 nullptr 停止回调
返回值:0 表示成功;非 0 表示失败。

enableAudioFrameObserver

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

视频帧回调

setVideoFrameObserver

设置视频帧数据回调监听器,传 nullptr 停止回调。设置后需调用 enableVideoFrameObserver 开启对应数据源的回调。
virtual int setVideoFrameObserver(IVideoFrameObserver* observer) = 0;
参数
参数类型说明
observerIVideoFrameObserver*视频帧回调监听器,详见 IVideoFrameObserver;传 nullptr 停止回调
返回值:0 表示成功;非 0 表示失败。

enableVideoFrameObserver

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

回调

AoqEngineEventListener

AoqEngineEventListener 是 SDK 所有异步事件通知的统一出口,为抽象类,由调用方继承实现并在 createEngine 时传入。所有回调可能在内部线程触发,实现者需自行处理线程安全。连接状态流转:Disconnected → Connecting → Connected/Failed → Disconnected

onError

引擎错误回调。
virtual void onError(int code, const char* message) = 0;
参数
参数类型说明
codeint错误码,详见 AoqErrorCode
messageconst char*错误描述

onWarning

引擎警告回调。
virtual void onWarning(int code, const char* message) = 0;
参数
参数类型说明
codeint警告码,详见 AoqWarningCode
messageconst char*警告描述

onConnectionStatusChange

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

onStats

引擎统计信息回调。
virtual void onStats(const AoqStats& stats) = 0;
参数
参数类型说明
statsconst AoqStats&统计数据,详见 AoqStats

onAudioDeviceStateChanged

音频设备采集 / 播放操作状态变化回调。
virtual void onAudioDeviceStateChanged(const AoqAudioDeviceState& state) = 0;
参数
参数类型说明
stateconst AoqAudioDeviceState&音频设备状态,详见 AoqAudioDeviceState

onAudioDeviceRouteChanged

音频输出路由变化回调。
virtual void onAudioDeviceRouteChanged(int routeType) = 0;
参数
参数类型说明
routeTypeint路由类型,取值详见 AoqAudioDeviceRouteType

onAudioFileState

音频文件播放状态回调。
virtual void onAudioFileState(const AoqAudioFileState& state) = 0;
参数
参数类型说明
stateconst AoqAudioFileState&文件播放状态,详见 AoqAudioFileState

onLocalAudioVolumeIndication

本地采集音量提示回调,需调用 enableLocalAudioVolumeIndication 开启。
virtual void onLocalAudioVolumeIndication(const AoqAudioVolume& volume) = 0;
参数
参数类型说明
volumeconst AoqAudioVolume&本地音量信息,详见 AoqAudioVolume

onVideoDeviceStateChanged

视频设备采集操作状态变化回调。
virtual void onVideoDeviceStateChanged(const AoqVideoDeviceState& state) = 0;
参数
参数类型说明
stateconst AoqVideoDeviceState&视频设备状态,详见 AoqVideoDeviceState

onDataMsg

收到实时数据消息回调。
virtual void onDataMsg(const AoqDataMsg& msg) = 0;
参数
参数类型说明
msgconst AoqDataMsg&数据消息,详见 AoqDataMsg

IAudioFrameObserver

音频帧数据回调接口,由调用方继承实现。请不要在回调中做任何耗时操作,否则可能导致声音异常。

onCapturedAudioFrame

采集裸数据回调。通过 enableAudioFrameObserver 设置 audioSource = AoqAudioSourceCaptured 开启,支持设置采样率、声道数,支持读写模式。
virtual void onCapturedAudioFrame(const AoqAudioFrameData& data) = 0;
参数
参数类型说明
dataconst AoqAudioFrameData&采集音频裸数据,详见 AoqAudioFrameData

onProcessCapturedAudioFrame

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

onPublishAudioFrame

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

onPlaybackAudioFrame

播放数据回调。通过 enableAudioFrameObserver 设置 audioSource = AoqAudioSourcePlayback 开启,支持设置采样率、声道数,支持读写模式。
virtual void onPlaybackAudioFrame(const AoqAudioFrameData& data) = 0;
参数
参数类型说明
dataconst AoqAudioFrameData&播放音频裸数据,详见 AoqAudioFrameData

IVideoFrameObserver

视频帧数据回调接口,由调用方继承实现。请不要在回调中做任何耗时操作,否则可能导致画面卡顿。回调返回 true 表示数据已修改、需写回 SDK(写回仅对 I420 生效);返回 false 表示只读。frame 中的数据仅在回调期间有效,异步使用需自行拷贝。

onCapturedVideoFrame

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

onPreEncodeVideoFrame

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

onRemoteVideoFrame

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

数据类型与枚举

通用类型

AoqCreateConfig

引擎创建配置。
字段类型默认值说明
workDirconst char*nullptrSDK 工作目录
enableDumpAudioboolfalse是否开启音频数据保存(调试用)
extrasconst char*nullptr扩展参数(JSON 字符串)

AoqConnectConfig

连接 Relay 服务器配置。relayEndpoints/publishTracks/subscribeTracks 为 C 风格数组 + 长度,数组内存由调用方持有,仅需在 connect 调用期间保持有效。
字段类型说明
tokenconst char*连接鉴权 Token
sidconst char*会话 ID
certFingerprintconst char*服务器证书指纹
workspaceIdHashconst char*工作空间哈希 ID
relayEndpointsconst AoqRelayEndpoint*Relay 接入点数组
relayEndpointsCountsize_tRelay 接入点数量
publishTracksconst AoqTrackParam*本端推流 track 属性数组
publishTracksCountsize_t推流 track 数量
subscribeTracksconst AoqTrackParam*本端拉流 track 属性数组
subscribeTracksCountsize_t拉流 track 数量

AoqRelayEndpoint

Relay 接入点。
字段类型默认值说明
route_indexint-1路径序号
endpointconst char*nullptr服务端地址(域名或 IP)
portint0服务端端口

AoqTrackParam

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

AoqDataMsg

消息数据结构。回调中使用时仅保证回调期间有效,如需异步使用请自行拷贝。
字段类型说明
dataconst uint8_t*消息内容,指向调用方持有的内存
dataSizesize_t字节数

统计信息类型

AoqStats

引擎统计信息。各统计数组以指针 + 数量形式提供。
字段类型说明
audioPublishStats/audioPublishStatsCountconst AoqAudioPublishStats*/unsigned int音频推流统计数组及数量
videoPublishStats/videoPublishStatsCountconst AoqVideoPublishStats*/unsigned int视频推流统计数组及数量
dataMsgPublishStats/dataMsgPublishStatsCountconst AoqDataMsgPublishStats*/unsigned int数据消息推流统计数组及数量
audioSubscribeStats/audioSubscribeStatsCountconst AoqAudioSubscribeStats*/unsigned int音频拉流统计数组及数量
videoSubscribeStats/videoSubscribeStatsCountconst AoqVideoSubscribeStats*/unsigned int视频拉流统计数组及数量
dataMsgSubscribeStats/dataMsgSubscribeStatsCountconst AoqDataMsgSubscribeStats*/unsigned int数据消息拉流统计数组及数量
networkStatsconst AoqNetworkStats*网络统计信息

AoqNetworkStats

网络统计信息。
字段类型说明
sendBitrateunsigned int发送码率(bps)
sendBytesuint64_t累计发送字节数
recvBitrateunsigned int接收码率(bps)
recvBytesuint64_t累计接收字节数
lossunsigned int丢包率(0-100)
rttunsigned int往返延迟(ms)

AoqAudioPublishStats

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

AoqVideoPublishStats

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

AoqDataMsgPublishStats

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

AoqAudioSubscribeStats

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

AoqVideoSubscribeStats

视频拉流统计信息。
字段类型说明
trackTypeAoqTrackType轨道类型
bitrateunsigned int码率(bps)
bytesuint64_t累计字节数
decodeFpsunsigned int解码帧率
renderFpsunsigned int渲染帧率

AoqDataMsgSubscribeStats

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

枚举类型

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渲染绘制错误

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(插件化,需联系 SDK 提供内置或动态下载到 APP 下)
AoqEncoderTypeVideoH2643视频 H.264
AoqEncoderTypeVideoJpeg4视频 JPEG
AoqEncoderTypeDataText5数据文本

AoqTrackMode

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

AoqConnectionStatus

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

音频类型

AoqAudioCaptureConfig

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

AoqAudioPlaybackConfig

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

AoqAudioCodecConfig

音频编解码配置。
字段类型默认值说明
trackTypeAoqTrackTypeAudio轨道类型
codecTypeAoqEncoderTypeAudioPCM编码格式
sampleRateint48000采样率(Hz)。编码支持 Opus 8/16/48K、PCM 8/16/32/48K;解码额外支持 24K,但 24K 仅限 Segment 模式(Stream 模式不支持 24K,非法组合在 connect 时通过 onError 回调 AoqECParamInvalid)
channelint1声道数,支持 1/2
bitrateint32000比特率(bps)

AoqAudioDeviceState

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

AoqAudioDeviceStateCode

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

AoqAudioDeviceRouteType

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

AoqAudioFileMixConfig

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

AoqAudioFileState

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

AoqAudioFileStateCode

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

AoqAudioFileErrorCode

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

AoqAudioExternalStreamConfig

外部音频流配置。
字段类型默认值说明
trackTypeAoqTrackTypeAudio音频轨道类型
codecTypeAoqEncoderTypeAudioPCM音频流格式,支持 PCM
channelsint1声道数,受限推流音频 Codec 支持 1/2,超过的声道忽略
sampleRateint48000采样率(Hz),支持 8/12/16/24/32/44.1/48/64/88.2/96/176.4/192K
playoutVolumeint100播放音量,范围 [0, 100]
publishVolumeint100推流音量,范围 [0, 100]
maxBufferDurationint600000最大缓冲时长(ms),取值范围 [100, ~],SDK 缓存时长超过时 Push 会失败
enable3Aboolfalse输入 PCM 是否做 3A 处理

AoqAudioFrameData

音频数据。
字段类型说明
dataPtrvoid*音频数据指针
numOfSamplesint采样点数(单个声道)
bytesPerSampleint每个采样点的字节数
numOfChannelsint声道数
samplesPerSecint每秒采样点数
pushSequenceintPCM 输入轮次(用于 pushAudioExternalStreamData 消费完通知)
timeStampint64_t时间戳
dataSizeint数据长度
autoGenMutebool数据回调有效,true 表示 SDK 生成的静音数据

AoqAudioStreamDirection

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

AoqAudioExternalStreamToggle

外部音频流控制。
枚举值说明
AoqAudioExternalStreamToggleNormal0恢复正常
AoqAudioExternalStreamTogglePause1暂停

AoqAudioSource

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

AoqAudioObserverMode

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

AoqAudioObserverConfig

音频数据回调参数设置。
字段类型默认值说明
sampleRateint48000回调音频采样率,受限 Source 源,不一致时重采样,支持 8/12/16/24/32/44.1/48/64/88.2/96/176.4/192K
channelsint1回调音频声道数,支持 1/2,受限拉流 Codec 参数
modeAoqAudioObserverModeReadOnly回调模式

AoqAudioVolumeIndicationConfig

本地音量提示配置。
字段类型默认值说明
intervalint0回调间隔(ms);<=0 关闭回调,>0<10 时按 10 处理
smoothint3音量平滑系数,范围 [0, 10],取值越大越平滑

AoqAudioVolume

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

视频类型

AoqVideoCaptureConfig

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

AoqVideoCanvas

视频渲染数据结构。view 为平台原生视图句柄的不透明指针,Windows 平台填窗口句柄 HWND。调用方需保证 view 生命周期长于 setLocalView/setRemoteView 设置期间。
字段类型默认值说明
viewvoid*nullptr显示视图句柄(HWND),传 nullptr 表示移除渲染绑定
renderModeAoqRenderModeAuto渲染模式

AoqRenderMode

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

AoqVideoPixelFormat

视频像素格式。
枚举值说明
AoqVideoPixelFormatUnknown0未知格式
AoqVideoPixelFormatI4201I420
AoqVideoPixelFormatNV122NV12
AoqVideoPixelFormatNV213NV21
AoqVideoPixelFormatBGRA4BGRA
AoqVideoPixelFormatRGBA5RGBA

AoqVideoFrame

外部视频数据。
字段类型说明
formatAoqVideoPixelFormat像素格式
widthint宽度(像素)
heightint高度(像素)
dataPtrvoid*打包格式数据指针(NV12/NV21/BGRA/RGBA)
dataSizeint打包数据字节数
dataY/dataU/dataVvoid*I420 三平面数据指针
strideY/strideU/strideVintI420 三平面步长
timeStampint64_t时间戳(ms);0 时 SDK 用本地时钟补

AoqVideoEncodedFrame

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

AoqVideoCodecType

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

AoqVideoDeviceState

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

AoqVideoDeviceStateCode

视频设备状态码。
枚举值说明
AoqVideoDeviceNone0无状态
AoqVideoDeviceCaptureStarting1摄像头正在启动
AoqVideoDeviceCaptureStarted2摄像头已启动
AoqVideoDeviceCaptureStopping3摄像头正在停止
AoqVideoDeviceCaptureStopped4摄像头已停止
AoqVideoDeviceCaptureFail5摄像头启动失败(权限拒绝、设备不可用等)

AoqMirrorMode

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

AoqOrientationMode

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

AoqVideoCodecConfig

视频编解码参数(编解码共用)。用于解码时仅 trackType/codecType/width/height/fps/bitrate 生效(作为订阅提议参与协商),minBitrate/keyframeInterval/mirrorMode/orientationMode/isExternal 仅编码使用。
字段类型默认值说明
isExternalboolfalse外部编码模式;true 时由客户推送已编码帧,SDK 不做采集和编码
trackTypeAoqTrackTypeVideo轨道类型
codecTypeAoqEncoderTypeVideoH264编码格式
widthint540分辨率宽
heightint960分辨率高
fpsint5帧率
bitrateint500000起始码率(bps)
minBitrateint128000最小码率(bps)
keyframeIntervalint2关键帧间隔(秒)
mirrorModeAoqMirrorModeDisabled镜像模式
orientationModeAoqOrientationModeAuto方向模式

AoqVideoSource

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

AoqVideoObserverMode

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

AoqVideoObserverAlignment

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

AoqVideoObserverConfig

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