AOQ Client SDK iOS API リファレンスは、エンジンライフサイクル、オーディオ/ビデオデバイス管理、コーデック設定、メディアストリーム制御、オーディオファイル再生、外部オーディオストリーム、リアルタイムメッセージング、フレームコールバック、デリゲートプロトコル、およびデータ型と列挙型を網羅しています。
API インデックス
注記AOQ SDK は汎用の動画 API を提供します。Qwen-Audio-Realtime は動画の入出力をサポートしていません。その他のモデルのメディア機能は、それぞれのアクセスドキュメントをご覧ください。
エンジンライフサイクル
API | 説明 |
|---|---|
createEngine:delegate: | エンジンインスタンス (シングルトン) を作成します。 |
destroy | エンジンインスタンスを破棄します。 |
getVersion | SDK バージョン文字列を取得します。 |
connect: | リレーサーバーに接続します。 |
disconnect | サーバーから切断します。 |
オーディオデバイス管理
API | 説明 |
|---|---|
startAudioCapture: | オーディオキャプチャデバイス (マイク) を開きます。 |
stopAudioCapture | オーディオキャプチャデバイスを閉じます。 |
muteAudioCapture: | オーディオキャプチャをミュートまたはミュート解除します。 |
startAudioPlayer: | オーディオ再生 (リモートオーディオの再生) を開始します。 |
stopAudioPlayer | オーディオ再生を停止します。 |
pauseAudioPlayer: | オプションでフェードアウトしながら、オーディオ再生を一時停止します。 |
resumeAudioPlayer: | オプションでフェードインしながら、オーディオ再生を再開します。 |
interruptAudioPlayer:fadeMs: | 現在のオーディオコールターンを中断します。 |
enableSpeakerphone: | オーディオ出力をスピーカーとイヤピースの間で切り替えます。 |
isSpeakerphoneEnabled | スピーカーが現在アクティブかどうかを確認します。 |
setAudioSessionRestriction: | AVAudioSession の制御権限を設定します。 |
オーディオコーデック設定
API | 説明 |
|---|---|
setAudioEncoderConfig: | オーディオエンコーディングパラメーターを設定します。 |
setAudioDecoderConfig: | オーディオデコーディングパラメーターを設定します。 |
ビデオデバイス管理
API | 説明 |
|---|---|
startVideoCapture: | ビデオキャプチャデバイス (カメラ) を開きます。 |
stopVideoCapture | ビデオキャプチャデバイスを閉じます。 |
switchCamera: | フロントカメラとリアカメラを切り替えます。 |
setLocalView:canvas: | ローカルビデオのレンダリングビューを設定または削除します。 |
setRemoteView:canvas: | リモートビデオのレンダリングビューを設定または削除します。 |
ビデオエンコーディングと外部入力
API | 説明 |
|---|---|
setVideoEncoderConfig: | ビデオエンコーディングパラメーターを設定します。 |
pushExternalVideoCapturedFrame:frame: | 外部でキャプチャした RAW ビデオフレームをプッシュします。 |
pushExternalVideoEncodedFrame:frame: | 外部でエンコード済みのビデオフレームをプッシュします。 |
メディアストリーム制御
API | 説明 |
|---|---|
enableSendMediaStream:enable: | ローカルメディアストリーム送信を有効または無効にします。 |
オーディオファイルの再生
API | 説明 |
|---|---|
startAudioFile:config: | ローカルのオーディオファイルのストリーミングを開始します。 |
stopAudioFile: | オーディオファイルの再生を停止します。 |
pauseAudioFile: | オーディオファイルの再生を一時停止します。 |
resumeAudioFile: | オーディオファイルの再生を再開します。 |
getAudioFileDuration: | オーディオファイルの総再生時間を取得します。 |
getAudioFileCurrentPosition: | 現在の再生位置を取得します。 |
setAudioFilePositionMillis:positionMillis: | オーディオファイル内の位置にシークします。 |
setAudioFileVolume:type:volume: | オーディオファイルの音量を設定します。 |
getAudioFileVolume:type: | 現在のオーディオファイルの音量を取得します。 |
外部オーディオストリーム
API | 説明 |
|---|---|
addAudioExternalStream:config: | 外部オーディオストリームを追加します。 |
removeAudioExternalStream: | 外部オーディオストリームを削除します。 |
pushAudioExternalStreamData:data: | 外部 PCM オーディオデータをプッシュします。 |
setAudioExternalStreamVolume:type:volume: | 外部オーディオストリームの音量を設定します。 |
getAudioExternalStreamVolume:type: | 外部オーディオストリームの音量を取得します。 |
clearAudioExternalStreamBuffer:fadeoutMs: | 外部オーディオストリームのバッファーをクリアします。 |
リアルタイムメッセージング
API | 説明 |
|---|---|
sendDataMsg: | リアルタイムデータメッセージを送信します。 |
オーディオフレームコールバック
API | 説明 |
|---|---|
setAudioFrameObserver: | オーディオフレームデータのコールバックデリゲートを設定します。 |
enableAudioFrameObserver:audioSource:config: | 指定したポイントでのオーディオフレームコールバックを有効または無効にします。 |
ビデオフレームコールバック
API | 説明 |
|---|---|
setVideoFrameObserver: | ビデオフレームデータのコールバックデリゲートを設定します。 |
enableVideoFrameObserver:videoSource:config: | 指定したポイントでのビデオフレームコールバックを有効または無効にします。 |
AoqEngineDelegate コールバック
コールバック | 説明 |
|---|---|
onError:message: | エンジンエラーのコールバックです。 |
onWarning:message: | エンジン警告のコールバックです。 |
onConnectionStatusChange: | 接続状態の変更コールバックです。 |
onStats: | 統計のコールバックです。 |
onAudioDeviceStateChanged: | オーディオデバイスの状態変更コールバックです。 |
onAudioDeviceRouteChanged: | オーディオ出力ルートの変更コールバックです。 |
onAudioDeviceInterrupted: | オーディオデバイスの中断コールバックです。 |
onVideoDeviceStateChanged: | ビデオデバイスの状態変更コールバックです。 |
onAudioFileState: | オーディオファイル再生状態のコールバックです。 |
onDataMsg: | リアルタイムデータメッセージ受信のコールバックです。 |
AoqAudioFrameDelegate | オーディオフレームデータのリスナープロトコルです。 |
AoqVideoFrameDelegate | ビデオフレームデータのリスナープロトコルです。 |
API 詳細
エンジンライフサイクル
createEngine:delegate:
エンジンインスタンスを作成します。SDK はエンジンをグローバルシングルトンとして保持します。
+ (instancetype _Nonnull)createEngine:(AoqCreateConfig * _Nonnull)config
delegate:(id<AoqEngineDelegate> _Nonnull)delegate;
destroy
+ (int)destroy;
getVersion
+ (NSString * _Nonnull)getVersion;
connect:
Relay サーバーに接続します。AppServer が接続パラメーターをクライアントに配信します。この呼び出しは直ちに戻ります。実際の接続結果は onConnectionStatusChange: コールバックで通知されます。
注記汎用 SDK API のドキュメントでは、AppServer が /api/v1/allocate を通じて接続パラメーターを割り当てます。特定のモデルについては、Qwen-Omni-Realtime AOQ アクセス、Qwen-Audio-Realtime AOQ アクセス、Qwen-LiveTranslate-Realtime AOQ アクセスをご覧ください。
- (int)connect:(AoqConnectConfig * _Nonnull)config;
disconnect
- (int)disconnect;
オーディオデバイス管理
- (int)startAudioCapture:(AoqAudioCaptureConfig * _Nonnull)config;
- (int)stopAudioCapture;
- (int)muteAudioCapture:(BOOL)mute;
- (int)startAudioPlayer:(AoqAudioPlaybackConfig * _Nonnull)config;
- (int)stopAudioPlayer;
- (int)pauseAudioPlayer:(NSInteger)fadeMs;
- (int)resumeAudioPlayer:(NSInteger)fadeMs;
- (int)interruptAudioPlayer:(AoqTrackType)trackType fadeMs:(NSInteger)fadeMs;
- (int)enableSpeakerphone:(BOOL)enable;
- (BOOL)isSpeakerphoneEnabled;
- (int)setAudioSessionRestriction:(int)restriction;
オーディオコーデック設定
- (int)setAudioEncoderConfig:(AoqAudioCodecConfig * _Nonnull)config;
- (int)setAudioDecoderConfig:(AoqAudioCodecConfig * _Nonnull)config;
ビデオデバイス管理
- (int)startVideoCapture:(AoqVideoCaptureConfig * _Nonnull)config;
- (int)stopVideoCapture;
- (int)switchCamera:(AoqCameraDirection)direction;
- (int)setLocalView:(AoqTrackType)trackType canvas:(AoqVideoCanvas * _Nullable)canvas;
- (int)setRemoteView:(AoqTrackType)trackType canvas:(AoqVideoCanvas * _Nullable)canvas;
setLocalView と setRemoteView の trackType パラメーターには、AoqTrackTypeVideo を指定します。
ビデオエンコーディングと外部入力
- (int)setVideoEncoderConfig:(AoqVideoCodecConfig * _Nonnull)config;
- (int)pushExternalVideoCapturedFrame:(AoqTrackType)trackType frame:(AoqVideoFrame * _Nonnull)frame;
- (int)pushExternalVideoEncodedFrame:(AoqTrackType)trackType frame:(AoqVideoEncodedFrame * _Nonnull)frame;
trackType パラメーターには、AoqTrackTypeVideo を指定します。
メディアストリームコントロール
- (int)enableSendMediaStream:(AoqTrackType)trackType enable:(BOOL)enable;
trackType には、AoqTrackTypeAudio または AoqTrackTypeVideo を指定できます。
オーディオファイル再生
- (int)startAudioFile:(NSString * _Nonnull)fileId config:(AoqAudioFileMixConfig * _Nonnull)config;
- (int)stopAudioFile:(NSString * _Nonnull)fileId;
- (int)pauseAudioFile:(NSString * _Nonnull)fileId;
- (int)resumeAudioFile:(NSString * _Nonnull)fileId;
- (long long)getAudioFileDuration:(NSString * _Nonnull)fileId;
- (long long)getAudioFileCurrentPosition:(NSString * _Nonnull)fileId;
- (int)setAudioFilePositionMillis:(NSString * _Nonnull)fileId positionMillis:(long long)positionMillis;
- (int)setAudioFileVolume:(NSString * _Nonnull)fileId type:(AoqAudioStreamDirection)type volume:(NSInteger)volume;
- (int)getAudioFileVolume:(NSString * _Nonnull)fileId type:(AoqAudioStreamDirection)type;
外部オーディオストリーム
- (int)addAudioExternalStream:(NSString * _Nonnull)streamId config:(AoqAudioExternalStreamConfig * _Nonnull)config;
- (int)pushAudioExternalStreamData:(NSString * _Nonnull)streamId data:(AoqAudioFrameData * _Nonnull)data;
- (int)setAudioExternalStreamVolume:(NSString * _Nonnull)streamId type:(AoqAudioStreamDirection)type volume:(NSInteger)volume;
- (int)getAudioExternalStreamVolume:(NSString * _Nonnull)streamId type:(AoqAudioStreamDirection)type;
- (void)clearAudioExternalStreamBuffer:(NSString * _Nonnull)streamId fadeoutMs:(NSInteger)fadeoutMs;
- (int)removeAudioExternalStream:(NSString * _Nonnull)streamId;
リアルタイムメッセージング
- (int)sendDataMsg:(AoqDataMsg * _Nonnull)msg;
オーディオフレームコールバック
- (int)setAudioFrameObserver:(id<AoqAudioFrameDelegate> _Nullable)delegate;
- (int)enableAudioFrameObserver:(BOOL)enabled audioSource:(AoqAudioSource)audioSource config:(AoqAudioObserverConfig * _Nonnull)config;
ビデオフレームコールバック
- (int)setVideoFrameObserver:(id<AoqVideoFrameDelegate> _Nullable)delegate;
- (int)enableVideoFrameObserver:(BOOL)enabled videoSource:(AoqVideoSource)videoSource config:(AoqVideoObserverConfig * _Nonnull)config;
AoqEngineDelegate コールバック
すべてのコールバックメソッドは @required です。
- (void)onError:(NSInteger)code message:(NSString * _Nonnull)message;
- (void)onWarning:(NSInteger)code message:(NSString * _Nonnull)message;
- (void)onConnectionStatusChange:(AoqConnectionStatus)status;
- (void)onStats:(AoqStats * _Nonnull)stats;
- (void)onAudioDeviceStateChanged:(AoqAudioDeviceState * _Nonnull)state;
- (void)onAudioDeviceRouteChanged:(NSInteger)routeType;
- (void)onAudioDeviceInterrupted:(BOOL)interrupt;
- (void)onAudioFileState:(AoqAudioFileState * _Nonnull)state;
- (void)onVideoDeviceStateChanged:(AoqVideoDeviceState * _Nonnull)state;
- (void)onDataMsg:(AoqDataMsg * _Nonnull)msg;
AoqAudioFrameDelegate (@optional)
- (void)onCapturedAudioFrame:(AoqAudioFrameData * _Nonnull)frame;
- (void)onProcessCapturedAudioFrame:(AoqAudioFrameData * _Nonnull)frame;
- (void)onPublishAudioFrame:(AoqTrackType)trackType frame:(AoqAudioFrameData * _Nonnull)frame;
- (void)onPlaybackAudioFrame:(AoqAudioFrameData * _Nonnull)frame;
AoqVideoFrameDelegate (@optional)
- (BOOL)onCapturedVideoFrame:(AoqVideoFrame * _Nonnull)frame;
- (BOOL)onPreEncodeVideoFrame:(AoqTrackType)trackType frame:(AoqVideoFrame * _Nonnull)frame;
- (BOOL)onRemoteVideoFrame:(AoqTrackType)trackType frame:(AoqVideoFrame * _Nonnull)frame;
データ型と列挙型
AoqErrorCode
列挙値 | 値 | 説明 |
|---|---|---|
AoqErrorCodeOK | 0 | 成功 |
AoqErrorCodeParamInvalid | 1 | 無効なパラメーター |
AoqErrorCodeStateInvalid | 2 | 無効な状態 |
AoqErrorCodeUnSupport | 3 | サポートされていない操作 |
AoqErrorCodeAudio | 100 | オーディオの一般エラー |
AoqErrorCodeAudioExternalBufferFull | 110 | 外部オーディオバッファーがフルです。 |
AoqErrorCodeAudioDevice | 120 | オーディオデバイスの一般エラー |
AoqErrorCodeAudioDeviceRecordingAuthFailed | 121 | 録音権限がありません。 |
AoqErrorCodeAudioDeviceRecordingOccupied | 122 | 録音デバイスが使用中です。 |
AoqErrorCodeAudioDeviceRecordingBackgroundStart | 123 | バックグラウンドでの録音開始に失敗しました。 |
AoqErrorCodeAudioDeviceRecordingStartFail | 124 | 録音の開始に失敗しました。 |
AoqErrorCodeAudioDevicePlayoutOccupied | 125 | 再生デバイスが使用中です。 |
AoqErrorCodeAudioDevicePlayoutBackgroundStart | 126 | バックグラウンドでの再生開始に失敗しました。 |
AoqErrorCodeAudioDevicePlayoutStartFail | 127 | 再生の開始に失敗しました。 |
AoqErrorCodeAudioDeviceEarpieceRequiresVoipMode | 128 | イヤピースには VoIP モードが必要です。 |
AoqErrorCodeVideo | 200 | ビデオの一般エラー |
AoqErrorCodeVideoExternalBufferFull | 210 | 外部ビデオバッファーがフルです。 |
AoqErrorCodeVideoExternalCaptureNotEnabled | 211 | 外部ビデオキャプチャが有効になっていません。 |
AoqErrorCodeVideoExternalEncoderNotEnabled | 212 | 外部ビデオエンコーダーが有効になっていません。 |
AoqErrorCodeVideoDevice | 220 | ビデオデバイスの一般エラー |
AoqErrorCodeVideoDeviceCameraOpenFail | 221 | カメラの起動に失敗しました。 |
AoqErrorCodeVideoDeviceCameraAuthFailed | 222 | カメラの権限がありません。 |
AoqErrorCodeVideoDeviceCameraOccupied | 223 | カメラが使用中です。 |
AoqErrorCodeVideoDeviceCameraRunningError | 224 | カメラのランタイムエラー |
AoqErrorCodeVideoCodec | 230 | ビデオコーデックの一般エラー |
AoqErrorCodeVideoCodecEncoderInitFail | 231 | ビデオエンコーダーの初期化に失敗しました。 |
AoqErrorCodeVideoRender | 240 | ビデオレンダリングの一般エラー |
AoqErrorCodeVideoRenderCreateFail | 241 | ビデオレンダラーの作成に失敗しました。 |
AoqErrorCodeVideoRenderDrawError | 242 | ビデオレンダリングの描画エラー |
AoqTrackType
列挙値 | 値 | 説明 |
|---|---|---|
AoqTrackTypeAudio | 0 | オーディオトラック |
AoqTrackTypeVideo | 1 | ビデオトラック |
AoqTrackTypeData | 2 | データメッセージングトラック |
AoqConnectConfig
フィールド | 型 | 説明 |
|---|---|---|
token | NSString * | 認証トークン |
sid | NSString * | セッション ID |
certFingerprint | NSString * | サーバー証明書のフィンガープリント |
relayEndpoints | NSArray<AoqRelayEndpoint *> * | リレーエンドポイントのリスト |
workspaceIdHash | NSString * | ワークスペース ID のハッシュ |
publishTracks | NSArray<AoqTrackParam *> * | パブリッシュするローカルトラック |
subscribeTracks | NSArray<AoqTrackParam *> * | サブスクライブするリモートトラック |
AoqAudioPlaybackConfig
フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
isVoipMode | BOOL | NO | YES:VoIP モード (ハードウェア AEC) を有効にします。モバイル端末に適用されます。 |
isDefaultSpeaker | BOOL | YES | YES:スピーカーから出力します。NO:イヤピースから出力します。 |
isExternal | BOOL | NO | YES:外部オーディオ出力を使用します。 |
channel | NSInteger | 1 | チャネル数:1 または 2 |
統計のデータ型
AoqStats
フィールド | 型 | 説明 |
|---|---|---|
audioPublishStats | NSArray<AoqAudioPublishStats *> * | オーディオのパブリッシュ統計 |
videoPublishStats | NSArray<AoqVideoPublishStats *> * | ビデオのパブリッシュ統計 |
dataMsgPublishStats | NSArray<AoqDataMsgPublishStats *> * | データメッセージのパブリッシュ統計 |
audioSubscribeStats | NSArray<AoqAudioSubscribeStats *> * | オーディオのサブスクライブ統計 |
videoSubscribeStats | NSArray<AoqVideoSubscribeStats *> * | ビデオのサブスクライブ統計 |
dataMsgSubscribeStats | NSArray<AoqDataMsgSubscribeStats *> * | データメッセージのサブスクライブ統計 |
networkStats | AoqNetworkStats * | ネットワーク統計 |
AoqNetworkStats
フィールド | 型 | 説明 |
|---|---|---|
sendBitrate | NSUInteger | 送信ビットレート (bps) |
sendBytes | NSUInteger | 送信した累積バイト数 |
recvBitrate | NSUInteger | 受信ビットレート (bps) |
recvBytes | NSUInteger | 受信した累積バイト数 |
loss | NSUInteger | パケット損失率 |
rtt | NSUInteger | ラウンドトリップタイム (ms) |
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
Android SDK との主な違い
違い | iOS | Android |
|---|---|---|
コールバックパターン |
| 抽象クラスリスナー |
AVAudioSession の制御 |
| 該当なし |
音声フォーカス コールバック | なし (代わりに |
|
ビデオピクセルフォーマット | CVPixelBuffer のゼロコピーをサポート | TextureOES / Texture2D をサポート |
ビデオレンダリングビュー | UIView | SurfaceView / TextureView |
Bluetooth モード設定 |
|
|
ビデオフレームコールバックのライトバック | I420 / CVPixelBuffer | I420 |