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

ApsaraVideo VOD:複数のビデオソースのサポート

最終更新日:Sep 11, 2026

このトピックでは、AliPlayerKit がサポートするビデオソースの種類と、その使用方法について説明します。

基本概念

ビデオソース

ビデオソースとは、動画再生のデータソースです。動画の取得方法と認可方式を定義します。

AliPlayerKit は、次の 3 種類のビデオソースをサポートしています:

ビデオソースのタイプ

認可方式

ユースケース

VidAuth

VID + PlayAuth

ほとんどの本番環境で 推奨 されます

VidSts

VID + STS 一時的な認証情報

セキュリティ要件が高いシナリオ

URL

ダイレクト URL

パブリックリソース、テスト、デモ

ビデオソースタイプの選択方法

ビジネスシナリオとセキュリティ要件に基づいて、ビデオソースタイプを選択します:

要件

推奨タイプ

説明

認可が必要

VidAuth (推奨)

シンプルで組み込みやすい認可

高いセキュリティ要件

VidSts

一時的な認証情報を使用して、きめ細かなアクセス制御をサポートします

パブリックな動画リソース

URL

認可は不要で、簡単に使用できます

機能

課題

  • ビデオソースの種類ごとに設定方法が統一されていません。

  • 認可のための認証情報の管理が複雑です。

  • ビデオソースに対する統一された検証メカニズムがありません。

  • さまざまな種類のビデオリソースを区別することが困難です。

コアバリュー

機能

説明

統一された抽象化

すべてのビデオソースタイプは、VideoSource ベースクラスを継承し、統一されたインターフェースを提供します。

ファクトリによる作成

The VideoSourceFactory simplifies the creation process and automatically validates parameters.

型安全性

@SourceType アノテーションは型安全性を保証します。

設定の検証

isValid() メソッドは、設定が有効かどうかを検証します。

コア機能

機能

説明

VidAuth 再生

ビデオ ID (VID) と PlayAuth を使用して再生を認可します。

VidSts 再生

VID と STS 一時認証情報を使用して再生を認可します。

URL 再生

URL を直接使用してビデオを再生します。

パラメーターの検証

作成時に必須パラメーターを自動的に検証します。

一意の識別子

各ビデオソースには一意の MediaId があり、これによりプールからプレーヤーインスタンスを再利用できます。

ビデオソースのタイプ

VidAuth モード (推奨)

ビデオ ID (VID) と PlayAuth を使用して再生を認可します。

ユースケース:

  • 認可が必要なビデオリソース。

  • ほとんどの本番環境におけるビデオ再生。

  • シンプルかつ安全な認可方式が必要なシナリオ。

機能:

  • シンプルで統合が容易な認可。

  • 基本的なセキュリティを提供します。

  • ほとんどのビジネスシナリオで推奨します。

パラメーター:

パラメーター

タイプ

必須

説明

vid

String

はい

ビデオ ID。

playAuth

String

はい

PlayAuth。

例:

// VidAuth タイプのビデオソースを作成
VideoSource.VidAuthSource videoSource = VideoSourceFactory.createVidAuthSource(
    "your_video_id",      // ビデオ ID
    "your_play_auth"      // PlayAuth
);

// プレーヤーモデルを作成
AliPlayerModel model = new AliPlayerModel.Builder()
    .videoSource(videoSource)
    .build(); 

VidSts モード

ビデオ ID (VID) と Alibaba Cloud Security Token Service (STS) のトークンを使用して再生を認可し、強化されたセキュリティとアクセス制御を提供します。

ユースケース:

  • 一時的な認証情報が必要なシナリオ。

  • 高いセキュリティ要件を持つビデオリソース。

  • きめ細かなアクセス制御が必要なシナリオ。

機能:

  • 一時的な認証情報を使用し、高いセキュリティを実現します。

  • きめ細かなアクセス制御をサポートします。

  • 高セキュリティシナリオに適しています。

パラメーター:

パラメーター

タイプ

必須

説明

vid

String

はい

ビデオ ID。

accessKeyId

String

はい

アクセスキー ID。

accessKeySecret

String

はい

シークレットアクセスキー。

securityToken

String

はい

セキュリティトークン。

region

String

いいえ

リージョン。

例:

// VidSts タイプのビデオソースを作成
VideoSource.VidStsSource videoSource = VideoSourceFactory.createVidStsSource(
    "your_video_id",              // ビデオ ID
    "your_access_key_id",         // アクセスキー ID
    "your_access_key_secret",     // シークレットアクセスキー
    "your_security_token",        // セキュリティトークン
    "cn-shanghai"                 // リージョン (オプション)
);

// プレーヤーモデルを作成
AliPlayerModel model = new AliPlayerModel.Builder()
    .videoSource(videoSource)
    .build();   

URL モード

直接 URL を使用してビデオを再生します。このモードは、公開されているビデオリソースに適しています。

ユースケース:

  • 認可が不要な公開ビデオリソース。

  • テストおよびデモシナリオ。

  • シンプルなビデオ再生要件。

機能:

  • 使用が簡単で、ビデオ URL のみが必要です。

  • 追加の認可は不要です。

  • セキュリティが低く、機密性の高いコンテンツには適していません。

パラメーター:

パラメーター

タイプ

必須

説明

url

String

はい

ビデオの URL。

例:

// URL タイプのビデオソースを作成
VideoSource.UrlSource videoSource = VideoSourceFactory.createUrlSource(
    "https://example.com/video.mp4"
);

// プレーヤーモデルを作成
AliPlayerModel model = new AliPlayerModel.Builder()
    .videoSource(videoSource)
    .build();

基本的な使用法

基本的な再生フロー

// 1. ビデオソースを作成します (VidAuth モードを推奨します)
VideoSource.VidAuthSource videoSource = VideoSourceFactory.createVidAuthSource(
    "your_video_id",
    "your_play_auth"
);

// 2. プレーヤーモデルを作成します
AliPlayerModel model = new AliPlayerModel.Builder()
    .videoSource(videoSource)
    .coverUrl("https://example.com/cover.jpg")
    .videoTitle("Sample Video")
    .sceneType(SceneType.VOD)
    .autoPlay(true)
    .build();

// 3. コントローラーを作成します
AliPlayerController controller = new AliPlayerController(this);

// 4. コントローラーを構成し、プレーヤービューにアタッチします
controller.configure(model);
playerView.attach(controller);   

ビデオソースの切り替え

// 動画を切り替える前に、現在のコントローラーをデタッチします
playerView.detach();

// 新しいビデオソースを作成します
VideoSource.VidAuthSource newSource = VideoSourceFactory.createVidAuthSource(
    "new_video_id",
    "new_play_auth"
);

// 新しいプレーヤーモデルを作成します
AliPlayerModel newModel = new AliPlayerModel.Builder()
    .videoSource(newSource)
    .build();

// 新しいコントローラーを作成してアタッチします
AliPlayerController newController = new AliPlayerController(this);
playerView.attach(newController, newModel);  

高度な使用法

ビデオソースの検証

プレーヤーを構成する前に、isValid() メソッドを呼び出して、ビデオソースの設定を検証できます:

VideoSource.VidAuthSource videoSource = VideoSourceFactory.createVidAuthSource(vid, playAuth);

if (videoSource.isValid()) {
    // 設定は有効です。続行できます。
    AliPlayerModel model = new AliPlayerModel.Builder()
        .videoSource(videoSource)
        .build();
    playerView.attach(controller, model);
} else {
    // 設定は無効です。パラメーターを確認してください。
    Log.e(TAG, "Invalid video source configuration");
}   

サーバーからの認可の取得

機密データをハードコーディングしないように、サーバーから認可情報を取得します:

// 推奨:サーバーから PlayAuth を取得します
public void playVideo(String videoId) {
    // サーバーから PlayAuth をリクエストします
    apiService.getPlayAuth(videoId, new Callback<PlayAuthResponse>() {
        @Override
        public void onSuccess(PlayAuthResponse response) {
            VideoSource.VidAuthSource videoSource = VideoSourceFactory.createVidAuthSource(
                videoId,
                response.getPlayAuth()
            );
            // 再生を開始します...
        }

        @Override
        public void onError(Exception e) {
            Log.e(TAG, "Failed to get playAuth", e);
        }
    });
}   

STS トークンの有効期限切れの処理

VidSts モードでは、セキュリティトークンの有効期限切れを処理します:

// トークンがまもなく失効するかどうかを確認します
if (isTokenExpiringSoon(securityToken)) {
    // トークンを更新します
    refreshSecurityToken(new TokenCallback() {
        @Override
        public void onTokenRefreshed(String newToken) {
            // 新しいトークンを使用してビデオソースを再作成します
            VideoSource.VidStsSource videoSource = VideoSourceFactory.createVidStsSource(
                vid, accessKeyId, accessKeySecret, newToken, region
            );
            // 再生を継続します...
        }
    });
}

ベストプラクティス

ビデオソースタイプの選択

シナリオ

推奨タイプ

理由

一般的なビジネスシナリオ

VidAuth (推奨)

十分なセキュリティを備えたシンプルな認可。

高セキュリティが求められるシナリオ

VidSts

一時的な認証情報を使用し、きめ細かなアクセス制御をサポートします。

パブリックリソース

URL

認可は不要で、簡単に使用できます。

セキュリティの推奨事項

推奨事項

説明

機密情報をハードコードしない

クライアントで playAuth や accessKeySecret などの機密情報をハードコードすることを避けてください。

サーバーから認可を取得する

サーバーサイド API から認可情報を取得し、クライアントに渡してください。

認証情報を速やかに更新する

VidSts 用の STS トークンは失効します。再生の失敗を避けるため、速やかに更新してください。

HTTPS を使用する

HTTPS を使用して転送中のデータを保護してください。

エラー処理

ビデオソースを作成する際は、エラーを処理してください:

try {
    VideoSource.VidAuthSource videoSource = VideoSourceFactory.createVidAuthSource(vid, playAuth);

    if (!videoSource.isValid()) {
        // 無効な設定を処理
        showError("Invalid video source configuration");
        return;
    }

    // ビデオソースを使用
    playVideo(videoSource);

} catch (IllegalArgumentException e) {
    // パラメーターエラーを処理
    Log.e(TAG, "Invalid video source parameters", e);
    showError("Parameter error: " + e.getMessage());
}   

コード例

プロジェクト playerkit-examples/example-video-source には、完全な例があります。

例の機能

機能

説明

URL 再生

直接 URL を使用して再生します。

VidAuth 再生

VidAuth を使用して再生します。

VidSts 再生

VidSts を使用して再生します。

例の実行

デモアプリで、[ビデオソース] の例を選択して結果を確認してください。

API リファレンス

VideoSourceFactory メソッド

メソッド

説明

createVidAuthSource(vid, playAuth)

VidAuth タイプのビデオソースを作成します (推奨)。

createVidStsSource(vid, accessKeyId, accessKeySecret, securityToken, region)

VidSts タイプのビデオソースを作成します。

createUrlSource(url)

URL タイプのビデオソースを作成します。

VideoSource メソッド

メソッド

説明

getSourceType()

ビデオソースのタイプを取得します。

isValid()

設定が有効かどうかを検証します。

getMediaId()

一意の識別子を取得します。

toMap()

ソースを構成マップに変換します。

SourceType 定数

定数

値

説明

VID_AUTH

0

VidAuth タイプ。

VID_STS

1

VidSts タイプ。

URL

2

URL タイプ。

仕組み

MediaId 生成ルール

ビデオソースタイプ

MediaId フォーマット

VidAuth

vidauth:{vid}

VidSts

vidsts:{vid}

URL

url:{url}

MediaId により、プレーヤーインスタンスの再利用が可能になります。同じ MediaId を持つビデオソースは、同じプレーヤーインスタンスを共有します。

よくある質問

ビデオソースタイプの選択

  • 標準的なセキュリティ要件で、認可が必要なコンテンツの場合:VidAuth モードを使用します (推奨)。

  • 高いセキュリティと STS 一時的な認証情報が必要なコンテンツの場合:VidSts モードを使用します。

  • 公開動画の場合:URL モードを使用します。

VidAuth と VidSts の比較

機能

VidAuth

VidSts

認可方式

PlayAuth

STS 一時的な認証情報

パラメーター数

2

4 ~ 5

セキュリティレベル

中

高

ユースケース

ほとんどのビジネスシナリオ

高セキュリティシナリオ

推奨

推奨

特別な要件がある場合

作成失敗の処理

以下を確認してください。

  1. パラメーターが null または無効かを確認します。

  2. URL フォーマットが正しいかを確認します (URL モードの場合)。

  3. 認可情報が有効かを確認します (VidAuth および VidSts の場合)。

  4. ネットワーク接続が安定しているかを確認します。

よくある間違い

間違い 1:クライアントでの機密情報のハードコーディング

誤ったコード:

// クライアントで機密情報をハードコーディングしないでください
VideoSource.VidAuthSource videoSource = VideoSourceFactory.createVidAuthSource(
    "video_id",
    "hardcoded_play_auth_value"  // セキュリティリスク!
);

正しいアプローチ:

// サーバーから認可情報を取得
String playAuth = fetchPlayAuthFromServer(videoId);
VideoSource.VidAuthSource videoSource = VideoSourceFactory.createVidAuthSource(videoId, playAuth);

間違い 2:未検証のビデオソースの使用

誤ったコード:

// 検証せずに使用
VideoSource.VidAuthSource videoSource = VideoSourceFactory.createVidAuthSource(vid, playAuth);
playerView.attach(controller, createModel(videoSource));  // 設定が無効である可能性があります

正しいアプローチ:

// 使用前に検証
VideoSource.VidAuthSource videoSource = VideoSourceFactory.createVidAuthSource(vid, playAuth);

if (videoSource.isValid()) {
    playerView.attach(controller, createModel(videoSource));
} else {
    showError("Invalid video source configuration");
}

間違い 3:STS トークンの有効期限切れへの未対応

誤ったコード:

// トークンの有効期限切れが処理されていません
VideoSource.VidStsSource videoSource = VideoSourceFactory.createVidStsSource(
    vid, accessKeyId, accessKeySecret, expiredToken, region
);
// 再生が失敗します! トークンの有効期限が切れています。

正しいアプローチ:

// トークンの有効性を確認し、必要に応じて更新
if (isTokenExpired(securityToken)) {
    securityToken = refreshToken();
}
VideoSource.VidStsSource videoSource = VideoSourceFactory.createVidStsSource(
    vid, accessKeyId, accessKeySecret, securityToken, region
);

デバッグ

  1. ログを確認:tag:AliPlayerKit を使用して Logcat をフィルタリングします。

  2. toString() を呼び出す:ビデオソースの toString() メソッドは、機密データがマスクされた設定情報を出力します。

  3. パラメーターを検証:isValid() メソッドを使用して設定を検証します。

  4. ネットワークを確認:ビデオソースにアクセスできることを確認します。