すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Model Studio:共通のビデオ機能

最終更新日:Sep 02, 2026

AOQ Client SDK は、ビデオキャプチャ、レンダリング、コーデック設定、フレームデータコールバック、外部ビデオ入力を含む包括的なビデオ機能を提供します。このドキュメントでは、Android (Java)、iOS (Objective-C)、HarmonyOS (ArkTS) に共通するビデオ機能を紹介します。

1. ビデオキャプチャ

1.1 概要

ビデオキャプチャは、デバイスのカメラを起動し、リアルタイムのビデオフレームを SDK のエンコーディングパイプラインに供給します。SDK は 2 つのキャプチャモードをサポートしています。

  • 内部キャプチャ (デフォルト):SDK がカメラの起動、フレームのキャプチャ、終了を自動的に管理します。前面カメラと背面カメラの切り替えをサポートしています。
  • 外部キャプチャ:アプリケーションがカメラまたは他のビデオソースを管理します。キャプチャされたフレームは pushExternalVideoCapturedFrame を介して SDK に供給されます。

1.2 キャプチャ設定パラメーター

パラメーター

タイプ

デフォルト

説明

width

int

1280

キャプチャの幅 (ピクセル)。外部キャプチャモードでは使用されません。

height

int

720

キャプチャの高さ (ピクセル)。外部キャプチャモードでは使用されません。

fps

int

15

キャプチャのフレームレート。外部キャプチャモードでは、フレームレートはフレームがプッシュされる速度によって決まります。

isExternal

bool

false

外部キャプチャモードを使用するかどうか。

cameraDirection

AoqCameraDirection

Front (0)

カメラの向き。外部キャプチャモードでは使用されません。

1.3 カメラの向きの列挙型

列挙値

数値

説明

AoqCameraDirectionFront

0

前面カメラ

AoqCameraDirectionBack

1

背面カメラ

1.4 API リファレンス

関数

Android

iOS

HarmonyOS

キャプチャの開始

startVideoCapture(config)

startVideoCapture:

startVideoCapture(config)

キャプチャの停止

stopVideoCapture()

stopVideoCapture

stopVideoCapture()

カメラの切り替え

switchCamera(direction)

switchCamera:

switchCamera(direction)

1.5 例

Android
AoqVideoCaptureConfig config = new AoqVideoCaptureConfig();
config.width = 1280;
config.height = 720;
config.fps = 15;
config.cameraDirection = AoqCameraDirection.AoqCameraDirectionFront;
engine.startVideoCapture(config);
iOS
AoqVideoCaptureConfig *config = [[AoqVideoCaptureConfig alloc] init];
config.width = 1280;
config.height = 720;
config.fps = 15;
config.cameraDirection = AoqCameraDirectionFront;
[engine startVideoCapture:config];
HarmonyOS
let config: AoqVideoCaptureConfig = {
  width: 1280,
  height: 720,
  fps: 15,
  cameraDirection: AoqCameraDirection.AoqCameraDirectionFront
};
engine.startVideoCapture(config);

2. ビデオレンダリング

2.1 概要

ビデオレンダリングは、ローカルでキャプチャした、またはリモートで受信したビデオフレームを画面に表示します。SDK は、ローカルプレビューウィンドウとリモートレンダリングウィンドウの設定をサポートしています。trackType を使用して、ビデオストリーム (Video) と画面共有ストリーム (Screen) を区別します。

2.2 レンダリングモード

Enum 値

数値

説明

AoqRenderModeAuto

0

自動モード

AoqRenderModeStretch

1

ストレッチフィル。画像が変形する場合があります。

AoqRenderModeFill

2

フィット (レターボックス)。画像全体が表示されます。

AoqRenderModeCrop

3

クロップモード。画像の一部が切り取られる場合があります。

2.3 Canvas 設定

パラメーター

タイプ

デフォルト

説明

view

Platform view

null

レンダリングビュー。Android:SurfaceView または TextureView。iOS:UIView。HarmonyOS:XComponent。

renderMode

AoqRenderMode

Auto (0)

レンダリング表示モード

2.4 API リファレンス

関数

Android

iOS

HarmonyOS

ローカルプレビューの設定

setLocalView(trackType, canvas)

setLocalView:trackType:canvas:

setLocalView(trackType, canvas)

リモートビューの設定

setRemoteView(uid, trackType, canvas)

setRemoteView:uid:trackType:canvas:

setRemoteView(uid, trackType, canvas)

注記プラットフォームによる違い:Android は、レンダリングコンテナとして SurfaceView または TextureView を使用します。iOS は UIView (AoqRenderView で内部的にラップされ、Metal によるアクセラレーションが使用されます) を使用します。HarmonyOS は XComponent (ネイティブレンダリング用に AoqXComponentController で管理されます) を使用します。

3. ビデオコーデック設定

3.1 概要

エンコード形式、解像度、フレームレート、ビットレート、キーフレーム間隔、ミラーリング、向きなどのビデオエンコーディングパラメーターを設定します。trackType を使用して、ビデオトラックと画面共有トラックに異なるエンコーディング設定を適用します。

3.2 エンコード設定パラメーター

パラメーター

タイプ

デフォルト

説明

trackType

AoqTrackType

AoqTrackTypeVideo

トラックタイプ

codecType

AoqEncoderType

AoqEncoderTypeVideoH264

エンコード形式

width

int

720

エンコード幅

height

int

1280

エンコード高さ

fps

int

5

エンコードフレームレート

bitrate

int

500000

ターゲットビットレート (bps)

minBitrate

int

128000

最小ビットレート (bps)

keyframeInterval

int

2

キーフレーム間隔 (秒)

mirrorMode

AoqMirrorMode

AoqMirrorModeDisabled

ミラーモード

orientationMode

AoqOrientationMode

AoqOrientationModeAuto

向きモード

isExternal

bool

false

外部エンコードモード。true の場合、アプリケーションはエンコード済みのフレームをプッシュします。

3.3 エンコード形式の列挙型

列挙値

数値

説明

AoqEncoderTypeVideoH264

3

H.264 エンコーディング

AoqEncoderTypeVideoJpeg

4

JPEG エンコーディング (エンコード済みの外部フレーム用)

3.4 ミラーモード

列挙値

数値

説明

AoqMirrorModeDisabled

0

ミラーリング無効

AoqMirrorModeEnabled

1

ミラーリング有効

3.5 向きモード

列挙値

数値

説明

AoqOrientationModeAuto

0

自動

AoqOrientationModePortrait

1

縦向き

AoqOrientationModeLandscape

2

横向き

3.6 関連 API

関数

Android

iOS

HarmonyOS

エンコード設定の指定

setVideoEncoderConfig (config)

setVideoEncoderConfig:

setVideoEncoderConfig (config)

4. 外部ビデオフレーム入力

4.1 概要

外部ビデオフレーム入力を使用すると、アプリケーションはカスタムビデオフレームデータを SDK にプッシュし、外部キャプチャまたは外部エンコードのシナリオに対応できます。2 つのプッシュ方法に対応しています:

  • RAW フレームのプッシュ:エンコードされていないピクセルデータ (I420、NV12、NV21、BGRA、RGBA などの形式) を SDK にプッシュします。SDK はデータをエンコードします。
  • エンコード済みフレームのプッシュ:エンコード済みのデータ (例:JPEG) を SDK に直接プッシュします。SDK は再エンコードせずにパッケージ化して送信します。

ルーティングは trackType によって制御されます。AoqTrackTypeVideo はビデオキャプチャトラックにルーティングされ、AoqTrackTypeScreen は画面共有トラックにルーティングされます。

4.2 ピクセル形式の列挙型

列挙値

数値

説明

対応プラットフォーム

AoqVideoPixelFormatI420

1

I420 トライプレーナ

すべてのプラットフォーム

AoqVideoPixelFormatNV12

2

NV12 バイプレーナ

すべてのプラットフォーム

AoqVideoPixelFormatNV21

3

NV21 バイプレーナ

すべてのプラットフォーム

AoqVideoPixelFormatBGRA

4

BGRA パック

すべてのプラットフォーム

AoqVideoPixelFormatRGBA

5

RGBA パック

すべてのプラットフォーム

AoqVideoPixelFormatCVPixelBuffer

6

Apple ゼロコピー

iOS のみ

AoqVideoPixelFormatTextureOES

7

OES テクスチャ

Android のみ

AoqVideoPixelFormatTexture2D

8

2D テクスチャ

Android のみ

4.3 RAW ビデオフレームのデータ構造 (AoqVideoFrame)

フィールド

タイプ

説明

format

AoqVideoPixelFormat

ピクセル形式

width

int

幅 (ピクセル単位)

height

int

高さ (ピクセル単位)

data

byte[] / ArrayBuffer

パック形式のデータ (NV12/NV21/BGRA/RGBA)

dataY / dataU / dataV

byte[] / ArrayBuffer

I420 トライプレーナデータ

strideY / strideU / strideV

int

I420 トライプレーナのストライド

textureId

int

テクスチャ ID (Android の TextureOES/Texture2D で有効)

transformMatrix

float[16]

4×4 テクスチャ変換行列 (Android)

eglContext

EGLContext

共有 EGL コンテキスト (Android)

pixelBuffer

CVPixelBufferRef

Apple ゼロコピー (iOS)

timeStamp

long

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

4.4 エンコード済みビデオフレームのデータ構造 (AoqVideoEncodedFrame)

フィールド

タイプ

デフォルト

説明

codec

AoqVideoCodecType

JPEG (0)

エンコーディング形式

data

byte[] / ArrayBuffer

-

エンコード済みデータ

width

int

-

幅 (ピクセル単位)

height

int

-

高さ (ピクセル単位)

timeStamp

long

0

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

4.5 API リファレンス

関数

Android

iOS

HarmonyOS

RAW フレームのプッシュ

pushExternalVideoCapturedFrame(trackType, frame)

pushExternalVideoCapturedFrame:frame:

pushExternalVideoCapturedFrame(trackType, frame)

エンコード済みフレームのプッシュ

pushExternalVideoEncodedFrame(trackType, frame)

pushExternalVideoEncodedFrame:frame:

pushExternalVideoEncodedFrame(trackType, frame)

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

5.1 概要

ビデオフレームコールバックを使用すると、ビデオパイプラインの異なるポイントで RAW フレームデータを取得し、ビデオ分析、カスタム処理、録画などのシナリオで使用できます。読み取り専用モードと読み書きモードの両方をサポートしています。読み書きモードでは、フレームデータを変更して SDK に書き戻すことができます。

5.2 対応データソース位置

データソース

列挙値

説明

Captured

0

キャプチャ後、前処理前のビデオデータ

PreEncode

1

エンコーディング前、前処理後のビデオデータ

Remote

2

デコーディング後、レンダリング前のリモートビデオデータ

5.3 コールバック設定パラメーター

パラメーター

タイプ

デフォルト

説明

format

AoqVideoPixelFormat

I420 (1)

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

alignment

AoqVideoObserverAlignment

Default (0)

幅アラインメントポリシー

mode

AoqVideoObserverMode

ReadOnly (0)

読み取り専用 (0) または読み書き (1) モード

mirrorApplied

bool

false

コールバックデータにミラーリングを適用するかどうか

5.4 幅アラインメント列挙値

列挙値

数値

説明

AoqVideoObserverAlignmentDefault

0

デフォルトアラインメント

AoqVideoObserverAlignmentEven

1

2 バイトアラインメント

AoqVideoObserverAlignment4

2

4 バイトアラインメント

AoqVideoObserverAlignment8

3

8 バイトアラインメント

AoqVideoObserverAlignment16

4

16 バイトアラインメント

5.5 使用手順

  1. オブザーバーを登録setVideoFrameObserver を呼び出して、ビデオフレームコールバックリスナーを設定します。
  2. データソースを有効化enableVideoFrameObserver を呼び出して、データソース 位置を選択し、コールバックを開始します。
  3. コールバックデータを処理: コールバック内でフレームデータを取得します。フレームデータはコールバック中のみ有効です。非同期に使用する場合はコピーしてください。

5.6 API リファレンス

機能

Android

iOS

HarmonyOS

オブザーバーを登録

setVideoFrameObserver(listener)

setVideoFrameObserver:

setVideoFrameObserver(observer)

コールバックを有効化

enableVideoFrameObserver(enabled, source, config)

enableVideoFrameObserver:videoSource:config:

enableVideoFrameObserver(enabled, source, config)

5.7 コールバックメソッド

コールバック

Android

iOS

HarmonyOS

キャプチャデータ

onCapturedVideoFrame(frame)

onCapturedVideoFrame:

onCapturedVideoFrame(frame)

エンコード前データ

onPreEncodeVideoFrame(trackType, frame)

onPreEncodeVideoFrame:frame:

onPreEncodeVideoFrame(trackType, frame)

リモートデータ

onRemoteVideoFrame(trackType, frame)

onRemoteVideoFrame:frame:

onRemoteVideoFrame(trackType, frame)

注記コールバックから true または YES を返すと、データが変更されたものとして SDK に書き戻されます。この動作は、I420 形式の読み書きモードでのみ適用されます。

7. メディアストリームの送信制御

7.1 概要

ローカルメディアストリームの送信を制御します。trackType を使用して、特定のトラック (オーディオ、ビデオ、またはデータ) を対象とします。送信が無効の場合、キャプチャとエンコーディングは継続しますが、データはリモートエンドには送信されません。

7.2 API リファレンス

関数

Android

iOS

HarmonyOS

ストリーム送信の制御

enableSendMediaStream(trackType, enable)

enableSendMediaStream:enable:

enableSendMediaStream(trackType, enable)

7.3 トラックタイプの列挙型

列挙値

数値

説明

AoqTrackTypeAudio

0

オーディオトラック

AoqTrackTypeVideo

1

ビデオトラック

AoqTrackTypeData

2

データトラック

8. ビデオデバイス状態のモニタリング

8.1 概要

SDK は自動的にカメラの状態変化をモニタリングし、onVideoDeviceStateChanged コールバックを介してアプリケーション層に通知します。

8.2 デバイス状態コード

状態コード

説明

AoqVideoDeviceNone

0

初期状態

AoqVideoDeviceCaptureStarting

1

キャプチャ開始中

AoqVideoDeviceCaptureStarted

2

キャプチャ開始済み

AoqVideoDeviceCaptureStopping

3

キャプチャ停止中

AoqVideoDeviceCaptureStopped

4

キャプチャ停止済み

AoqVideoDeviceCaptureFail

5

キャプチャ失敗

8.3 コールバックリファレンス

コールバック

Android

iOS

HarmonyOS

デバイス状態の変更

onVideoDeviceStateChanged(state)

onVideoDeviceStateChanged:

onVideoDeviceStateChanged(state)

9. ビデオのエラーコードと警告コード

9.1 ビデオのエラーコード

エラーコード

説明

AoqErrorCodeVideo

200

全般的なビデオエラー

VideoExternalBufferFull

210

ビデオ外部バッファーが満杯

VideoDevice

220

全般的なビデオデバイスのエラー

CameraOpenFail

221

カメラのオープンに失敗

CameraAuthFailed

222

カメラの権限が拒否されました

CameraOccupied

223

カメラは他のプロセスで使用中です

CameraRunningError

224

カメラの実行時エラー

VideoCodec

230

全般的なビデオコーデックのエラー

EncoderInitFail

231

エンコーダーの初期化に失敗

VideoRender

240

全般的なビデオレンダリングのエラー

RenderCreateFail

241

レンダラーの作成に失敗

RenderDrawError

242

レンダリングの描画エラー

Screen

300

全般的な画面共有のエラー

注記Android の追加エラーコード: ScreenPermissionDenied(310) — 画面共有の権限が拒否されました。 ScreenForegroundServiceFailed(311) — フォアグラウンド サービス の開始に失敗しました。

9.2 ビデオの警告コード

警告コード

説明

AoqWCVideo

200

全般的なビデオの警告

CameraEnumerateError

201

カメラの列挙エラー

EncoderSwitched

202

エンコーダーの切り替え警告

RenderDowngrade

203

レンダラーのダウングレード警告

付録:ビデオ API メソッド一覧

カテゴリ

メソッド

説明

キャプチャコントロール

startVideoCapture

ビデオキャプチャデバイスを開きます

キャプチャコントロール

stopVideoCapture

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

キャプチャコントロール

switchCamera

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

レンダリングコントロール

setLocalView

ローカルプレビューウィンドウを設定します

レンダリングコントロール

setRemoteView

リモートレンダリングウィンドウを設定します

コーデック

setVideoEncoderConfig

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

外部入力

pushExternalVideoCapturedFrame

RAW ビデオフレームをプッシュします

外部入力

pushExternalVideoEncodedFrame

エンコード済みビデオフレームをプッシュします

画面共有

startScreenCapture

画面キャプチャを開始します

画面共有

stopScreenCapture

画面キャプチャを停止します

ストリームコントロール

enableSendMediaStream

メディアストリームの送信を制御します

フレームコールバック

setVideoFrameObserver

ビデオフレームオブザーバーを登録します

フレームコールバック

enableVideoFrameObserver

ビデオフレームコールバックを有効化または無効化します