本文介紹 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 內部以全域單例方式持有引擎,重複調用會返回已建立的執行個體。
參數 | 類型 | 說明 |
|---|---|---|
config | AoqCreateConfig | 引擎建立配置 |
listener | AoqEngineEventListener\* | 引擎事件回調監聽器,由調用方繼承實現 |
nullptr。listener 生命週期需長於引擎。
destroy
銷毀引擎執行個體,釋放所有資源。
0 表示成功;非 0 表示失敗。
getVersion
擷取 SDK 目前的版本號。
connect
串連 Relay 伺服器。業務 AppServer 應根據所用協議擷取臨時 AOQ 串連參數並下發給用戶端,具體操作請參見Token 鑒權。
參數 | 類型 | 說明 |
|---|---|---|
config | AoqConnectConfig | 串連配置,包含 Token、SID、Relay 存取點數組、推拉流 track 數組等 |
0 表示成功(非同步執行);非 0 表示失敗。串連結果由 onConnectionStatusChange 通知。
relayEndpoints / publishTracks / subscribeTracks 均為「C 風格數組指標 + 長度」,記憶體由調用方持有,僅需在 connect 調用期間有效。disconnect
斷開與伺服器的串連,釋放串連相關資源。
0 表示成功;非 0 表示失敗。
音訊裝置管理
參數 | 類型 | 說明 |
|---|---|---|
config | AoqAudioCaptureConfig / AoqAudioPlaybackConfig | 採集 / 播放配置 |
mute | bool | true 靜音,false 取消靜音 |
fadeMs | int | 淡出 / 淡入時間長度(毫秒),0 表示立即執行 |
trackType | AoqTrackType | 軌道類型 |
startAudioCapture / startAudioPlayer 在 Linux 構建下為空白實現(直接返回 0,不開啟任何音效卡裝置),stopAudioCapture / stopAudioPlayer 因內部狀態未置位同樣無實際效果。Linux 上音頻輸入請使用外部音頻流(2.8),音訊輸出請使用音訊框架回調(2.10)自行播放。詳見 4.3。音頻編解碼配置
connect() 之前調用。採樣率與模式的非法組合會在 connect 時通過 onError 回調 AoqECParamInvalid。
視頻裝置管理
參數 | 類型 | 說明 |
|---|---|---|
config | AoqVideoCaptureConfig | 視頻採集配置 |
trackType | AoqTrackType | 視頻軌道類型 |
canvas | AoqVideoCanvas | 渲染畫布; |
startVideoCapture({.isExternal = true}) + pushExternalVideoCapturedFrame 送幀;setLocalView / setRemoteView 在 Linux 無渲染後端(AoqVideoCanvas.view 僅支援 Apple NSView* / Windows HWND / Android 渲染視圖),預覽請通過視訊框架回調(2.12)自行渲染。詳見 4.3。視頻編解碼與外部輸入
參數 | 類型 | 說明 |
|---|---|---|
config | AoqVideoCodecConfig | 編解碼配置,按 |
trackType | AoqTrackType | 路由目標,取 |
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 使用本地時間補齊。
媒體流發送控制
trackType 取 AoqTrackTypeAudio / AoqTrackTypeVideo。返回 0 表示調用已下發(非同步執行)。建議初始化後先關閉發送,待 onConnectionStatusChange 上報 AoqConnectionStatusConnected 後再開啟。
音頻檔案播放
參數 | 類型 | 說明 |
|---|---|---|
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 上可用於將本地檔案作為音頻源推送。
外部音頻流
參數 | 類型 | 說明 |
|---|---|---|
streamId | const char\* | 外部音頻流 Id,業務層需保證全域唯一 |
config | AoqAudioExternalStreamConfig | 外部音頻流配置 |
data | AoqAudioFrameData | 外部音頻裸資料(PCM),非 const 引用 |
type | AoqAudioStreamDirection | 推流音量或本地播放音量 |
vol | int | 音量,取值範圍 0-100 |
fadeoutMs | int | 淡出時間長度; |
-
pushAudioExternalStreamData返回AoqECAudioExternalBufferFull(110)表示 SDK 內部緩衝區已滿,建議等待 20ms 後重新送當前資料幀。 -
最佳實務:即時採集情境一次 Push 10ms 資料、有資料就 Push;檔案源情境一次 Push 40ms 資料、間隔 30ms 送一次,並處理
AoqECAudioExternalBufferFull返回。 -
getAudioExternalStreamVolume:0-100為音量值;<0失敗,絕對值為-AoqErrorCode。 -
clearAudioExternalStreamBuffer返回void,無傳回值。 -
data.pushSequence用於 SDK 消費完成通知(PCM 輸入輪次)。Linux 上無真實採集裝置,本組介面是音頻上行的主鏈路。
即時訊息
msg.data 指向調用方持有的記憶體,僅需在調用期間有效。對端訊息通過 onDataMsg 回調。
音訊框架回調
參數 | 類型 | 說明 |
|---|---|---|
observer | IAudioFrameObserver\* | 監聽器執行個體;傳 |
enabled | bool | 是否開啟該位置的資料回調 |
audioSource | AoqAudioSource | 音頻裸資料來源位置 |
config | AoqAudioObserverConfig | 回調採樣率、聲道數與讀寫入模式 |
setAudioFrameObserver(observer) 註冊監聽器,再對需要的位置調 enableAudioFrameObserver。observer 生命週期需覆蓋整個回調期間;取消註冊後再釋放。
讀寫入模式支援情況(見 IAudioFrameObserver 聲明):onCapturedAudioFrame / onProcessCapturedAudioFrame / onPlaybackAudioFrame 支援讀寫,onPublishAudioFrame 僅支援唯讀。
setAudioFrameObserver 內部走非同步投遞(PostTask 到控制線程)完成註冊,因此調用返回後回調可能略後生效;釋放 observer 前請留足安全間隔或保持對象存活。本地音量提示
config.interval <= 0 時關閉回調;開啟後按 config.interval 周期觸發 onLocalAudioVolumeIndication。需在 startAudioCapture 之後調用才有音量資料。
視訊框架回調
參數 | 類型 | 說明 |
|---|---|---|
observer | IVideoFrameObserver\* | 監聽器執行個體;傳 |
enabled | bool | 是否開啟該位置的資料回調 |
videoSource | AoqVideoSource | 視訊框架回調資料來源(管線位置) |
config | AoqVideoObserverConfig | 期望像素格式、對齊策略、讀寫入模式、鏡像 |
true 表示資料已修改需寫回 SDK(僅 I420 / CVPixelBuffer 生效,Linux 下即僅 I420);返回 false 為唯讀。
AoqVideoSourceRemote)。AoqEngineEventListener 回調
AoqEngineEventListener 是 SDK 所有非同步事件通知的統一出口,由調用方繼承實現並在 createEngine 時傳入。
= 0),無預設空實現,Linux 下必須完整實現下列 10 個方法,否則衍生類別無法執行個體化。回調可能在 SDK 內部線程觸發。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)。
AOQ_HAS_NATIVE_DEVICE_MONITOR 僅在 Windows / macOS 定義),且服務端音訊裝置不產生路由事件;仍需實現此方法(純虛),但可空實現。onAudioFileState
音頻檔案播放狀態回調。state.fileId 僅回調期間有效。
onLocalAudioVolumeIndication
本地採集音量提示回調,需調用 enableLocalAudioVolumeIndication 開啟。
onVideoDeviceStateChanged
視頻裝置採集操作狀態變化回調。state.reason 為 AoqErrorCode 數值。
onDataMsg
收到即時資料訊息回調。msg.data僅保證回調期間有效,如需非同步使用請自行拷貝。
幀資料監聽介面
IAudioFrameObserver
音頻資料監聽介面。請不要在回調中做任何耗時操作,否則可能導致聲音異常。全部為純虛函數,需完整實現。
回調 | 開啟方式(audioSource) | 讀寫入模式 |
|---|---|---|
onCapturedAudioFrame | AoqAudioSourceCaptured | 支援讀寫 |
onProcessCapturedAudioFrame | AoqAudioSourceProcessCaptured | 支援讀寫 |
onPublishAudioFrame | AoqAudioSourcePublish(需 connect 成功) | 僅唯讀 |
onPlaybackAudioFrame | AoqAudioSourcePlayback | 支援讀寫 |
AoqAudioObserverConfig 設定採樣率與聲道數。
onPlaybackAudioFrame 是取遠端下行 PCM 的主鏈路;onProcessCapturedAudioFrame(3A 後資料)因 Linux 未編譯 3A 模組,資料與採集未經處理資料無實質差異,詳見 4.3。IVideoFrameObserver
視頻資料監聽介面。請不要在回調中做任何耗時操作,否則可能導致畫面卡頓。全部為純虛函數。
回調 | 開啟方式(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
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 | 回調模式 |
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) |
streamId 不在配置體內,作為 addAudioExternalStream 的獨立入參傳入。視頻類型
AoqVideoCanvas
欄位 | 類型 | 預設值 | 說明 |
|---|---|---|---|
view | void\* | nullptr | 平台原生視圖控制代碼的不透明指標;傳 nullptr 表示解除綁定 |
renderMode | AoqRenderMode | AoqRenderModeAuto | 渲染填充模式 |
view 的平台含義:Apple 為 NSView*,Windows 為 HWND,Android 為 SDK 內部渲染視圖適配對象。調用方需保證 view 生命週期長於 setLocalView / setRemoteView 設定期間。
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 紋理 | 不可用 |
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 | 是否對回調資料應用鏡像 |