このトピックでは、AOQ クライアント SDK for Linux の Python API、コールバック、データ型について説明します。
aoq_client_sdk Python モジュールを介して API を提供します。すべてのコールバックはネイティブスレッドでトリガーされるため、お客様自身でスレッドセーフを確保する必要があります。
API インデックス
エンジンライフサイクル
API | 説明 |
|---|---|
create_engine | エンジンインスタンス (シングルトン) の作成 |
destroy | エンジンインスタンスの削除 |
get_version | SDK バージョンの取得 |
connect | リレーサーバーへの接続 |
disconnect | サーバーからの切断 |
オーディオデバイス管理
API | 説明 |
|---|---|
start_audio_capture | 音声キャプチャの開始 (Linux では空の実装。マイクは開きません) |
stop_audio_capture | 音声キャプチャの停止 (Linux では実際には効果がありません) |
mute_audio_capture | 音声キャプチャのミュートまたはミュート解除 (Linux ではデバイスキャプチャは利用できません) |
start_audio_player | 音声再生の開始 (Linux では空の実装。スピーカーは開きません) |
stop_audio_player | 音声再生の停止 (Linux では実際には効果がありません) |
pause_audio_player | 音声再生の一時停止 (Linux ではデバイス再生は利用できません) |
resume_audio_player | 音声再生の再開 (Linux ではデバイス再生は利用できません) |
interrupt_audio_player | 現在のオーディオセッションの中断 |
音声エンコーディング設定
API | 説明 |
|---|---|
set_audio_encoder_config | 音声エンコーディングパラメーターの設定 |
set_audio_decoder_config | 音声デコーディングパラメーターの設定 |
ビデオデバイス管理
API | 説明 |
|---|---|
start_video_capture | ビデオキャプチャの開始 (Linux では外部キャプチャモードのみサポート) |
stop_video_capture | ビデオキャプチャの停止 (Linux では外部キャプチャモードにのみ適用) |
set_local_view | ローカルビデオレンダリングウィンドウの設定または削除 (Linux ではレンダリング実装なし) |
set_remote_view | リモートビデオレンダリングウィンドウの設定または削除 (Linux ではレンダリング実装なし) |
ビデオコーデックと外部入力
API | 説明 |
|---|---|
set_video_encoder_config | ビデオエンコーディングパラメーターの設定 |
set_video_decoder_config | ビデオデコーディングパラメーターの設定 |
push_external_video_frame | 外部でキャプチャされたビデオフレームのプッシュ |
push_external_video_encoded_frame | 外部でエンコードされたビデオフレームのプッシュ |
メディアストリーム制御
API | 説明 |
|---|---|
enable_send_media_stream | ローカルメディアストリームの送信の有効化または無効化 |
音声ファイルの再生
API | 説明 |
|---|---|
start_audio_file | ローカル音声ファイルのパブリッシングストリームへの再生開始 |
stop_audio_file | 音声ファイル再生の停止 |
pause_audio_file | 音声ファイル再生の一時停止 |
resume_audio_file | 音声ファイル再生の再開 |
get_audio_file_duration | 音声ファイルの総持続時間のクエリ |
get_audio_file_current_position | 音声ファイルの現在の再生位置のクエリ |
set_audio_file_position_millis | 音声ファイルの再生位置の設定 (シーク) |
set_audio_file_volume | 音声ファイルのボリュームの設定 |
get_audio_file_volume | 音声ファイルの現在のボリュームのクエリ |
外部音声ストリーム
API | 説明 |
|---|---|
add_audio_external_stream | 外部音声ストリームの追加 |
remove_audio_external_stream | 外部音声ストリームの削除 |
push_audio_external_stream_data | 外部音声 PCM データの供給 |
set_audio_external_stream_volume | 外部音声ストリームのボリュームの設定 |
get_audio_external_stream_volume | 外部音声ストリームのボリュームのクエリ |
clear_audio_external_stream_buffer | 外部音声ストリームのバッファーのクリア |
リアルタイムメッセージング
API | 説明 |
|---|---|
send_data_msg | リアルタイムデータメッセージの送信 |
音声フレームコールバック
API | 説明 |
|---|---|
set_audio_frame_observer | 音声フレームデータコールバックリスナーの設定 |
enable_audio_frame_observer | 指定された位置での音声フレームコールバックの有効化または無効化 |
ビデオフレームコールバック
API | 説明 |
|---|---|
set_video_frame_observer | ビデオフレームデータコールバックリスナーの設定 |
enable_video_frame_observer | 指定された位置でのビデオフレームコールバックの有効化または無効化 |
コールバックインターフェイス
コールバック | 説明 |
|---|---|
on_error | エンジンエラーコールバック |
on_connection_status_change | 接続ステータス変更コールバック |
on_data_msg | 受信したリアルタイムデータメッセージのコールバック |
IAudioFrameObserver | 音声フレームデータリスナーのベースクラス |
IVideoFrameObserver | ビデオフレームデータリスナーのベースクラス |
ユーティリティ関数
API | 説明 |
|---|---|
load_library | ネイティブ共有ライブラリの手動指定とロード |
API の詳細
エンジンライフサイクル
create_engine
エンジンインスタンスを作成します (クラスメソッド)。SDK はエンジンをグローバルシングルトンとして保持するため、このメソッドを再度呼び出すと既存のインスタンスが返されます。destroy の後、エンジンを引き続き使用するには、再度 create_engine を呼び出す必要があります。
パラメーター | 型 | 説明 |
|---|---|---|
config | AoqCreateConfig | エンジン作成設定 |
listener | AoqEngineEventListener | エンジンイベントコールバックリスナー |
destroy
エンジンインスタンスを削除し (クラスメソッド)、すべてのリソースを解放します。
get_version
現在の SDK バージョンを取得します (静的メソッド)。
connect
リレーサーバーに接続します。アプリケーションサーバーは、使用中のプロトコルに基づいて一時的な AOQ 接続パラメーターを取得し、クライアントに送信します。詳細については、「トークン認証」をご参照ください。
パラメーター | 型 | 説明 |
|---|---|---|
config | AoqConnectConfig | 接続設定。トークン、SID、リレーアクセスポイントのリストが含まれます。 |
disconnect
サーバーから切断し、接続に関連するリソースを解放します。
オーディオデバイス管理
start_audio_capture
stop_audio_capture
mute_audio_capture
start_audio_player
stop_audio_player / pause_audio_player / resume_audio_player
interrupt_audio_player
音声エンコーディング設定
ビデオデバイス管理
start_video_capture を呼び出すときは、is_external を True に設定し、push_external_video_frame を呼び出してフレームを提供します。set_local_view、set_remote_view、および AoqVideoCanvas.view は Linux では実際には効果がありません。ビデオをプレビューするには、ビデオフレームコールバックを介してフレームを取得し、自分でレンダリングしてください。
ビデオコーデックと外部入力
- set_video_decoder_config の場合、track_type/codec_type/width/height/fps/bitrate フィールドのみが有効です。
- push_external_video_frame は start_video_capture(is_external=True) の後にのみ消費されます。パック形式 (NV12/NV21/BGRA/RGBA) の場合は
frame.dataを入力し、3 つの I420 プレーンの場合はframe.data_y/u/vと対応するストライドを入力します。バッファーがいっぱいの場合、AoqErrorCode.VIDEO_EXTERNAL_BUFFER_FULL(210) を返します。 - push_external_video_encoded_frame には start_video_capture(is_external=True) と set_video_encoder_config(codec_type=VIDEO_JPEG) が必要で、再エンコードなしでバイパスパスを通ります。
メディアストリーム制御
音声ファイルの再生
外部音声ストリーム
リアルタイムメッセージング
音声フレームコールバック
ビデオフレームコールバック
コールバックインターフェイス
AoqEngineEventListener
エンジンイベントコールバックのベースクラス。すべてのメソッドはオプションのオーバーライドで、デフォルトは空の実装です。コールバックはネイティブスレッドでトリガーされるため、お客様自身でスレッドセーフを確保する必要があります。
on_error
on_connection_status_change
on_data_msg
IAudioFrameObserver
音声フレームデータリスナーのベースクラス。すべてのメソッドはオプションのオーバーライドで、デフォルトは空の実装です。
AoqAudioFrameData.data はすでにバイトコピーであり、非同期で安全に使用できます。
IVideoFrameObserver
ビデオフレームデータリスナーのベースクラス。すべてのメソッドはオプションのオーバーライドで、デフォルトでは False を返します。
ユーティリティ関数
load_library
libAoqClientSdk.so は次の順序で検索されます:AOQ_CLIENT_SDK_LIB 環境変数、モジュールのディレクトリ、同じレベルの lib ディレクトリ、およびデフォルトのシステムパス。ロードに失敗した場合、OSError がスローされます。典型的な原因は、依存ライブラリが LD_LIBRARY_PATH にないことです。
データ型と列挙型
すべてのデータ型は Python のデータクラスです。直接構築してフィールドに値を割り当てることができます。
一般的な型
AoqCreateConfig
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
work_dir | str | "" | SDK の作業ディレクトリ |
enable_dump_audio | bool | False | オーディオダンプを有効にするかどうかを指定します (デバッグ用) |
extras | str | "" | 拡張パラメーター文字列 |
AoqConnectConfig
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
token | str | "" | 接続認証トークン |
sid | str | "" | セッション ID |
certificate | str | "" | サーバー証明書の指紋 |
relay_endpoints | List[AoqRelayEndpoint] | None | リレーアクセスポイントのリスト |
workspace_id_hash | str | "" | ワークスペース ID ハッシュ |
publish_tracks | List[AoqTrackParam] | None | ローカルで公開されたトラックのリスト |
subscribe_tracks | List[AoqTrackParam] | None | ローカルでサブスクライブされたトラックのリスト |
AoqRelayEndpoint
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
endpoint | str | "" | リレーサーバーのドメイン名または IP アドレス |
port | int | 0 | リレーサーバーのポート |
route_index | int | -1 | パスインデックス。他のプラットフォームの SDK の routeIndex と整合しています。0 未満の場合、SDK は配列の添え字に基づいて自動的に入力します。 |
AoqTrackParam
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
track_type | AoqTrackType | AoqTrackType.AUDIO | トラックタイプ |
AoqDataMsg
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
data | bytes | b"" | メッセージデータ (バイト文字列) |
列挙型
AoqErrorCode
列挙値 | 値 | 説明 |
|---|---|---|
OK | 0 | 成功 |
PARAM_INVALID | 1 | 無効なパラメーター |
STATE_INVALID | 2 | 無効な状態 |
AUDIO | 100 | 一般的な音声エラー |
AUDIO_EXTERNAL_BUFFER_FULL | 110 | 外部音声バッファーがいっぱいです |
AUDIO_DEVICE | 120 | 一般的なオーディオデバイスエラー |
AUDIO_DEVICE_RECORDING_AUTH_FAILED | 121 | 録音権限が付与されていません |
AUDIO_DEVICE_RECORDING_OCCUPIED | 122 | 録音デバイスが使用中です |
AUDIO_DEVICE_RECORDING_START_FAIL | 124 | 録音の開始に失敗しました |
AUDIO_DEVICE_PLAYOUT_OCCUPIED | 125 | 再生デバイスが使用中です |
AUDIO_DEVICE_PLAYOUT_START_FAIL | 127 | 再生の開始に失敗しました |
VIDEO | 200 | 一般的なビデオエラー |
VIDEO_EXTERNAL_BUFFER_FULL | 210 | 外部ビデオバッファーがいっぱいです |
AoqConnectionStatus
列挙値 | 値 | 説明 |
|---|---|---|
DISCONNECTED | 0 | 切断済み |
CONNECTING | 1 | 接続中 |
CONNECTED | 2 | 接続済み |
FAILED | 3 | 接続に失敗しました |
AoqTrackType
列挙値 | 値 | 説明 |
|---|---|---|
AUDIO | 0 | 音声トラック |
VIDEO | 1 | ビデオトラック |
DATA | 2 | データメッセージトラック |
AoqEncoderType
列挙値 | 値 | 説明 |
|---|---|---|
UNKNOWN | 0 | 不明なフォーマット |
AUDIO_PCM | 1 | 音声 PCM |
AUDIO_OPUS | 2 | 音声 Opus |
VIDEO_H264 | 3 | ビデオ H.264 |
VIDEO_JPEG | 4 | ビデオ JPEG |
DATA_TEXT | 5 | メッセージテキスト |
AoqMirrorMode
列挙値 | 値 | 説明 |
|---|---|---|
DISABLED | 0 | ミラーリングを無効にする |
ENABLED | 1 | ミラーリングを有効にする |
AoqOrientationMode
列挙値 | 値 | 説明 |
|---|---|---|
AUTO | 0 | 自動調整 |
PORTRAIT | 1 | ポートレート |
LANDSCAPE | 2 | ランドスケープ |
AoqRenderMode
列挙値 | 値 | 説明 |
|---|---|---|
AUTO | 0 | 適応モード |
STRETCH | 1 | ストレッチモード |
FILL | 2 | フィルモード |
CROP | 3 | クロップモード |
AoqVideoPixelFormat
列挙値 | 値 | 説明 |
|---|---|---|
UNKNOWN | 0 | 不明なフォーマット |
I420 | 1 | I420 (YUV 平面フォーマット) |
NV12 | 2 | NV12 (YUV セミプレーナーフォーマット) |
NV21 | 3 | NV21 (YUV セミプレーナーフォーマット) |
BGRA | 4 | BGRA (32 ビット) |
RGBA | 5 | RGBA (32 ビット) |
AoqCameraDirection
列挙値 | 値 | 説明 |
|---|---|---|
FRONT | 0 | フロントカメラ (プラットフォーム共通の列挙値。Linux ではカメラキャプチャはサポートされていません) |
BACK | 1 | リアカメラ (プラットフォーム共通の列挙値。Linux ではカメラキャプチャはサポートされていません) |
音声の型
AoqAudioCaptureConfig
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
is_external | bool | False | 外部キャプチャモードを使用するかどうかを指定します |
channel | int | 1 | チャンネル数 (デフォルトはモノラル) |
AoqAudioPlaybackConfig
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
is_external | bool | False | 外部再生モードを使用するかどうかを指定します |
channel | int | 1 | チャンネル数 (デフォルトはモノラル) |
AoqAudioCodecConfig
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
track_type | AoqTrackType | AUDIO | トラックタイプ |
codec_type | AoqEncoderType | AUDIO_PCM | コーデックフォーマット |
sample_rate | int | 48000 | サンプルレート (Hz) |
channel | int | 1 | チャンネル数 |
bitrate | int | 32000 | ビットレート (bit/s) |
AoqAudioFileMixConfig
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
file_name | str | "" | ファイル名 (パスを含む)。空にすることはできません。 |
cycles | int | -1 | ループ回数。-1 は無制限ループを示します。 |
start_pos_ms | int | 0 | 再生開始位置 (ミリ秒) |
publish_volume | int | 100 | パブリッシングボリューム。有効な値:0~100。 |
playout_volume | int | 100 | 再生ボリューム。有効な値:0~100。 |
AoqAudioExternalStreamConfig
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
track_type | AoqTrackType | AUDIO | 音声トラックタイプ |
codec_type | AoqEncoderType | AUDIO_PCM | 音声ストリームフォーマット |
channels | int | 1 | チャンネル数 |
sample_rate | int | 48000 | サンプルレート (Hz) |
playout_volume | int | 100 | 再生ボリューム。有効な値:0~100。 |
publish_volume | int | 100 | パブリッシングボリューム。有効な値:0~100。 |
max_buffer_duration | int | 1000 | 最大バッファー期間 (ミリ秒) |
enable_3a | bool | False | 入力 PCM に 3A 処理を適用するかどうかを指定します |
AoqAudioFrameData
RAW オーディオデータ。外部入力またはオブザーバーコールバックに使用されます。
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
data | bytes | b"" | RAW オーディオ PCM データ (コールバックではバイトコピー) |
num_of_samples | int | 0 | サンプル数 (チャンネルごと) |
bytes_per_sample | int | 0 | サンプルあたりのバイト数 |
num_of_channels | int | 0 | チャンネル数 |
samples_per_sec | int | 0 | 1 秒あたりのサンプル数 (サンプルレート) |
push_sequence | int | 0 | PCM 入力ラウンド |
time_stamp | int | 0 | タイムスタンプ |
auto_gen_mute | bool | False | True は SDK によって生成された無音データを示します |
AoqAudioObserverConfig
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
sample_rate | int | 48000 | コールバック音声のサンプルレート (Hz) |
channels | int | 1 | コールバックの音声チャンネル数 |
mode | AoqAudioObserverMode | READ_ONLY | 読み書きモード |
AoqAudioStreamDirection
列挙値 | 値 | 説明 |
|---|---|---|
PUBLISH | 0 | パブリッシングストリーム |
PLAYOUT | 1 | 再生ストリーム (サブスクライブストリーム) |
AoqAudioExternalStreamToggle
列挙値 | 値 | 説明 |
|---|---|---|
NORMAL | 0 | 通常状態 |
PAUSE | 1 | 一時停止状態 |
AoqAudioSource
列挙値 | 値 | 説明 |
|---|---|---|
CAPTURED | 0 | キャプチャされた音声データ |
PROCESS_CAPTURED | 1 | 3A 処理後の音声データ |
PUBLISH | 2 | 公開する音声データ |
PLAYBACK | 3 | 再生する音声データ |
AoqAudioObserverMode
列挙値 | 値 | 説明 |
|---|---|---|
READ_ONLY | 0 | 読み取り専用モード |
READ_WRITE | 1 | 読み書きモード |
ビデオの型
AoqVideoCaptureConfig
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
width | int | 1280 | キャプチャ幅 (ピクセル)。is_external=True の場合、このパラメーターは無効です。 |
height | int | 720 | キャプチャ高さ (ピクセル)。is_external=True の場合、このパラメーターは無効です。 |
fps | int | 15 | キャプチャフレームレート。is_external=True の場合、このパラメーターは無効です。 |
is_external | bool | False | 外部キャプチャを使用するかどうかを指定します。Linux は True のみをサポートします。start_video_capture を呼び出した後、push_external_video_frame を呼び出してフレームを提供します。 |
camera_direction | AoqCameraDirection | FRONT | モバイルプラットフォームのカメラの向き。Linux には対応する機能はありません。値は FRONT のままにしてください。 |
AoqVideoCodecConfig
ビデオコーデックパラメーター。エンコーディングとデコーディングで共有されます。デコーディングの場合、track_type/codec_type/width/height/fps/bitrate のみが有効で、他のフィールドはエンコーディングにのみ使用されます。
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
track_type | AoqTrackType | VIDEO | トラックタイプ |
codec_type | AoqEncoderType | VIDEO_H264 | コーデックフォーマット |
width | int | 540 | エンコード幅 (ピクセル) |
height | int | 960 | エンコード高さ (ピクセル) |
fps | int | 5 | エンコードフレームレート |
bitrate | int | 500000 | ターゲットビットレート (bit/s) |
min_bitrate | int | 128000 | 最小ビットレート (bit/s) |
keyframe_interval | int | 2 | キーフレーム間隔 (秒) |
mirror_mode | AoqMirrorMode | DISABLED | ミラーモード |
orientation_mode | AoqOrientationMode | AUTO | ビデオの向きモード |
AoqVideoCanvas
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
view | int | 0 | レンダリングウィンドウハンドル。Linux にはレンダリングバックエンドがないため、このフィールドは実際には効果がありません。値は 0 のままにしてください。 |
render_mode | AoqRenderMode | AUTO | レンダリングモード。Linux にはレンダリングバックエンドがないため、このフィールドは実際には効果がありません。 |
AoqVideoFrame
外部ビデオフレームまたはビデオフレームコールバックデータ。パック形式 (NV12/NV21/BGRA/RGBA) を使用する場合は、data に入力します。3 つの I420 プレーンを使用する場合は、data_y/u/v と対応するストライドに入力します。この 2 つの方法は相互に排他的です。
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
format | AoqVideoPixelFormat | UNKNOWN | ピクセルフォーマット |
width | int | 0 | ビデオ幅 (ピクセル) |
height | int | 0 | ビデオ高さ (ピクセル) |
data | bytes | b"" | パック形式データ (NV12/NV21/BGRA/RGBA) |
data_y | bytes | b"" | I420 Y プレーンデータ |
data_u | bytes | b"" | I420 U プレーンデータ |
data_v | bytes | b"" | I420 V プレーンデータ |
stride_y | int | 0 | Y プレーンのストライド |
stride_u | int | 0 | U プレーンのストライド |
stride_v | int | 0 | V プレーンのストライド |
time_stamp | int | 0 | タイムスタンプ (ミリ秒)。0 の場合、SDK はローカルクロックで入力します。 |
AoqVideoEncodedFrame
外部でエンコードされたビデオフレーム (JPEG フレームなど)。
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
codec | AoqEncoderType | VIDEO_JPEG | コーデックフォーマット |
data | bytes | b"" | エンコードされたデータ |
width | int | 0 | 幅 (ピクセル) |
height | int | 0 | 高さ (ピクセル) |
time_stamp | int | 0 | タイムスタンプ (ミリ秒)。0 の場合、SDK はローカルクロックで入力します。 |
AoqVideoObserverConfig
フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
format | AoqVideoPixelFormat | I420 | コールバックデータの期待されるピクセルフォーマット |
alignment | AoqVideoObserverAlignment | DEFAULT | 幅の配置ポリシー |
mode | AoqVideoObserverMode | READ_ONLY | 読み書きモード |
mirror_applied | bool | False | コールバックデータをミラーリングするかどうかを指定します |
AoqVideoSource
列挙値 | 値 | 説明 |
|---|---|---|
CAPTURED | 0 | 前処理前のキャプチャされたビデオデータ |
PRE_ENCODE | 1 | 前処理後、エンコード前のビデオデータ |
REMOTE | 2 | デコード後、レンダリング前のリモートビデオデータ |
AoqVideoObserverMode
列挙値 | 値 | 説明 |
|---|---|---|
READ_ONLY | 0 | 読み取り専用モード |
READ_WRITE | 1 | 読み書きモード |
AoqVideoObserverAlignment
列挙値 | 値 | 説明 |
|---|---|---|
DEFAULT | 0 | デフォルトの配置 |
EVEN | 1 | 偶数配置 |
ALIGN_4 | 2 | 4 バイト配置 |
ALIGN_8 | 3 | 8 バイト配置 |
ALIGN_16 | 4 | 16 バイト配置 |