Skip to main content

AOQ クライアント SDK HarmonyOS API リファレンス

AOQ クライアント SDK HarmonyOS (OHOS) の API リファレンスです。プラットフォーム言語は ArkTS (.ets) で、NAPI を介して C++ エンジンにブリッジされます。

HarmonyOS SDK
AOQ SDK は汎用の動画 API を提供します。Qwen-Audio-Realtime は動画の入出力をサポートしていません。その他のモデルのメディア機能は、それぞれのアクセスドキュメントをご覧ください。

API インデックス

エンジンライフサイクル

API

説明

createEngine

エンジンインスタンス (シングルトン) を作成します

destroy

エンジンインスタンスを破棄します

getVersion

SDK のバージョン文字列を取得します

connect

Relay サーバーに接続します

disconnect

サーバーから切断します

オーディオデバイス管理

API

説明

startAudioCapture

オーディオキャプチャデバイス (マイク) を開きます

stopAudioCapture

オーディオキャプチャデバイスを閉じます

muteAudioCapture

オーディオキャプチャをミュートまたはミュート解除します

startAudioPlayer

オーディオ再生を開始します (リモートオーディオを再生)

stopAudioPlayer

オーディオ再生を停止します

pauseAudioPlayer

オプションのフェードアウトでオーディオ再生を一時停止します

resumeAudioPlayer

オプションのフェードインでオーディオ再生を再開します

interruptAudioPlayer

現在のオーディオコールターンを中断します

enableSpeakerphone

オーディオ出力をスピーカーとイヤホンで切り替えます

isSpeakerphoneEnabled

スピーカーが現在アクティブかどうかを問い合わせます

オーディオコーデック設定

API

説明

setAudioEncoderConfig

オーディオエンコーディングパラメーターを設定します

setAudioDecoderConfig

オーディオデコーディングパラメーターを設定します

ビデオデバイス管理

API

説明

startVideoCapture

ビデオキャプチャデバイス (カメラ) を開きます

stopVideoCapture

ビデオキャプチャデバイスを閉じます

switchCamera

前面カメラと背面カメラを切り替えます

setLocalView

ローカルビデオレンダリングビューを設定または削除します

setRemoteView

リモートビデオレンダリングビューを設定または削除します

ビデオエンコーディングと外部入力

API

説明

setVideoEncoderConfig

ビデオエンコーディングパラメーターを設定します

pushExternalVideoCapturedFrame

外部でキャプチャされた RAW ビデオフレームをプッシュします

pushExternalVideoEncodedFrame

外部でエンコードされたビデオフレームをプッシュします

メディアストリーム制御

API

説明

enableSendMediaStream

ローカルメディアストリームの送信を有効または無効にします

オーディオファイル再生

API

説明

startAudioFile

ローカルオーディオファイルのストリーミングを開始します

stopAudioFile

オーディオファイルの再生を停止します

pauseAudioFile

オーディオファイルの再生を一時停止します

resumeAudioFile

オーディオファイルの再生を再開します

getAudioFileDuration

オーディオファイルの総再生時間を取得します

getAudioFileCurrentPosition

現在の再生位置を取得します

setAudioFilePositionMillis

オーディオファイル内の位置にシークします

setAudioFileVolume

オーディオファイルの音量を設定します

getAudioFileVolume

現在のオーディオファイルの音量を取得します

外部オーディオストリーム

API

説明

addAudioExternalStream

外部オーディオストリームを追加します

removeAudioExternalStream

外部オーディオストリームを削除します

pushAudioExternalStreamData

外部 PCM オーディオデータをプッシュします

setAudioExternalStreamVolume

外部オーディオストリームの音量を設定します

getAudioExternalStreamVolume

外部オーディオストリームの音量を取得します

clearAudioExternalStreamBuffer

外部オーディオストリームのバッファーをクリアします

リアルタイムメッセージング

API

説明

sendDataMsg

リアルタイムデータメッセージを送信します

オーディオフレームコールバック

API

説明

setAudioFrameObserver

オーディオフレームデータコールバックオブザーバーを設定します

enableAudioFrameObserver

指定されたポイントでオーディオフレームコールバックを有効または無効にします

ビデオフレームコールバック

API

説明

setVideoFrameObserver

ビデオフレームデータコールバックオブザーバーを設定します

enableVideoFrameObserver

指定されたポイントでビデオフレームコールバックを有効または無効にします

AoqEngineEventListener コールバック

コールバック

説明

onError

エンジンエラーコールバック

onWarning

エンジン警告コールバック

onConnectionStatusChange

接続状態変更コールバック

onStats

統計コールバック

onAudioDeviceStateChanged

オーディオデバイス状態変更コールバック

onAudioDeviceRouteChanged

オーディオ出力ルート変更コールバック

onAudioDeviceInterrupted

オーディオデバイス中断コールバック

onVideoDeviceStateChanged

ビデオデバイス状態変更コールバック

onAudioFileState

オーディオファイル再生状態コールバック

onDataMsg

リアルタイムデータメッセージ受信コールバック

IAudioFrameObserver

オーディオフレームデータオブザーバーインターフェイス

IVideoFrameObserver

ビデオフレームデータオブザーバーインターフェイス

API 詳細

エンジンライフサイクル

createEngine

エンジンインスタンスを作成します。SDK はエンジンをグローバルシングルトンとして保持するため、このメソッドを再度呼び出すと既存のインスタンスが返されます。ネイティブエンジンの初期化に失敗した場合は null を返します。
static createEngine(config: AoqCreateConfig, listener: AoqEngineEventListener, context: common.Context): AoqClientEngine | null

パラメーター

型

説明

config

AoqCreateConfig

エンジン作成設定

listener

AoqEngineEventListener

エンジンイベントコールバックリスナー (インターフェイス。すべてのコールバックはオプショナルです)

context

common.Context

UIAbility/Page コンテキスト。aki+ACPM の初期化に使用されます

戻り値: AoqClientEngine | null — ネイティブでの作成に失敗した場合は null。 注: Android とは異なり、この SDK は失敗時に null を返します。戻り値は常に null チェックをしてください。context は有効な UIAbility または Page コンテキストでなければなりません。

destroy

エンジンシングルトンを破棄し、すべてのリソースを解放します。使用を再開する前に、再度 createEngine を呼び出す必要があります。
static destroy(): number
戻り値: 成功した場合は 0、失敗した場合は 0 以外。

getVersion

現在の SDK バージョン文字列を取得します。
static getVersion(): string
戻り値: バージョン文字列、例: "1.0.0"。

connect

Relay サーバーに接続します。AppServer が接続パラメーターをクライアントに配信します。
汎用 SDK API のドキュメントでは、AppServer が /api/v1/allocate を通じて接続パラメーターを割り当てます。特定のモデルについては、Qwen-Omni-Realtime AOQ アクセス、Qwen-Audio-Realtime AOQ アクセス、Qwen-LiveTranslate-Realtime AOQ アクセスをご覧ください。
connect(config: AoqConnectConfig): number

パラメーター

型

説明

config

AoqConnectConfig

接続設定。トークン、SID、Relay エンドポイントリストを含みます

戻り値: 呼び出しがディスパッチされた場合 (非同期) は 0、パラメーター検証に失敗した場合は 0 以外。 注: 接続状態の変更は、onConnectionStatusChange を介して非同期に報告されます。connect を呼び出す前に enableSendMediaStream(false) を呼び出すことを推奨します。

disconnect

サーバーから切断し、接続関連のリソースを解放します。オーディオおよびビデオのキャプチャ/再生デバイスは自動的に停止されません。
disconnect(): number
戻り値: 呼び出しがディスパッチされた場合 (非同期) は 0、失敗した場合は 0 以外。

オーディオデバイス管理

startAudioCapture

オーディオキャプチャデバイス (マイク) を開きます。
startAudioCapture(config: AoqAudioCaptureConfig): number

パラメーター

型

説明

config

AoqAudioCaptureConfig

キャプチャ設定

戻り値: 成功した場合は 0、失敗した場合は 0 以外。

stopAudioCapture

オーディオキャプチャデバイスを閉じます。
stopAudioCapture(): number

muteAudioCapture

オーディオキャプチャをミュートまたはミュート解除します。
muteAudioCapture(mute: boolean): number

パラメーター

型

説明

mute

boolean

true: ミュート、false: ミュート解除

startAudioPlayer

オーディオ再生を開始します (スピーカーまたはイヤホンを介してリモートオーディオを再生)。
startAudioPlayer(config: AoqAudioPlaybackConfig): number

パラメーター

型

説明

config

AoqAudioPlaybackConfig

再生設定

stopAudioPlayer

オーディオ再生を停止します。
stopAudioPlayer(): number

pauseAudioPlayer

スムーズな遷移のために、オプションのフェードアウトでオーディオ再生を一時停止します。
pauseAudioPlayer(fadeMs: number): number

パラメーター

型

説明

fadeMs

number

フェードアウト時間 (ミリ秒)。0 は即時を意味します

resumeAudioPlayer

スムーズな遷移のために、オプションのフェードインでオーディオ再生を再開します。
resumeAudioPlayer(fadeMs: number): number

パラメーター

型

説明

fadeMs

number

フェードイン時間 (ミリ秒)。0 は即時を意味します

interruptAudioPlayer

現在のオーディオコールターンを中断します。
interruptAudioPlayer(trackType: AoqTrackType, fadeMs: number): number

パラメーター

型

説明

trackType

AoqTrackType

ターゲットトラックタイプ。通常は AoqTrackTypeAudio

fadeMs

number

フェードアウト時間 (ミリ秒)

enableSpeakerphone

オーディオ出力ルートをスピーカーとイヤホンで切り替えます。
enableSpeakerphone(enable: boolean): number

パラメーター

型

説明

enable

boolean

true: スピーカーを使用、false: イヤホンを使用

isSpeakerphoneEnabled

スピーカーが現在アクティブかどうかを問い合わせます。
isSpeakerphoneEnabled(): boolean
戻り値: スピーカーがアクティブな場合は true、イヤホンがアクティブな場合は false。

オーディオコーデック設定

setAudioEncoderConfig

オーディオエンコーディングパラメーターを設定します。
setAudioEncoderConfig(config: AoqAudioCodecConfig): number

setAudioDecoderConfig

オーディオデコーディングパラメーターを設定します。
setAudioDecoderConfig(config: AoqAudioCodecConfig): number

ビデオデバイス管理

startVideoCapture

ビデオキャプチャデバイス (カメラ) を開きます。config.isExternal = true の場合、カメラは開かれず、呼び出し元が pushExternalVideoCapturedFrame を介してフレームを提供します。
startVideoCapture(config: AoqVideoCaptureConfig): number

stopVideoCapture

ビデオキャプチャデバイスを閉じます。
stopVideoCapture(): number

switchCamera

前面カメラと背面カメラを切り替えます。
switchCamera(direction: AoqCameraDirection): number

パラメーター

型

説明

direction

AoqCameraDirection

AoqCameraDirectionFront または AoqCameraDirectionBack

setLocalView

ローカルビデオレンダリングビューを設定または削除します。
setLocalView(trackType: AoqTrackType, canvas: AoqVideoCanvas | null): number

パラメーター

型

説明

trackType

AoqTrackType

AoqTrackTypeVideo

canvas

AoqVideoCanvas \

null

レンダリングキャンバスの構成。レンダリングビューを削除するには、null を渡すか、canvas.view を null に設定します

注: HarmonyOS では、XComponent.onLoad コールバックの後にこれを呼び出す必要があります。canvas.view として AoqXComponentController インスタンスを渡してください。

setRemoteView

リモートビデオレンダリングビューを設定または削除します。
setRemoteView(trackType: AoqTrackType, canvas: AoqVideoCanvas | null): number

パラメーター

型

説明

trackType

AoqTrackType

AoqTrackTypeVideo

canvas

AoqVideoCanvas \

null

レンダリングキャンバス設定。null を渡すか、canvas.view を null に設定してレンダリングビューを削除します

ビデオエンコーディングと外部入力

setVideoEncoderConfig

ビデオエンコーディングパラメーターを設定します。呼び出しは config.trackType で指定されたトラックにルーティングされます。
setVideoEncoderConfig(config: AoqVideoCodecConfig): number

pushExternalVideoCapturedFrame

外部でキャプチャされた RAW ビデオフレームをプッシュします。
pushExternalVideoCapturedFrame(trackType: AoqTrackType, frame: AoqVideoFrame): number

パラメーター

型

説明

trackType

AoqTrackType

AoqTrackTypeVideo

frame

AoqVideoFrame

ビデオフレームデータ

startVideoCapture(isExternal=true) の後でのみ消費されます。サポートされているフォーマット: NV12、NV21、BGRA、RGBA、I420。 内部バッファーが一杯の場合、メソッドは AoqECVideoExternalBufferFull (210) を返します。スリープして再試行してください。ビジーループはしないでください。

pushExternalVideoEncodedFrame

外部でエンコードされたビデオフレームをプッシュします。SDK は再エンコードせずに直接送信します。
pushExternalVideoEncodedFrame(trackType: AoqTrackType, frame: AoqVideoEncodedFrame): number

パラメーター

型

説明

trackType

AoqTrackType

AoqTrackTypeVideo

frame

AoqVideoEncodedFrame

エンコード済みフレームデータ

setVideoEncoderConfig(isExternal=true) が設定された後でのみ消費されます。

メディアストリーム制御

enableSendMediaStream

ローカルメディアストリームの送信を有効または無効にします。呼び出しは trackType で指定されたトラックにルーティングされます。
enableSendMediaStream(trackType: AoqTrackType, enable: boolean): number

パラメーター

型

説明

trackType

AoqTrackType

AoqTrackTypeAudio または AoqTrackTypeVideo

enable

boolean

true: 送信を有効にする、false: 送信を無効にする

推奨パターン: 初期化後に enableSendMediaStream(trackType, false) を呼び出し、接続が確立されセッションハンドシェイクが完了したら (onConnectionStatusChange が AoqConnectionStatusConnected を報告)、有効にします。

オーディオファイル再生

startAudioFile

ローカルオーディオファイルのストリーミングを開始します。オーディオファイルの再生は、公開ストリームとローカル再生の両方にミックスされます。
startAudioFile(fileId: string, config: AoqAudioFileMixConfig): number

パラメーター

型

説明

fileId

string

呼び出し元が指定するオーディオファイルの一意の識別子

config

AoqAudioFileMixConfig

再生設定

stopAudioFile / pauseAudioFile / resumeAudioFile

stopAudioFile(fileId: string): number
pauseAudioFile(fileId: string): number
resumeAudioFile(fileId: string): number

getAudioFileDuration / getAudioFileCurrentPosition

getAudioFileDuration(fileId: string): number      // 総再生時間 (ms) を返します。失敗した場合は負の値を返します
getAudioFileCurrentPosition(fileId: string): number // 現在の位置 (ms) を返します。失敗した場合は負の値を返します

setAudioFilePositionMillis

setAudioFilePositionMillis(fileId: string, positionMillis: number): number

setAudioFileVolume / getAudioFileVolume

setAudioFileVolume(fileId: string, type: AoqAudioStreamDirection, volume: number): number
getAudioFileVolume(fileId: string, type: AoqAudioStreamDirection): number // [0, 100] を返します。失敗した場合は負の値を返します

外部オーディオストリーム

addAudioExternalStream

外部オーディオストリームを追加します。
addAudioExternalStream(streamId: string, config: AoqAudioExternalStreamConfig): number

pushAudioExternalStreamData

外部 PCM オーディオデータをプッシュします。内部バッファーが一杯の場合、AoqECAudioExternalBufferFull (110) を返します。
pushAudioExternalStreamData(streamId: string, data: AoqAudioFrameData): number

setAudioExternalStreamVolume / getAudioExternalStreamVolume

setAudioExternalStreamVolume(streamId: string, type: AoqAudioStreamDirection, vol: number): number
getAudioExternalStreamVolume(streamId: string, type: AoqAudioStreamDirection): number

clearAudioExternalStreamBuffer

外部オーディオストリームのバッファーをクリアします。戻り値はなく、非同期で実行されます。
clearAudioExternalStreamBuffer(streamId: string, fadeoutMs: number): void

パラメーター

型

説明

fadeoutMs

number

-1: デフォルトのフェードアウト、0: 即時クリア、>0: 指定された時間を保持してからフェードアウト

removeAudioExternalStream

removeAudioExternalStream(streamId: string): number

リアルタイムメッセージング

sendDataMsg

MoQT データチャネルを介してリアルタイムデータメッセージを送信します。
sendDataMsg(msg: AoqDataMsg): number

オーディオフレームコールバック

setAudioFrameObserver

オーディオフレームデータコールバックオブザーバーを設定します。最初にオブザーバーを登録し、次に enableAudioFrameObserver を呼び出してコールバックの受信を開始します。
setAudioFrameObserver(observer: IAudioFrameObserver | null): number

enableAudioFrameObserver

enableAudioFrameObserver(enabled: boolean, audioSource: AoqAudioSource, config: AoqAudioObserverConfig): number

ビデオフレームコールバック

setVideoFrameObserver

setVideoFrameObserver(observer: IVideoFrameObserver | null): number

enableVideoFrameObserver

enableVideoFrameObserver(enabled: boolean, videoSource: AoqVideoSource, config: AoqVideoObserverConfig): number

AoqEngineEventListener コールバック

すべてのコールバックはオプショナルプロパティ (?) です。
export interface AoqEngineEventListener {
  onError?: (code: number, message: string) => void;
  onWarning?: (code: number, message: string) => void;
  onConnectionStatusChange?: (status: AoqConnectionStatus) => void;
  onStats?: (stats: AoqStats) => void;
  onAudioDeviceStateChanged?: (state: AoqAudioDeviceState) => void;
  onAudioDeviceRouteChanged?: (routeType: number) => void;
  onAudioDeviceInterrupted?: (interrupt: boolean) => void;
  onVideoDeviceStateChanged?: (state: AoqVideoDeviceState) => void;
  onAudioFileState?: (state: AoqAudioFileState) => void;
  onDataMsg?: (msg: AoqDataMsg) => void;
}

IAudioFrameObserver

export interface IAudioFrameObserver {
  onCapturedAudioFrame?: (frame: AoqAudioFrameData) => void;
  onProcessCapturedAudioFrame?: (frame: AoqAudioFrameData) => void;
  onPublishAudioFrame?: (trackType: AoqTrackType, frame: AoqAudioFrameData) => void;
  onPlaybackAudioFrame?: (frame: AoqAudioFrameData) => void;
}
frame.dataPtr はネイティブメモリの Uint8Array コピーであり、現在は読み取り専用です (変更は SDK に書き戻されません)。

IVideoFrameObserver

export interface IVideoFrameObserver {
  onCapturedVideoFrame?: (frame: AoqVideoFrame) => boolean;
  onPreEncodeVideoFrame?: (trackType: AoqTrackType, frame: AoqVideoFrame) => boolean;
  onRemoteVideoFrame?: (trackType: AoqTrackType, frame: AoqVideoFrame) => boolean;
}
フレームバッファーはネイティブメモリの Uint8Array コピーであり、コールバック中のみ有効です。現在は読み取り専用と同等であり、書き戻しサポートは将来のリリースで計画されています。

データ型と列挙型

一般的な型

AoqCreateConfig

フィールド

型

デフォルト

説明

workDir

string

""

SDK 作業ディレクトリ

enableDumpAudio

boolean

false

RAW オーディオダンプを有効にします (デバッグ用)

extras

string

""

追加パラメーター文字列

Android とは異なり、HarmonyOS の AoqCreateConfig には isBTScoMode は含まれていません。

AoqConnectConfig

フィールド

型

デフォルト

説明

token

string

""

認証トークン

sid

string

""

セッション ID

certFingerprint

string

""

サーバー証明書の指紋

relayEndpoints

AoqRelayEndpoint[]

[]

Relay エンドポイントのリスト

workspaceIdHash

string

""

ワークスペース ID ハッシュ

publishTracks

AoqTrackParam[]

[]

公開するローカルトラック

subscribeTracks

AoqTrackParam[]

[]

サブスクライブするリモートトラック

AoqRelayEndpoint

フィールド

型

説明

endpoint

string

Relay サーバーのホスト名または IP

port

number

Relay サーバーのポート

AoqTrackParam

フィールド

型

説明

trackType

AoqTrackType

トラックタイプ

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

ビデオレンダリングがダウングレードされました

AoqTrackType

列挙値

値

説明

AoqTrackTypeAudio

0

オーディオトラック

AoqTrackTypeVideo

1

ビデオトラック

AoqTrackTypeData

2

データメッセージングトラック

Android とは異なり、HarmonyOS には AoqTrackTypeScreen (3) は含まれていません。画面キャプチャはまだ利用できません。

AoqConnectionStatus

列挙値

値

説明

AoqConnectionStatusDisconnected

0

切断

AoqConnectionStatusConnecting

1

接続中

AoqConnectionStatusConnected

2

接続済み

AoqConnectionStatusFailed

3

接続失敗

AoqEncoderType / AoqMirrorMode / AoqOrientationMode

Android SDK と同じで、変更はありません。

オーディオ関連の型

AoqAudioCaptureConfig

フィールド

型

デフォルト

説明

isExternal

boolean

false

true: 外部オーディオ入力を使用

isVoipMode

boolean

false

true: VoIP モードを有効にする (ハードウェア AEC)

channel

number

1

チャンネル数: 1 または 2

AoqAudioPlaybackConfig

フィールド

型

デフォルト

説明

isVoipMode

boolean

false

true: VoIP モードを有効にする (ハードウェア AEC)。キャプチャと再生の設定間で先書き優先

isDefaultSpeaker

boolean

true

true: デフォルトはスピーカー、false: デフォルトはイヤーピース

isExternal

boolean

false

true: 外部オーディオ出力を使用

channel

number

1

チャンネル数: 1 または 2

AoqAudioCodecConfig

フィールド

型

デフォルト

説明

trackType

AoqTrackType

AoqTrackTypeAudio

ターゲットトラック

codecType

AoqEncoderType

AoqEncoderTypeAudioPCM

コーデックフォーマット

sampleRate

number

48000

サンプルレート (Hz)

channel

number

1

チャンネル数

bitrate

number

32000

ビットレート (bps)

ビデオ関連の型

AoqVideoCaptureConfig

フィールド

型

デフォルト

説明

width

number

1280

キャプチャ幅。isExternal=true の場合は無視されます

height

number

720

キャプチャ高さ

fps

number

15

キャプチャフレームレート

isExternal

boolean

false

true: カメラを開かず、pushExternalVideoCapturedFrame を介してフレームを提供します

cameraDirection

AoqCameraDirection

Front

カメラの向き

AoqVideoCodecConfig

フィールド

型

デフォルト

説明

trackType

AoqTrackType

AoqTrackTypeVideo

ターゲットトラック

codecType

AoqEncoderType

AoqEncoderTypeVideoH264

コーデックフォーマット

width

number

720

エンコード幅

height

number

1280

エンコード高さ

fps

number

15

フレームレート

bitrate

number

500

ビットレート (kbps)

minBitrate

number

128

最小ビットレート (kbps)

keyframeInterval

number

2

キーフレーム間隔 (秒)

mirrorMode

AoqMirrorMode

Disabled

ミラーモード

orientationMode

AoqOrientationMode

Auto

ビデオの向き

isExternal

boolean

false

true: SDK は再エンコードをスキップします

Android とは異なり、HarmonyOS でのビットレート単位は kbps (デフォルト: 500/128) です。Android では bps (デフォルト: 500000/128000) です。

AoqVideoCanvas

フィールド

型

デフォルト

説明

view

Object \

null

null

AoqXComponentController インスタンス。null を渡してレンダリングバインディングを削除します

renderMode

AoqRenderMode

AoqRenderModeAuto

表示モード

AoqVideoPixelFormat

列挙値

値

説明

AoqVideoPixelFormatUnknown

0

不明

AoqVideoPixelFormatI420

1

I420

AoqVideoPixelFormatNV12

2

NV12

AoqVideoPixelFormatNV21

3

NV21

AoqVideoPixelFormatBGRA

4

BGRA

AoqVideoPixelFormatRGBA

5

RGBA

TextureOES と Texture2D は HarmonyOS ではサポートされていません。

AoqVideoFrame

フィールド

型

説明

format

AoqVideoPixelFormat

ピクセルフォーマット

width

number

幅 (ピクセル)

height

number

高さ (ピクセル)

dataPtr

ArrayBuffer \

Uint8Array \

null

パック形式データ

dataSize

number

パックデータサイズ (バイト)

dataY / dataU / dataV

ArrayBuffer \

Uint8Array \

null

I420 プレーン

strideY / strideU / strideV

number

プレーンストライド

timeStamp

number

タイムスタンプ (ms)。0 の場合、SDK はローカルクロックを使用します

AoqVideoEncodedFrame

フィールド

型

説明

codec

AoqVideoCodecType

エンコーディングフォーマット (AoqVideoCodecTypeJPEG = 0)

data

ArrayBuffer \

Uint8Array

エンコード済みフレームデータ

width

number

幅

height

number

高さ

timeStamp

number

タイムスタンプ (ms)

オーディオファイルと外部ストリームの型

AoqAudioFileMixConfig

フィールド

型

デフォルト

説明

fileName

string

""

ファイル名 (パスを含む)

cycles

number

-1

ループ回数。-1 は無限ループを意味します

startPosMs

number

0

再生開始位置 (ms)

publishVolume

number

100

発行ボリューム [0, 100]

playoutVolume

number

100

ローカル再生音量 [0, 100]

AoqAudioExternalStreamConfig

フィールド

型

デフォルト

説明

trackType

AoqTrackType

AoqTrackTypeAudio

トラックタイプ

codecType

AoqEncoderType

AoqEncoderTypeAudioPCM

オーディオフォーマット

channels

number

1

チャンネル数

sampleRate

number

48000

サンプルレート (Hz)

playoutVolume

number

100

再生音量 [0, 100]

publishVolume

number

100

公開ボリューム [0, 100]

maxBufferDuration

number

1000

最大バッファー期間 (ms)

enable3A

boolean

false

入力 PCM に 3A 処理を適用するかどうか

AoqAudioFrameData

フィールド

型

説明

dataPtr

ArrayBuffer \

Uint8Array \

null

RAW PCM オーディオデータ

dataSize

number

PCM データサイズ (バイト)

numOfSamples

number

サンプル数 (モノラル)

bytesPerSample

number

サンプルあたりのバイト数

numOfChannels

number

チャンネル数

samplesPerSec

number

サンプルレート

pushSequence

number

PCM プッシュシーケンス番号

timeStamp

number

タイムスタンプ

autoGenMute

boolean

true: これは SDK が生成した無音データです

オブザーバー設定の型

AoqAudioObserverConfig

フィールド

型

デフォルト

説明

sampleRate

number

48000

コールバックのサンプルレート

channels

number

1

コールバックのチャンネル数

mode

AoqAudioObserverMode

ReadOnly

読み書きモード

AoqVideoObserverConfig

フィールド

型

デフォルト

説明

format

AoqVideoPixelFormat

I420

コールバックのピクセルフォーマット

alignment

AoqVideoObserverAlignment

Default

幅アライメント

mode

AoqVideoObserverMode

ReadOnly

読み書きモード

mirrorApplied

boolean

false

ミラーリングを適用するかどうか

統計関連の型

AoqStats

フィールド

型

説明

audioPublishStats

AoqAudioPublishStats[]

オーディオパブリッシュ統計

videoPublishStats

AoqVideoPublishStats[]

ビデオパブリッシュ統計

dataMsgPublishStats

AoqDataMsgPublishStats[]

データメッセージパブリッシュ統計

audioSubscribeStats

AoqAudioSubscribeStats[]

オーディオサブスクライブ統計

videoSubscribeStats

AoqVideoSubscribeStats[]

ビデオサブスクライブ統計

dataMsgSubscribeStats

AoqDataMsgSubscribeStats[]

データメッセージサブスクライブ統計

networkStats

AoqNetworkStats \

null

ネットワーク統計

統計のサブタイプ

AoqAudioPublishStats: trackType / bitrate / bytes / encodeVolume AoqVideoPublishStats: trackType / bitrate / bytes / encodeFps AoqAudioSubscribeStats: trackType / bitrate / bytes / playVolume AoqVideoSubscribeStats: trackType / bitrate / bytes / decodeFps / renderFps AoqDataMsgPublishStats / AoqDataMsgSubscribeStats: trackType / bitrate / bytes AoqNetworkStats: sendBitrate / sendBytes / recvBitrate / recvBytes / loss / rtt

Android SDK との主な違い

カテゴリ

Android

HarmonyOS

実装言語

Java

ArkTS (.ets)、NAPI で C++ にブリッジ

戻り値の型

int / long / boolean

number / boolean

createEngine の戻り値

@NonNull AoqClientEngine

AoqClientEngine \

null

createEngine のコンテキスト

android.content.Context

common.Context (UIAbility/Page)

リスナーの形式

デフォルトの空メソッドを持つ抽象クラス

TS インターフェイス。すべてのコールバックはオプショナル (?)

フレームオブザーバーの形式

デフォルトメソッドを持つインターフェイス

TS インターフェイス。すべてのコールバックはオプショナル (?)

AoqCreateConfig

isBTScoMode を含む

isBTScoMode を含まない

AoqAudioPlaybackConfig

isVoipMode なし

isVoipMode を含む。キャプチャと再生の間で先書き優先

onAudioDeviceFocusChanged

提供される

提供されない (オーディオフォーカス抽象化なし)

ビデオレンダリングビュー

View (SurfaceView/TextureView)

AoqXComponentController (XComponentController を拡張)

ピクセルフォーマット列挙型

TextureOES (7) / Texture2D (8) を含む

テクスチャフォーマットを含まない

ビデオフレームの追加フィールド

textureId / transformMatrix / eglContext

含まれない

フレームデータコンテナ

byte[] / ByteBuffer

ArrayBuffer / Uint8Array

ビデオエンコーディングのビットレート単位

bps (デフォルト: 500000/128000)

kbps (デフォルト: 500/128)

AoqTrackType

AoqTrackTypeScreen (3) を含む

AoqTrackTypeScreen を含まない。画面キャプチャはまだ利用できません

画面キャプチャ API

startScreenCapture / stopScreenCapture

まだ提供されていない

オブザーバーの書き戻し

I420 の書き戻しをサポート

現在は読み取り専用と同等。書き戻しは将来のリリースで計画

オブザーバー再登録の安全性

SDK の内部実装に依存

トゥームストーンパターンを使用した UAF 保護

デバイス監視

Java レイヤーで暗黙的に実行

AoqDeviceMonitor (内部) が自動的に開始

エラーコードの名前空間

AoqErrorCodeXxx

AoqECXxx (例: AoqECOK, AoqECParamInvalid)

アーキテクチャに関する注記

  1. AoqXComponentController: XComponentController を拡張し、onSurfaceCreated、onSurfaceChanged、onSurfaceDestroyed をオーバーライドします。インスタンスを作成し、XComponent にアタッチしてから、setLocalView または setRemoteView を呼び出す際に canvas.view として渡します。
  2. NAPI アーキテクチャ: ファサード (AoqClientEngine.ets) → 実装 (AoqClientEngineImpl.ets) → NAPI (libaoq_client_sdk.so)。設定オブジェクトは、実装レイヤーで個々のパラメーターにフラット化されます。
  3. デバイス監視 (内部): AoqDeviceMonitor は createEngine の後に自動的に開始され、ネットワーク状態とアプリのフォアグラウンド/バックグラウンド状態を C++ エンジンに転送します。
  4. オブザーバーの UAF 保護: 再登録は、C++ で古い参照をカット → 古いオブザーバーをトゥームストーンにプッシュ → 新しいオブザーバーを指す、という 3段階のシーケンスに従います。
  5. フレームペイロードのセマンティクス: オーディオ/ビデオフレームコールバック内の Uint8Array バッファーは、ネイティブメモリのコピーです。P1 では書き戻しはサポートされていません。P2 でゼロコピーが計画されています。