Skip to main content

AOQ Client SDK Linux C++ API 參考

本文介紹 AOQ Client SDK Linux 版的 C++ 介面、回調和資料類型。

介面目錄

引擎生命週期

介面

簡介

createEngine

建立引擎執行個體(靜態方法,單例)

destroy

銷毀引擎執行個體(靜態方法)

getVersion

擷取 SDK 版本號碼(靜態方法)

connect

串連 Relay 伺服器

disconnect

斷開伺服器串連

音訊裝置管理

介面

簡介

startAudioCapture

開啟音頻採集裝置(Linux 空實現)

stopAudioCapture

關閉音頻採集裝置(Linux 無效果)

muteAudioCapture

靜音或取消靜音音頻採集

startAudioPlayer

開始音頻渲染(Linux 空實現)

stopAudioPlayer

停止音頻渲染(Linux 無效果)

pauseAudioPlayer

暫停音頻渲染,支援淡出

resumeAudioPlayer

恢複音頻渲染,支援淡入

interruptAudioPlayer

打斷本輪音頻播放

音頻編解碼配置

介面

簡介

setAudioEncoderConfig

設定音頻編碼參數

setAudioDecoderConfig

設定音頻解碼參數

視頻裝置管理

介面

簡介

startVideoCapture

開啟視頻採集裝置(Linux 僅支援外部採集模式)

stopVideoCapture

關閉視頻採集裝置

setLocalView

設定或移除本地視頻渲染視窗(Linux 無渲染實現)

setRemoteView

設定或移除遠端視頻渲染視窗(Linux 無渲染實現)

視頻編解碼與外部輸入

介面

簡介

setVideoEncoderConfig

設定視頻編碼參數

setVideoDecoderConfig

設定視頻解碼參數(訂閱側 codec 提議)

pushExternalVideoCapturedFrame

推送外部採集視訊框架

pushExternalVideoEncodedFrame

推送外部已編碼視訊框架

媒體流發送控制

介面

簡介

enableSendMediaStream

控制本地媒體流的發送開關

音頻檔案播放

介面

簡介

startAudioFile

開始推流播放本地音頻檔案

stopAudioFile

停止音頻檔案播放

pauseAudioFile

暫停音頻檔案播放

resumeAudioFile

恢複音頻檔案播放

getAudioFileDuration

擷取音頻檔案總時間長度

getAudioFileCurrentPosition

擷取音頻檔案當前播放位置

setAudioFilePositionMillis

設定音頻檔案播放位置(seek)

setAudioFileVolume

設定音頻檔案音量

getAudioFileVolume

擷取音頻檔案當前音量

外部音頻流

介面

簡介

addAudioExternalStream

新增一條外部音頻流

pushAudioExternalStreamData

輸入外部音頻 PCM 資料

setAudioExternalStreamVolume

設定外部音頻流音量

getAudioExternalStreamVolume

擷取外部音頻流音量

clearAudioExternalStreamBuffer

清空外部音頻流緩衝

removeAudioExternalStream

移除外部音頻流

即時訊息

介面

簡介

sendDataMsg

發送即時資料訊息

音訊框架回調

介面

簡介

setAudioFrameObserver

註冊音訊框架資料監聽器(純虛)

enableAudioFrameObserver

開啟或關閉指定位置的音訊框架回調(純虛)

本地音量提示

介面

簡介

enableLocalAudioVolumeIndication

開啟或關閉本地採集音量提示回調

視訊框架回調

介面

簡介

setVideoFrameObserver

註冊視訊框架資料監聽器(純虛)

enableVideoFrameObserver

開啟或關閉指定位置的視訊框架回調(純虛)

AoqEngineEventListener 回調

回調

簡介

onError

引擎錯誤回調

onWarning

引擎警告回調

onConnectionStatusChange

串連狀態變化回調

onStats

引擎統計資訊回調

onAudioDeviceStateChanged

音訊裝置操作狀態變化回調

onAudioDeviceRouteChanged

音訊輸出路由變化回調(Linux 不觸發)

onAudioFileState

音頻檔案播放狀態回調

onLocalAudioVolumeIndication

本地採集音量提示回調

onVideoDeviceStateChanged

視頻裝置操作狀態變化回調

onDataMsg

收到即時資料訊息回調

幀資料監聽介面

介面

簡介

IAudioFrameObserver

音訊框架資料監聽介面(4 個純虛回調)

IVideoFrameObserver

視訊框架資料監聽介面(3 個純虛回調)

介面詳情

引擎生命週期

createEngine

建立引擎執行個體。SDK 內部以全域單例方式持有引擎,重複調用會返回已建立的執行個體。
static AoqClientEngine* createEngine(const AoqCreateConfig& config,
                                    AoqEngineEventListener* listener);

參數

類型

說明

config

AoqCreateConfig

引擎建立配置

listener

AoqEngineEventListener\*

引擎事件回調監聽器,由調用方繼承實現

傳回值:引擎執行個體指標;失敗返回 nullptr。listener 生命週期需長於引擎。

destroy

銷毀引擎執行個體,釋放所有資源。
static int destroy();
傳回值:0 表示成功;非 0 表示失敗。

getVersion

擷取 SDK 目前的版本號。
static const char* getVersion();
傳回值:版本號碼字串,字串由 SDK 持有。

connect

串連 Relay 伺服器。業務 AppServer 應根據所用協議擷取臨時 AOQ 串連參數並下發給用戶端,具體操作請參見Token 鑒權。
virtual int connect(const AoqConnectConfig& config);

參數

類型

說明

config

AoqConnectConfig

串連配置,包含 Token、SID、Relay 存取點數組、推拉流 track 數組等

傳回值:0 表示成功(非同步執行);非 0 表示失敗。串連結果由 onConnectionStatusChange 通知。
relayEndpoints / publishTracks / subscribeTracks 均為「C 風格數組指標 + 長度」,記憶體由調用方持有,僅需在 connect 調用期間有效。

disconnect

斷開與伺服器的串連,釋放串連相關資源。
virtual int disconnect();
傳回值:0 表示成功;非 0 表示失敗。

音訊裝置管理

virtual int startAudioCapture(const AoqAudioCaptureConfig& config);
virtual int stopAudioCapture();
virtual int muteAudioCapture(bool mute);
virtual int startAudioPlayer(const AoqAudioPlaybackConfig& config);
virtual int stopAudioPlayer();
virtual int pauseAudioPlayer(int fadeMs);
virtual int resumeAudioPlayer(int fadeMs);
virtual int interruptAudioPlayer(AoqTrackType trackType, int fadeMs);

參數

類型

說明

config

AoqAudioCaptureConfig / AoqAudioPlaybackConfig

採集 / 播放配置

mute

bool

true 靜音,false 取消靜音

fadeMs

int

淡出 / 淡入時間長度(毫秒),0 表示立即執行

trackType

AoqTrackType

軌道類型

Linux 重要約束:startAudioCapture / startAudioPlayer 在 Linux 構建下為空白實現(直接返回 0,不開啟任何音效卡裝置),stopAudioCapture / stopAudioPlayer 因內部狀態未置位同樣無實際效果。Linux 上音頻輸入請使用外部音頻流(2.8),音訊輸出請使用音訊框架回調(2.10)自行播放。詳見 4.3。

音頻編解碼配置

virtual int setAudioEncoderConfig(const AoqAudioCodecConfig& config);
virtual int setAudioDecoderConfig(const AoqAudioCodecConfig& config);
建議在 connect() 之前調用。採樣率與模式的非法組合會在 connect 時通過 onError 回調 AoqECParamInvalid。

視頻裝置管理

virtual int startVideoCapture(const AoqVideoCaptureConfig& config);
virtual int stopVideoCapture();
virtual int setLocalView(AoqTrackType trackType, const AoqVideoCanvas& canvas);
virtual int setRemoteView(AoqTrackType trackType, const AoqVideoCanvas& canvas);

參數

類型

說明

config

AoqVideoCaptureConfig

視頻採集配置

trackType

AoqTrackType

視頻軌道類型

canvas

AoqVideoCanvas

渲染畫布;canvas.view == nullptr 表示解除綁定

Linux 重要約束:Linux 網路攝影機採集為佔位實現,不會產出幀,請使用 startVideoCapture({.isExternal = true}) + pushExternalVideoCapturedFrame 送幀;setLocalView / setRemoteView 在 Linux 無渲染後端(AoqVideoCanvas.view 僅支援 Apple NSView* / Windows HWND / Android 渲染視圖),預覽請通過視訊框架回調(2.12)自行渲染。詳見 4.3。

視頻編解碼與外部輸入

virtual int setVideoEncoderConfig(const AoqVideoCodecConfig& config);
virtual int setVideoDecoderConfig(const AoqVideoCodecConfig& config);
virtual int pushExternalVideoCapturedFrame(AoqTrackType trackType, const AoqVideoFrame& frame);
virtual int pushExternalVideoEncodedFrame(AoqTrackType trackType, const AoqVideoEncodedFrame& frame);

參數

類型

說明

config

AoqVideoCodecConfig

編解碼配置,按 config.trackType 路由

trackType

AoqTrackType

路由目標,取 AoqTrackTypeVideo

frame

AoqVideoFrame / AoqVideoEncodedFrame

裸幀 / 已編碼幀資料

注意:
  • setVideoDecoderConfig 為訂閱側 codec 提議,需在 connect 之前調用;解碼時僅 trackType/codecType/width/height/fps/bitrate 生效。
  • pushExternalVideoCapturedFrame 需先 startVideoCapture(isExternal=true);未啟動外部採集時返回 AoqECVideoExternalCaptureNotEnabled(211),格式不支援時返回 AoqECParamInvalid,緩衝區滿時返回 AoqECVideoExternalBufferFull(210)。
  • pushExternalVideoEncodedFrame 需先 setVideoEncoderConfig(isExternal=true),SDK 不做二次編碼直接打包發送,當前僅支援 JPEG。
  • frame.timeStamp 為 0 時由 SDK 使用本地時間補齊。

媒體流發送控制

virtual int enableSendMediaStream(AoqTrackType trackType, bool enable);
控制本地某路媒體流是否發送,trackType 取 AoqTrackTypeAudio / AoqTrackTypeVideo。返回 0 表示調用已下發(非同步執行)。建議初始化後先關閉發送,待 onConnectionStatusChange 上報 AoqConnectionStatusConnected 後再開啟。

音頻檔案播放

virtual int startAudioFile(const char* fileId, const AoqAudioFileMixConfig& config);
virtual int stopAudioFile(const char* fileId);
virtual int pauseAudioFile(const char* fileId);
virtual int resumeAudioFile(const char* fileId);
virtual int64_t getAudioFileDuration(const char* fileId);
virtual int64_t getAudioFileCurrentPosition(const char* fileId);
virtual int setAudioFilePositionMillis(const char* fileId, int64_t positionMillis);
virtual int setAudioFileVolume(const char* fileId, AoqAudioStreamDirection type, int volume);
virtual int getAudioFileVolume(const char* fileId, AoqAudioStreamDirection type);

參數

類型

說明

fileId

const char\*

音頻檔案 Id,業務層需保證全域唯一

config

AoqAudioFileMixConfig

檔案混音配置

positionMillis

int64_t

目標播放位置(毫秒)

type

AoqAudioStreamDirection

推流音量或本地播放音量

volume

int

音量,取值範圍 0-100

傳回值說明:
  • getAudioFileDuration / getAudioFileCurrentPosition:>=0 為毫秒值;<0 失敗,絕對值為 -AoqErrorCode。
  • getAudioFileVolume:0-100 為音量值;<0 失敗,絕對值為 -AoqErrorCode。
播放狀態變化通過 onAudioFileState 回調上報。檔案混音走推流鏈路,不依賴本地音效卡,因此在 Linux 上可用於將本地檔案作為音頻源推送。

外部音頻流

virtual int addAudioExternalStream(const char* streamId, const AoqAudioExternalStreamConfig& config);
virtual int pushAudioExternalStreamData(const char* streamId, AoqAudioFrameData& data);
virtual int setAudioExternalStreamVolume(const char* streamId, AoqAudioStreamDirection type, int vol);
virtual int getAudioExternalStreamVolume(const char* streamId, AoqAudioStreamDirection type);
virtual void clearAudioExternalStreamBuffer(const char* streamId, int fadeoutMs);
virtual int removeAudioExternalStream(const char* streamId);

參數

類型

說明

streamId

const char\*

外部音頻流 Id,業務層需保證全域唯一

config

AoqAudioExternalStreamConfig

外部音頻流配置

data

AoqAudioFrameData

外部音頻裸資料(PCM),非 const 引用

type

AoqAudioStreamDirection

推流音量或本地播放音量

vol

int

音量,取值範圍 0-100

fadeoutMs

int

淡出時間長度;-1 用 SDK 預設淡出,0 全部清空無淡出,>0 保留指定毫秒淡出

注意:
  • pushAudioExternalStreamData 返回 AoqECAudioExternalBufferFull(110) 表示 SDK 內部緩衝區已滿,建議等待 20ms 後重新送當前資料幀。
  • 最佳實務:即時採集情境一次 Push 10ms 資料、有資料就 Push;檔案源情境一次 Push 40ms 資料、間隔 30ms 送一次,並處理 AoqECAudioExternalBufferFull 返回。
  • getAudioExternalStreamVolume:0-100 為音量值;<0 失敗,絕對值為 -AoqErrorCode。
  • clearAudioExternalStreamBuffer 返回 void,無傳回值。
  • data.pushSequence 用於 SDK 消費完成通知(PCM 輸入輪次)。
    Linux 上無真實採集裝置,本組介面是音頻上行的主鏈路。

即時訊息

virtual int sendDataMsg(const AoqDataMsg& msg);
發送即時資料訊息。msg.data 指向調用方持有的記憶體,僅需在調用期間有效。對端訊息通過 onDataMsg 回調。

音訊框架回調

virtual int setAudioFrameObserver(IAudioFrameObserver* observer) = 0;
virtual int enableAudioFrameObserver(bool enabled, AoqAudioSource audioSource,
                                     const AoqAudioObserverConfig& config) = 0;

參數

類型

說明

observer

IAudioFrameObserver\*

監聽器執行個體;傳 nullptr 停止回調

enabled

bool

是否開啟該位置的資料回調

audioSource

AoqAudioSource

音頻裸資料來源位置

config

AoqAudioObserverConfig

回調採樣率、聲道數與讀寫入模式

使用步驟:先 setAudioFrameObserver(observer) 註冊監聽器,再對需要的位置調 enableAudioFrameObserver。observer 生命週期需覆蓋整個回調期間;取消註冊後再釋放。 讀寫入模式支援情況(見 IAudioFrameObserver 聲明):onCapturedAudioFrame / onProcessCapturedAudioFrame / onPlaybackAudioFrame 支援讀寫,onPublishAudioFrame 僅支援唯讀。
Linux 上 setAudioFrameObserver 內部走非同步投遞(PostTask 到控制線程)完成註冊,因此調用返回後回調可能略後生效;釋放 observer 前請留足安全間隔或保持對象存活。

本地音量提示

virtual int enableLocalAudioVolumeIndication(const AoqAudioVolumeIndicationConfig& config);
開啟/關閉本地採集音量提示。config.interval <= 0 時關閉回調;開啟後按 config.interval 周期觸發 onLocalAudioVolumeIndication。需在 startAudioCapture 之後調用才有音量資料。
Linux 上無裝置採集,該回調的音量資料來自推流/播放混音鏈路(mixer)。

視訊框架回調

virtual int setVideoFrameObserver(IVideoFrameObserver* observer) = 0;
virtual int enableVideoFrameObserver(bool enabled, AoqVideoSource videoSource,
                                     const AoqVideoObserverConfig& config) = 0;

參數

類型

說明

observer

IVideoFrameObserver\*

監聽器執行個體;傳 nullptr 停止回調

enabled

bool

是否開啟該位置的資料回調

videoSource

AoqVideoSource

視訊框架回調資料來源(管線位置)

config

AoqVideoObserverConfig

期望像素格式、對齊策略、讀寫入模式、鏡像

回調返回 true 表示資料已修改需寫回 SDK(僅 I420 / CVPixelBuffer 生效,Linux 下即僅 I420);返回 false 為唯讀。
Linux 無內建渲染,本組回調是擷取遠端視頻畫面的唯一途徑(AoqVideoSourceRemote)。

AoqEngineEventListener 回調

AoqEngineEventListener 是 SDK 所有非同步事件通知的統一出口,由調用方繼承實現並在 createEngine 時傳入。
與 Android 的關鍵差異:該類所有回調均為純虛函數(= 0),無預設空實現,Linux 下必須完整實現下列 10 個方法,否則衍生類別無法執行個體化。回調可能在 SDK 內部線程觸發。
class AOQ_API AoqEngineEventListener {
public:
    AoqEngineEventListener();
    virtual ~AoqEngineEventListener();

    virtual void onError(int code, const char* message) = 0;
    virtual void onWarning(int code, const char* message) = 0;
    virtual void onConnectionStatusChange(AoqConnectionStatus status) = 0;
    virtual void onStats(const AoqStats& stats) = 0;
    virtual void onAudioDeviceStateChanged(const AoqAudioDeviceState& state) = 0;
    virtual void onAudioDeviceRouteChanged(int routeType) = 0;
    virtual void onAudioFileState(const AoqAudioFileState& state) = 0;
    virtual void onLocalAudioVolumeIndication(const AoqAudioVolume& volume) = 0;
    virtual void onVideoDeviceStateChanged(const AoqVideoDeviceState& state) = 0;
    virtual void onDataMsg(const AoqDataMsg& msg) = 0;
};

onError

引擎錯誤回調。code 對應 AoqErrorCode 枚舉值(見 3.3),message 僅回調期間有效。

onWarning

引擎警告回調。code 對應 AoqWarningCode 枚舉值(見 3.3)。

onConnectionStatusChange

串連狀態變化回調。狀態流轉:Disconnected -> Connecting -> Connected / Failed -> Disconnected。

onStats

引擎統計資訊回調。SDK 周期性上報音視頻推拉流及網路統計資料,可用於即時監測通話品質、網路狀態、診斷音視頻問題。

參數

類型

說明

stats

AoqStats

包含音頻 / 視頻 / 資料訊息的推拉流統計及網路統計

AoqStats 內部為「數組指標 + 計數」結構,指標僅回調期間有效,非同步使用需自行拷貝。

onAudioDeviceStateChanged

音訊裝置採集 / 播放操作狀態變化回調。state.reason 為 AoqErrorCode 數值。

onAudioDeviceRouteChanged

音訊輸出路由變化回調。routeType 對應 AoqAudioDeviceRouteType 枚舉值(見 3.4)。
Linux 不會觸發:Linux 構建未包含平台裝置監聽器(AOQ_HAS_NATIVE_DEVICE_MONITOR 僅在 Windows / macOS 定義),且服務端音訊裝置不產生路由事件;仍需實現此方法(純虛),但可空實現。

onAudioFileState

音頻檔案播放狀態回調。state.fileId 僅回調期間有效。

onLocalAudioVolumeIndication

本地採集音量提示回調,需調用 enableLocalAudioVolumeIndication 開啟。

onVideoDeviceStateChanged

視頻裝置採集操作狀態變化回調。state.reason 為 AoqErrorCode 數值。

onDataMsg

收到即時資料訊息回調。msg.data僅保證回調期間有效,如需非同步使用請自行拷貝。

幀資料監聽介面

IAudioFrameObserver

音頻資料監聽介面。請不要在回調中做任何耗時操作,否則可能導致聲音異常。全部為純虛函數,需完整實現。
class AOQ_API IAudioFrameObserver {
public:
    virtual ~IAudioFrameObserver() {}
    virtual void onCapturedAudioFrame(const AoqAudioFrameData& data) = 0;
    virtual void onProcessCapturedAudioFrame(const AoqAudioFrameData& data) = 0;
    virtual void onPublishAudioFrame(AoqTrackType trackType, const AoqAudioFrameData& data) = 0;
    virtual void onPlaybackAudioFrame(const AoqAudioFrameData& data) = 0;
};

回調

開啟方式(audioSource)

讀寫入模式

onCapturedAudioFrame

AoqAudioSourceCaptured

支援讀寫

onProcessCapturedAudioFrame

AoqAudioSourceProcessCaptured

支援讀寫

onPublishAudioFrame

AoqAudioSourcePublish(需 connect 成功)

僅唯讀

onPlaybackAudioFrame

AoqAudioSourcePlayback

支援讀寫

以上回調均支援通過 AoqAudioObserverConfig 設定採樣率與聲道數。
Linux 上 onPlaybackAudioFrame 是取遠端下行 PCM 的主鏈路;onProcessCapturedAudioFrame(3A 後資料)因 Linux 未編譯 3A 模組,資料與採集未經處理資料無實質差異,詳見 4.3。

IVideoFrameObserver

視頻資料監聽介面。請不要在回調中做任何耗時操作,否則可能導致畫面卡頓。全部為純虛函數。
class AOQ_API IVideoFrameObserver {
public:
    virtual ~IVideoFrameObserver() {}
    virtual bool onCapturedVideoFrame(AoqVideoFrame& frame) = 0;
    virtual bool onPreEncodeVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
    virtual bool onRemoteVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
};

回調

開啟方式(videoSource)

說明

onCapturedVideoFrame

AoqVideoSourceCaptured

本地採集後裸資料(前處理前)

onPreEncodeVideoFrame

AoqVideoSourcePreEncode

本地編碼前裸資料(前處理後)

onRemoteVideoFrame

AoqVideoSourceRemote

遠端解碼後、渲染前裸資料

傳回值:true 表示資料已修改、需寫回 SDK(僅 I420 / CVPixelBuffer 生效);false 表示唯讀。frame 中的指標僅回調期間有效,非同步使用需自行拷貝。

資料類型與枚舉

全部類型定義於 AoqClientEngine.h,命名空間 AoqClientSdk。結構體均為 POD 並帶預設值,直接聲明即可獲得表中預設值。標註「移動端專有」的欄位在 Linux 下被條件編譯屏蔽,不存在於結構體中。

通用類型

AoqCreateConfig

欄位

類型

預設值

說明

workDir

const char\*

nullptr

SDK 工作目錄(日誌與臨時檔案)

enableDumpAudio

bool

false

是否開啟音頻資料儲存(調試用)

extras

const char\*

nullptr

擴充參數(JSON 字串)

字串欄位至少需保持到 createEngine 返回後,引擎內部按需拷貝。Android 的 isBTScoMode 為移動端專有,Linux 無此欄位。

AoqConnectConfig

欄位

類型

預設值

說明

token

const char\*

nullptr

串連鑒權 Token

sid

const char\*

nullptr

會話 ID

certFingerprint

const char\*

nullptr

伺服器憑證指紋

workspaceIdHash

const char\*

nullptr

工作空間 ID Hash

relayEndpoints

const AoqRelayEndpoint\*

nullptr

Relay 存取點數組首地址

relayEndpointsCount

size_t

0

Relay 存取點個數

publishTracks

const AoqTrackParam\*

nullptr

推流 track 屬性數組首地址

publishTracksCount

size_t

0

推流 track 個數

subscribeTracks

const AoqTrackParam\*

nullptr

拉流 track 屬性數組首地址

subscribeTracksCount

size_t

0

拉流 track 個數

AoqRelayEndpoint

欄位

類型

預設值

說明

route_index

int

-1

路由序號

endpoint

const char\*

nullptr

Relay 伺服器網域名稱或 IP

port

int

0

Relay 伺服器連接埠

注意欄位名為底線風格 route_index,與其餘欄位的 camelCase 不同。

AoqTrackParam

欄位

類型

預設值

說明

trackType

AoqTrackType

AoqTrackTypeAudio

軌道類型

trackMode

AoqTrackMode

AoqTrackModeSegment

流式 / 非流式模式,僅對音頻下行生效

AoqDataMsg

欄位

類型

預設值

說明

data

const uint8_t\*

nullptr

訊息內容,指向調用方持有的記憶體

dataSize

size_t

0

位元組數

回調中使用時僅保證回調期間有效,如需非同步使用請自行拷貝。

統計資訊類型

AoqStats

引擎統計資訊匯總,通過 onStats 周期性上報。採用「數組指標 + 計數」結構,所有指標預設 nullptr、計數預設 0。

欄位

類型

說明

audioPublishStats

const AoqAudioPublishStats\*

音頻推流統計數組

audioPublishStatsCount

unsigned int

音頻推流統計個數

videoPublishStats

const AoqVideoPublishStats\*

視頻推流統計數組

videoPublishStatsCount

unsigned int

視頻推流統計個數

dataMsgPublishStats

const AoqDataMsgPublishStats\*

資料訊息推流統計數組

dataMsgPublishStatsCount

unsigned int

資料訊息推流統計個數

audioSubscribeStats

const AoqAudioSubscribeStats\*

音頻拉流統計數組

audioSubscribeStatsCount

unsigned int

音頻拉流統計個數

videoSubscribeStats

const AoqVideoSubscribeStats\*

視頻拉流統計數組

videoSubscribeStatsCount

unsigned int

視頻拉流統計個數

dataMsgSubscribeStats

const AoqDataMsgSubscribeStats\*

資料訊息拉流統計數組

dataMsgSubscribeStatsCount

unsigned int

資料訊息拉流統計個數

networkStats

const AoqNetworkStats\*

網路統計資訊

AoqAudioPublishStats

欄位

類型

預設值

說明

trackType

AoqTrackType

AoqTrackTypeAudio

軌道類型

bitrate

unsigned int

0

碼率(bps)

bytes

uint64_t

0

累計發送位元組數

encodeVolume

unsigned int

0

推流編碼音量

AoqAudioSubscribeStats

欄位

類型

預設值

說明

trackType

AoqTrackType

AoqTrackTypeAudio

軌道類型

bitrate

unsigned int

0

碼率(bps)

bytes

uint64_t

0

累計接收位元組數

playVolume

unsigned int

0

播放音量

AoqVideoPublishStats

欄位

類型

預設值

說明

trackType

AoqTrackType

AoqTrackTypeVideo

軌道類型

bitrate

unsigned int

0

碼率(bps)

bytes

uint64_t

0

累計發送位元組數

encodeFps

unsigned int

0

編碼幀率

AoqVideoSubscribeStats

欄位

類型

預設值

說明

trackType

AoqTrackType

AoqTrackTypeVideo

軌道類型

bitrate

unsigned int

0

碼率(bps)

bytes

uint64_t

0

累計接收位元組數

decodeFps

unsigned int

0

解碼幀率

renderFps

unsigned int

0

渲染幀率

AoqDataMsgPublishStats / AoqDataMsgSubscribeStats

欄位

類型

預設值

說明

trackType

AoqTrackType

AoqTrackTypeData

軌道類型

bitrate

unsigned int

0

碼率(bps)

bytes

uint64_t

0

累計發送 / 接收位元組數

AoqNetworkStats

欄位

類型

預設值

說明

sendBitrate

unsigned int

0

發送碼率(bps)

sendBytes

uint64_t

0

累計發送位元組數

recvBitrate

unsigned int

0

接收碼率(bps)

recvBytes

uint64_t

0

累計接收位元組數

loss

unsigned int

0

丟包率(0-100)

rtt

unsigned int

0

往返延遲(ms)

枚舉類型

AoqTrackType

枚舉值

值

說明

AoqTrackTypeAudio

0

音頻軌道

AoqTrackTypeVideo

1

視頻軌道

AoqTrackTypeData

2

資料訊息軌道

AoqTrackMode

枚舉值

值

說明

AoqTrackModeSegment

0

分段:資料按語義片段(如一句話)打包送達

AoqTrackModeStream

1

流式:資料持續、連續地送達

AoqEncoderType

枚舉值

值

說明

AoqEncoderTypeUnknown

0

未知格式

AoqEncoderTypeAudioPCM

1

音頻 PCM

AoqEncoderTypeAudioOpus

2

音頻 Opus(外掛程式化;Linux 已靜態內建,開箱可用)

AoqEncoderTypeVideoH264

3

視頻 H.264

AoqEncoderTypeVideoJpeg

4

視頻 JPEG

AoqEncoderTypeDataText

5

資料文本

AoqConnectionStatus

枚舉值

值

說明

AoqConnectionStatusDisconnected

0

未串連

AoqConnectionStatusConnecting

1

串連中

AoqConnectionStatusConnected

2

已串連

AoqConnectionStatusFailed

3

串連失敗

AoqErrorCode

命名注意:C++ 頭中枚舉字面量為 AoqEC* 縮寫形式(與 Android 的 AoqErrorCode* 全寫不同),數值完全一致。

枚舉值

值

說明

AoqECOK

0

成功

AoqECParamInvalid

1

參數非法

AoqECStateInvalid

2

狀態非法

AoqECUnSupport

3

介面被調但當前平台 / 模式未實現

AoqECAudio

100

音頻通用錯誤

AoqECAudioExternalBufferFull

110

外部音頻緩衝區滿

AoqECAudioDevice

120

音訊裝置通用錯誤

AoqECAudioDeviceRecordingAuthFailed

121

錄音許可權未擷取

AoqECAudioDeviceRecordingOccupied

122

錄音裝置被佔用

AoqECAudioDeviceRecordingBackgroundStart

123

後台啟動錄音失敗

AoqECAudioDeviceRecordingStartFail

124

錄音啟動失敗

AoqECAudioDevicePlayoutOccupied

125

播放裝置被佔用

AoqECAudioDevicePlayoutBackgroundStart

126

後台啟動播放失敗

AoqECAudioDevicePlayoutStartFail

127

播放啟動失敗

AoqECAudioDeviceEarpieceRequiresVoipMode

128

耳機需要 VoIP 模式(移動端情境)

AoqECVideo

200

視頻通用錯誤

AoqECVideoExternalBufferFull

210

外部視頻緩衝區滿

AoqECVideoExternalCaptureNotEnabled

211

外部視頻採集未啟用

AoqECVideoExternalEncoderNotEnabled

212

外部視頻編碼未啟用

AoqECVideoDevice

220

視頻裝置通用錯誤

AoqECVideoDeviceCameraOpenFail

221

網路攝影機開啟失敗

AoqECVideoDeviceCameraAuthFailed

222

網路攝影機許可權未擷取

AoqECVideoDeviceCameraOccupied

223

網路攝影機被佔用

AoqECVideoDeviceCameraRunningError

224

網路攝影機運行異常

AoqECVideoCodec

230

視頻編解碼通用錯誤

AoqECVideoCodecEncoderInitFail

231

視頻編碼器初始化失敗

AoqECVideoRender

240

視頻渲染通用錯誤

AoqECVideoRenderCreateFail

241

視頻渲染建立失敗

AoqECVideoRenderDrawError

242

視頻渲染繪製錯誤

AoqWarningCode

枚舉值

值

說明

AoqWCOK

0

無警告

AoqWCAudio

100

音頻通用警告

AoqWCAudioHowling

101

音頻嘯叫檢測

AoqWCAudioDevice

120

音訊裝置通用警告

AoqWCAudioDeviceMicEnumerateError

121

麥克風枚舉錯誤

AoqWCAudioDeviceMicStartTimeout

122

麥克風啟動逾時

AoqWCAudioDeviceRecordingError

123

錄音過程錯誤

AoqWCAudioDeviceSpeakerEnumerateError

124

擴音器枚舉錯誤

AoqWCAudioDeviceSpeakerStartTimeout

125

擴音器啟動逾時

AoqWCAudioDevicePlayoutError

126

播放過程錯誤

AoqWCVideo

200

視頻通用警告

AoqWCVideoCameraEnumerateError

201

網路攝影機枚舉錯誤

AoqWCVideoEncoderSwitched

202

視頻編碼器已切換

AoqWCVideoRenderDowngrade

203

視頻渲染降級

AoqMirrorMode

枚舉值

值

說明

AoqMirrorModeDisabled

0

關閉鏡像

AoqMirrorModeEnabled

1

開啟鏡像

AoqOrientationMode

枚舉值

值

說明

AoqOrientationModeAuto

0

自動適應

AoqOrientationModePortrait

1

豎屏

AoqOrientationModeLandscape

2

橫屏

AoqRenderMode

枚舉值

值

說明

AoqRenderModeAuto

0

自適應模式

AoqRenderModeStretch

1

展開模式

AoqRenderModeFill

2

填充模式

AoqRenderModeCrop

3

裁剪模式

僅作為 AoqVideoCanvas.renderMode 使用;Linux 無渲染實現,該枚舉實際不生效。

AoqAudioStreamDirection

枚舉值

值

說明

AoqAudioStreamPublish

0

推流音頻

AoqAudioStreamPlayout

1

播放音頻

AoqAudioExternalStreamToggle

枚舉值

值

說明

AoqAudioExternalStreamToggleNormal

0

恢複正常

AoqAudioExternalStreamTogglePause

1

暫停

該枚舉已在頭中聲明,但當前沒有任何對外介面使用它,屬預留定義。

音訊類型

AoqAudioCaptureConfig

欄位

類型

預設值

說明

isExternal

bool

false

是否外部採集

channel

int

1

音頻採集通道數,支援 1 / 2

isVoipMode 為移動端專有欄位,Linux 下不存在。

AoqAudioPlaybackConfig

欄位

類型

預設值

說明

isExternal

bool

false

是否外部播放

channel

int

1

音頻播放通道數,支援 1 / 2

isVoipMode / isDefaultSpeaker 為移動端專有欄位,Linux 下不存在。

AoqAudioCodecConfig

欄位

類型

預設值

說明

trackType

AoqTrackType

AoqTrackTypeAudio

軌道類型

codecType

AoqEncoderType

AoqEncoderTypeAudioPCM

編碼類別型

sampleRate

int

48000

採樣率(Hz)

channel

int

1

聲道數,支援 1 / 2

bitrate

int

32000

碼率(bps)

採樣率約束(摘自標頭檔注釋):
  • 編碼:Opus 支援 8 / 16 / 48K,PCM 支援 8 / 16 / 32 / 48K;
  • 解碼:額外支援 24K,但 24K 僅限 Segment 模式(Stream 模式不支援 24K);
  • 非法組合在 connect 時通過 onError 回調 AoqECParamInvalid。

AoqAudioDeviceRouteType

枚舉值

值

說明

AoqAudioDeviceRouteDefault

0

預設路由

AoqAudioDeviceRouteHeadset

1

耳機

AoqAudioDeviceRouteEarpiece

2

耳機

AoqAudioDeviceRouteHeadsetNoMic

3

無麥耳機

AoqAudioDeviceRouteSpeakerPhone

4

內建擴音器

AoqAudioDeviceRouteUsb

5

USB 音訊裝置

AoqAudioDeviceRouteBluetooth

6

藍芽

AoqAudioDeviceRouteBluetoothA2dp

7

藍芽 A2DP

僅作為 onAudioDeviceRouteChanged 的 routeType 取值參照;Linux 不會觸發該回調。

AoqAudioDeviceStateCode

枚舉值

值

說明

AoqAudioDeviceNone

0

無狀態

AoqAudioDeviceRecordStarting

1

採集啟動中

AoqAudioDeviceRecordStarted

2

採集已啟動

AoqAudioDeviceRecordStopping

3

採集停止中

AoqAudioDeviceRecordStopped

4

採集已停止

AoqAudioDeviceRecordFail

5

採集失敗

AoqAudioDevicePlayStarting

6

播放啟動中

AoqAudioDevicePlayStarted

7

播放已啟動

AoqAudioDevicePlayStopping

8

播放停止中

AoqAudioDevicePlayStopped

9

播放已停止

AoqAudioDevicePlayFail

10

播放失敗

AoqAudioDeviceState

欄位

類型

預設值

說明

state

AoqAudioDeviceStateCode

AoqAudioDeviceNone

裝置操作狀態

reason

int

0

錯誤原因代碼(參考 AoqErrorCode)

AoqAudioFrameData

音頻裸資料(既用於外部送流 pushAudioExternalStreamData,也用於 IAudioFrameObserver 回調)。

欄位

類型

預設值

說明

dataPtr

void\*

0

音頻 PCM 資料指標

numOfSamples

int

0

採樣點數(單個聲道)

bytesPerSample

int

0

每個採樣點的位元組數

numOfChannels

int

0

聲道數

samplesPerSec

int

0

每秒採樣點數(採樣率)

pushSequence

int

0

PCM 輸入輪次(用於送流消費完成通知)

timeStamp

int64_t

0

時間戳記

dataSize

int

0

資料長度(位元組)

autoGenMute

bool

false

僅回調時有效;true 表示 SDK 產生的靜音資料

AoqAudioSource

枚舉值

值

說明

AoqAudioSourceCaptured

0

採集的音頻資料

AoqAudioSourceProcessCaptured

1

3A 後的音頻資料

AoqAudioSourcePublish

2

推流的音頻資料(需 connect 成功)

AoqAudioSourcePlayback

3

播放的音頻資料

AoqAudioSourceMax

4

佔位,不要使用

AoqAudioObserverMode

枚舉值

值

說明

AoqAudioObserverModeReadOnly

0

唯讀模式

AoqAudioObserverModeReadWrite

1

讀寫入模式

AoqAudioObserverConfig

欄位

類型

預設值

說明

sampleRate

int

48000

回調音頻採樣率(Hz),與源不一致時重採樣

channels

int

1

回調音頻聲道數,支援 1 / 2,受限拉流 Codec 參數

mode

AoqAudioObserverMode

AoqAudioObserverModeReadOnly

回調模式

採樣率支援:8 / 12 / 16 / 24 / 32 / 44.1 / 48 / 64 / 88.2 / 96 / 176.4 / 192K。

AoqAudioVolumeIndicationConfig

欄位

類型

預設值

說明

interval

int

0

回調間隔(毫秒);小於等於 0 表示關閉回調,大於 0 且小於 10 時按 10 處理

smooth

int

3

音量平滑係數,取值越大越平滑,取值範圍 0-10

AoqAudioVolume

欄位

類型

預設值

說明

volume

int

0

平滑後的瞬時音量,取值範圍 0-255

音頻檔案與外部音頻流類型

AoqAudioFileMixConfig

欄位

類型

預設值

說明

fileName

const char\*

nullptr

檔案名稱(含路徑)

cycles

int

-1

迴圈次數,-1 表示無限迴圈

startPosMs

long

0

起始播放位置(毫秒)

publishVolume

int

100

推流音量,取值範圍 0-100

playoutVolume

int

100

播放音量,取值範圍 0-100

fileId 不在配置體內,作為 startAudioFile 的獨立入參傳入。

AoqAudioFileStateCode

枚舉值

值

說明

AoqAudioFileNone

0

無狀態

AoqAudioFileStarted

1

開始播放

AoqAudioFileStopped

2

停止播放

AoqAudioFilePaused

3

暫停播放

AoqAudioFileResumed

4

恢複播放

AoqAudioFileEnded

5

播放完畢

AoqAudioFileBuffering

6

正在緩衝

AoqAudioFileBufferingEnd

7

緩衝結束

AoqAudioFileFailed

8

播放失敗

AoqAudioFileErrorCode

枚舉值

值

說明

AoqAudioFileNoError

0

沒有錯誤

AoqAudioFileOpenFailed

1

開啟檔案失敗

AoqAudioFileDecodeFailed

2

解碼檔案失敗

AoqAudioFileState

欄位

類型

預設值

說明

fileId

const char\*

nullptr

檔案 ID,僅回調期間有效

stateCode

AoqAudioFileStateCode

AoqAudioFileNone

檔案狀態代碼

errorCode

AoqAudioFileErrorCode

AoqAudioFileNoError

檔案錯誤碼

AoqAudioExternalStreamConfig

欄位

類型

預設值

說明

trackType

AoqTrackType

AoqTrackTypeAudio

音頻軌道類型

codecType

AoqEncoderType

AoqEncoderTypeAudioPCM

音頻流格式,支援 PCM

channels

int

1

聲道數,受限推流音頻 Codec(支援 1 / 2,超過的聲道忽略)

sampleRate

int

48000

採樣率(Hz)

playoutVolume

int

100

播放音量,取值範圍 0-100

publishVolume

int

100

推流音量,取值範圍 0-100

maxBufferDuration

int

600000

最大緩衝時間長度(毫秒,即 10 分鐘),取值範圍 100 以上;超過時 Push 失敗

enable3A

bool

false

對輸入 PCM 做 3A 處理(Linux 不生效,見 4.3)

採樣率支援:8 / 12 / 16 / 24 / 32 / 44.1 / 48 / 64 / 88.2 / 96 / 176.4 / 192K。
streamId 不在配置體內,作為 addAudioExternalStream 的獨立入參傳入。

視頻類型

AoqVideoCanvas

欄位

類型

預設值

說明

view

void\*

nullptr

平台原生視圖控制代碼的不透明指標;傳 nullptr 表示解除綁定

renderMode

AoqRenderMode

AoqRenderModeAuto

渲染填充模式

view 的平台含義:Apple 為 NSView*,Windows 為 HWND,Android 為 SDK 內部渲染視圖適配對象。調用方需保證 view 生命週期長於 setLocalView / setRemoteView 設定期間。
Linux 無對應平台實現,該結構在 Linux 上無實際用途。

AoqVideoCaptureConfig

欄位

類型

預設值

說明

width

int

1280

採集寬度(像素),isExternal=true 時無效

height

int

720

採集高度(像素),isExternal=true 時無效

fps

int

15

採集幀率,isExternal=true 時無效(節奏由送幀決定)

isExternal

bool

false

是否外部採集;true 時不開啟網路攝影機,由 pushExternalVideoCapturedFrame 喂幀

cameraDirection 為移動端專有欄位,案頭端(含 Linux)不存在。Linux 上建議始終置 isExternal = true。

AoqVideoCodecConfig

編碼與解碼共用同一結構。用於解碼時僅 trackType / codecType / width / height / fps / bitrate 生效(作為訂閱提議參與協商);minBitrate / keyframeInterval / mirrorMode / orientationMode / isExternal 僅編碼使用。

欄位

類型

預設值

說明

isExternal

bool

false

外部編碼模式;true 時由客戶推送已編碼幀,SDK 不做採集和編碼

trackType

AoqTrackType

AoqTrackTypeVideo

軌道類型

codecType

AoqEncoderType

AoqEncoderTypeVideoH264

編碼類別型

width

int

540

解析度寬(像素)

height

int

960

解析度高(像素)

fps

int

5

幀率

bitrate

int

500000

起始碼率(bps)

minBitrate

int

128000

最小碼率(bps)

keyframeInterval

int

2

主要畫面格間隔(秒)

mirrorMode

AoqMirrorMode

AoqMirrorModeDisabled

鏡像模式

orientationMode

AoqOrientationMode

AoqOrientationModeAuto

方向模式

AoqVideoPixelFormat

枚舉值

值

說明

Linux 可用

AoqVideoPixelFormatUnknown

0

未知格式

-

AoqVideoPixelFormatI420

1

I420(YUV 三平面)

可用

AoqVideoPixelFormatNV12

2

NV12(YUV 半平面)

可用

AoqVideoPixelFormatNV21

3

NV21(YUV 半平面)

可用

AoqVideoPixelFormatBGRA

4

BGRA(32 位)

可用

AoqVideoPixelFormatRGBA

5

RGBA(32 位)

可用

AoqVideoPixelFormatCVPixelBuffer

6

僅 Apple 平台有效

不可用

AoqVideoPixelFormatTextureOES

7

Android 外部 OES 紋理

不可用

AoqVideoPixelFormatTexture2D

8

Android 普通 2D 紋理

不可用

枚舉值 6/7/8 在標頭檔中仍可見(未被條件編譯屏蔽),但 Linux 上無對應平台能力,傳入會被當作不支援的格式處理。

AoqVideoFrame

外部視頻裸幀(既用於 pushExternalVideoCapturedFrame,也用於 IVideoFrameObserver 回調)。

欄位

類型

預設值

說明

format

AoqVideoPixelFormat

AoqVideoPixelFormatUnknown

像素格式

width

int

0

寬度(像素)

height

int

0

高度(像素)

dataPtr

void\*

0

打包格式資料(NV12 / NV21 / BGRA / RGBA)

dataSize

int

0

打包資料位元組數

dataY

void\*

0

I420 Y 平面

dataU

void\*

0

I420 U 平面

dataV

void\*

0

I420 V 平面

strideY

int

0

Y 平面行跨度

strideU

int

0

U 平面行跨度

strideV

int

0

V 平面行跨度

nativePixelBuffer

void\*

0

Apple 零拷貝用(CVPixelBufferRef),Linux 不使用

textureId

int

0

Android 紋理 ID,Linux 不使用

transformMatrix

float數組(16元素)

全 0

紋理變換矩陣(行優先 4x4),Linux 不使用

timeStamp

int64_t

0

時間戳記(毫秒);0 時 SDK 用本地時間補齊

AoqVideoCodecType

枚舉值

值

說明

AoqVideoCodecTypeJPEG

0

JPEG 編碼

AoqVideoEncodedFrame

外部已編碼視訊框架。調用方自行完成編碼,SDK 不做二次編碼,直接打包發送。

欄位

類型

預設值

說明

codec

AoqVideoCodecType

AoqVideoCodecTypeJPEG

編碼格式

data

void\*

nullptr

編碼後資料指標

dataSize

int

0

編碼後資料位元組數

width

int

0

寬度(像素)

height

int

0

高度(像素)

timeStamp

int64_t

0

時間戳記(毫秒);0 時 SDK 用本地時間補齊

AoqVideoDeviceStateCode

枚舉值

值

說明

AoqVideoDeviceNone

0

無狀態

AoqVideoDeviceCaptureStarting

1

網路攝影機正在啟動

AoqVideoDeviceCaptureStarted

2

網路攝影機已啟動

AoqVideoDeviceCaptureStopping

3

網路攝影機正在停止

AoqVideoDeviceCaptureStopped

4

網路攝影機已停止

AoqVideoDeviceCaptureFail

5

網路攝影機啟動失敗(許可權拒絕、裝置不可用等)

AoqVideoDeviceState

欄位

類型

預設值

說明

state

AoqVideoDeviceStateCode

AoqVideoDeviceNone

裝置採集操作狀態

reason

int

0

錯誤原因代碼(參考 AoqErrorCode)

AoqVideoSource

枚舉值

值

說明

AoqVideoSourceCaptured

0

採集後的視頻資料(前處理前)

AoqVideoSourcePreEncode

1

編碼前的視頻資料(前處理後)

AoqVideoSourceRemote

2

遠端解碼後、渲染前的視頻資料

AoqVideoSourceMax

3

佔位,不要使用

AoqVideoObserverMode

枚舉值

值

說明

AoqVideoObserverModeReadOnly

0

唯讀模式

AoqVideoObserverModeReadWrite

1

讀寫入模式(僅 I420 / CVPixelBuffer 支援)

AoqVideoObserverAlignment

枚舉值

值

說明

AoqVideoObserverAlignmentDefault

0

預設對齊

AoqVideoObserverAlignmentEven

1

偶數對齊

AoqVideoObserverAlignment4

2

4 位元組對齊

AoqVideoObserverAlignment8

3

8 位元組對齊

AoqVideoObserverAlignment16

4

16 位元組對齊

AoqVideoObserverConfig

欄位

類型

預設值

說明

format

AoqVideoPixelFormat

AoqVideoPixelFormatI420

期望回調像素格式

alignment

AoqVideoObserverAlignment

AoqVideoObserverAlignmentDefault

寬度對齊策略

mode

AoqVideoObserverMode

AoqVideoObserverModeReadOnly

回調模式,僅 I420 / CVPixelBuffer 支援 ReadWrite

mirrorApplied

bool

false

是否對回調資料應用鏡像