AOQ クライアント SDK HarmonyOS (OHOS) の API リファレンスです。プラットフォーム言語は ArkTS (.ets) で、NAPI を介して C++ エンジンにブリッジされます。
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 を返します。
パラメーター | 型 | 説明 |
|---|---|---|
config | AoqCreateConfig | エンジン作成設定 |
listener | AoqEngineEventListener | エンジンイベントコールバックリスナー (インターフェイス。すべてのコールバックはオプショナルです) |
context | common.Context | UIAbility/Page コンテキスト。aki+ACPM の初期化に使用されます |
AoqClientEngine | null — ネイティブでの作成に失敗した場合は null。
注: Android とは異なり、この SDK は失敗時に null を返します。戻り値は常に null チェックをしてください。context は有効な UIAbility または Page コンテキストでなければなりません。
destroy
エンジンシングルトンを破棄し、すべてのリソースを解放します。使用を再開する前に、再度 createEngine を呼び出す必要があります。
getVersion
現在の SDK バージョン文字列を取得します。
"1.0.0"。
connect
Relay サーバーに接続します。AppServer が接続パラメーターをクライアントに配信します。
/api/v1/allocate を通じて接続パラメーターを割り当てます。特定のモデルについては、Qwen-Omni-Realtime AOQ アクセス、Qwen-Audio-Realtime AOQ アクセス、Qwen-LiveTranslate-Realtime AOQ アクセスをご覧ください。パラメーター | 型 | 説明 |
|---|---|---|
config | AoqConnectConfig | 接続設定。トークン、SID、Relay エンドポイントリストを含みます |
onConnectionStatusChange を介して非同期に報告されます。connect を呼び出す前に enableSendMediaStream(false) を呼び出すことを推奨します。
disconnect
サーバーから切断し、接続関連のリソースを解放します。オーディオおよびビデオのキャプチャ/再生デバイスは自動的に停止されません。
オーディオデバイス管理
startAudioCapture
オーディオキャプチャデバイス (マイク) を開きます。
パラメーター | 型 | 説明 |
|---|---|---|
config | AoqAudioCaptureConfig | キャプチャ設定 |
stopAudioCapture
オーディオキャプチャデバイスを閉じます。
muteAudioCapture
オーディオキャプチャをミュートまたはミュート解除します。
パラメーター | 型 | 説明 |
|---|---|---|
mute | boolean | true: ミュート、false: ミュート解除 |
startAudioPlayer
オーディオ再生を開始します (スピーカーまたはイヤホンを介してリモートオーディオを再生)。
パラメーター | 型 | 説明 |
|---|---|---|
config | AoqAudioPlaybackConfig | 再生設定 |
stopAudioPlayer
オーディオ再生を停止します。
pauseAudioPlayer
スムーズな遷移のために、オプションのフェードアウトでオーディオ再生を一時停止します。
パラメーター | 型 | 説明 |
|---|---|---|
fadeMs | number | フェードアウト時間 (ミリ秒)。0 は即時を意味します |
resumeAudioPlayer
スムーズな遷移のために、オプションのフェードインでオーディオ再生を再開します。
パラメーター | 型 | 説明 |
|---|---|---|
fadeMs | number | フェードイン時間 (ミリ秒)。0 は即時を意味します |
interruptAudioPlayer
現在のオーディオコールターンを中断します。
パラメーター | 型 | 説明 |
|---|---|---|
trackType | AoqTrackType | ターゲットトラックタイプ。通常は |
fadeMs | number | フェードアウト時間 (ミリ秒) |
enableSpeakerphone
オーディオ出力ルートをスピーカーとイヤホンで切り替えます。
パラメーター | 型 | 説明 |
|---|---|---|
enable | boolean | true: スピーカーを使用、false: イヤホンを使用 |
isSpeakerphoneEnabled
スピーカーが現在アクティブかどうかを問い合わせます。
オーディオコーデック設定
setAudioEncoderConfig
オーディオエンコーディングパラメーターを設定します。
setAudioDecoderConfig
オーディオデコーディングパラメーターを設定します。
ビデオデバイス管理
startVideoCapture
ビデオキャプチャデバイス (カメラ) を開きます。config.isExternal = true の場合、カメラは開かれず、呼び出し元が pushExternalVideoCapturedFrame を介してフレームを提供します。
stopVideoCapture
ビデオキャプチャデバイスを閉じます。
switchCamera
前面カメラと背面カメラを切り替えます。
パラメーター | 型 | 説明 |
|---|---|---|
direction | AoqCameraDirection |
|
setLocalView
ローカルビデオレンダリングビューを設定または削除します。
パラメーター | 型 | 説明 | |
|---|---|---|---|
trackType | AoqTrackType |
| |
canvas | AoqVideoCanvas \ | null | レンダリングキャンバスの構成。レンダリングビューを削除するには、null を渡すか、 |
XComponent.onLoad コールバックの後にこれを呼び出す必要があります。canvas.view として AoqXComponentController インスタンスを渡してください。
setRemoteView
リモートビデオレンダリングビューを設定または削除します。
パラメーター | 型 | 説明 | |
|---|---|---|---|
trackType | AoqTrackType |
| |
canvas | AoqVideoCanvas \ | null | レンダリングキャンバス設定。null を渡すか、 |
ビデオエンコーディングと外部入力
setVideoEncoderConfig
ビデオエンコーディングパラメーターを設定します。呼び出しは config.trackType で指定されたトラックにルーティングされます。
pushExternalVideoCapturedFrame
外部でキャプチャされた RAW ビデオフレームをプッシュします。
パラメーター | 型 | 説明 |
|---|---|---|
trackType | AoqTrackType |
|
frame | AoqVideoFrame | ビデオフレームデータ |
startVideoCapture(isExternal=true) の後でのみ消費されます。サポートされているフォーマット: NV12、NV21、BGRA、RGBA、I420。
内部バッファーが一杯の場合、メソッドは AoqECVideoExternalBufferFull (210) を返します。スリープして再試行してください。ビジーループはしないでください。
pushExternalVideoEncodedFrame
外部でエンコードされたビデオフレームをプッシュします。SDK は再エンコードせずに直接送信します。
パラメーター | 型 | 説明 |
|---|---|---|
trackType | AoqTrackType |
|
frame | AoqVideoEncodedFrame | エンコード済みフレームデータ |
setVideoEncoderConfig(isExternal=true) が設定された後でのみ消費されます。
メディアストリーム制御
enableSendMediaStream
ローカルメディアストリームの送信を有効または無効にします。呼び出しは trackType で指定されたトラックにルーティングされます。
パラメーター | 型 | 説明 |
|---|---|---|
trackType | AoqTrackType |
|
enable | boolean | true: 送信を有効にする、false: 送信を無効にする |
enableSendMediaStream(trackType, false) を呼び出し、接続が確立されセッションハンドシェイクが完了したら (onConnectionStatusChange が AoqConnectionStatusConnected を報告)、有効にします。
オーディオファイル再生
startAudioFile
ローカルオーディオファイルのストリーミングを開始します。オーディオファイルの再生は、公開ストリームとローカル再生の両方にミックスされます。
パラメーター | 型 | 説明 |
|---|---|---|
fileId | string | 呼び出し元が指定するオーディオファイルの一意の識別子 |
config | AoqAudioFileMixConfig | 再生設定 |
stopAudioFile / pauseAudioFile / resumeAudioFile
getAudioFileDuration / getAudioFileCurrentPosition
setAudioFilePositionMillis
setAudioFileVolume / getAudioFileVolume
外部オーディオストリーム
addAudioExternalStream
外部オーディオストリームを追加します。
pushAudioExternalStreamData
外部 PCM オーディオデータをプッシュします。内部バッファーが一杯の場合、AoqECAudioExternalBufferFull (110) を返します。
setAudioExternalStreamVolume / getAudioExternalStreamVolume
clearAudioExternalStreamBuffer
外部オーディオストリームのバッファーをクリアします。戻り値はなく、非同期で実行されます。
パラメーター | 型 | 説明 |
|---|---|---|
fadeoutMs | number | -1: デフォルトのフェードアウト、0: 即時クリア、>0: 指定された時間を保持してからフェードアウト |
removeAudioExternalStream
リアルタイムメッセージング
sendDataMsg
MoQT データチャネルを介してリアルタイムデータメッセージを送信します。
オーディオフレームコールバック
setAudioFrameObserver
オーディオフレームデータコールバックオブザーバーを設定します。最初にオブザーバーを登録し、次に enableAudioFrameObserver を呼び出してコールバックの受信を開始します。
enableAudioFrameObserver
ビデオフレームコールバック
setVideoFrameObserver
enableVideoFrameObserver
AoqEngineEventListener コールバック
すべてのコールバックはオプショナルプロパティ (?) です。
IAudioFrameObserver
frame.dataPtr はネイティブメモリの Uint8Array コピーであり、現在は読み取り専用です (変更は SDK に書き戻されません)。
IVideoFrameObserver
Uint8Array コピーであり、コールバック中のみ有効です。現在は読み取り専用と同等であり、書き戻しサポートは将来のリリースで計画されています。
データ型と列挙型
一般的な型
AoqCreateConfig
フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
workDir | string | "" | SDK 作業ディレクトリ |
enableDumpAudio | boolean | false | RAW オーディオダンプを有効にします (デバッグ用) |
extras | string | "" | 追加パラメーター文字列 |
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 | データメッセージングトラック |
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 | キャプチャ幅。 |
height | number | 720 | キャプチャ高さ |
fps | number | 15 | キャプチャフレームレート |
isExternal | boolean | false | true: カメラを開かず、 |
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 は再エンコードをスキップします |
AoqVideoCanvas
フィールド | 型 | デフォルト | 説明 | |
|---|---|---|---|---|
view | Object \ | null | null |
|
renderMode | AoqRenderMode | AoqRenderModeAuto | 表示モード |
AoqVideoPixelFormat
列挙値 | 値 | 説明 |
|---|---|---|
AoqVideoPixelFormatUnknown | 0 | 不明 |
AoqVideoPixelFormatI420 | 1 | I420 |
AoqVideoPixelFormatNV12 | 2 | NV12 |
AoqVideoPixelFormatNV21 | 3 | NV21 |
AoqVideoPixelFormatBGRA | 4 | BGRA |
AoqVideoPixelFormatRGBA | 5 | RGBA |
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 | エンコーディングフォーマット ( | |
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 |
|
| |
AoqAudioPlaybackConfig |
|
| |
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) |
アーキテクチャに関する注記
- AoqXComponentController:
XComponentControllerを拡張し、onSurfaceCreated、onSurfaceChanged、onSurfaceDestroyedをオーバーライドします。インスタンスを作成し、XComponentにアタッチしてから、setLocalViewまたはsetRemoteViewを呼び出す際にcanvas.viewとして渡します。 - NAPI アーキテクチャ: ファサード (
AoqClientEngine.ets) → 実装 (AoqClientEngineImpl.ets) → NAPI (libaoq_client_sdk.so)。設定オブジェクトは、実装レイヤーで個々のパラメーターにフラット化されます。 - デバイス監視 (内部):
AoqDeviceMonitorはcreateEngineの後に自動的に開始され、ネットワーク状態とアプリのフォアグラウンド/バックグラウンド状態を C++ エンジンに転送します。 - オブザーバーの UAF 保護: 再登録は、C++ で古い参照をカット → 古いオブザーバーをトゥームストーンにプッシュ → 新しいオブザーバーを指す、という 3段階のシーケンスに従います。
- フレームペイロードのセマンティクス: オーディオ/ビデオフレームコールバック内の
Uint8Arrayバッファーは、ネイティブメモリのコピーです。P1 では書き戻しはサポートされていません。P2 でゼロコピーが計画されています。