このトピックでは、AliPlayerKit がサポートするビデオソースの種類と、その使用方法について説明します。
基本概念
ビデオソース
ビデオソースとは、動画再生のデータソースです。動画の取得方法と認可方式を定義します。
AliPlayerKit は、次の 3 種類のビデオソースをサポートしています:
ビデオソースのタイプ | 認可方式 | ユースケース |
VidAuth | VID + PlayAuth | ほとんどの本番環境で 推奨 されます |
VidSts | VID + STS 一時的な認証情報 | セキュリティ要件が高いシナリオ |
URL | ダイレクト URL | パブリックリソース、テスト、デモ |
ビデオソースタイプの選択方法
ビジネスシナリオとセキュリティ要件に基づいて、ビデオソースタイプを選択します:
要件 | 推奨タイプ | 説明 |
認可が必要 | VidAuth (推奨) | シンプルで組み込みやすい認可 |
高いセキュリティ要件 | VidSts | 一時的な認証情報を使用して、きめ細かなアクセス制御をサポートします |
パブリックな動画リソース | URL | 認可は不要で、簡単に使用できます |
機能
課題
ビデオソースの種類ごとに設定方法が統一されていません。
認可のための認証情報の管理が複雑です。
ビデオソースに対する統一された検証メカニズムがありません。
さまざまな種類のビデオリソースを区別することが困難です。
コアバリュー
機能 | 説明 |
統一された抽象化 | すべてのビデオソースタイプは、 |
ファクトリによる作成 | The |
型安全性 |
|
設定の検証 |
|
コア機能
機能 | 説明 |
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 | 認可は不要で、簡単に使用できます。 |
セキュリティの推奨事項
推奨事項 | 説明 |
機密情報をハードコードしない | クライアントで |
サーバーから認可を取得する | サーバーサイド 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 メソッド
メソッド | 説明 |
| VidAuth タイプのビデオソースを作成します (推奨)。 |
| VidSts タイプのビデオソースを作成します。 |
| URL タイプのビデオソースを作成します。 |
VideoSource メソッド
メソッド | 説明 |
| ビデオソースのタイプを取得します。 |
| 設定が有効かどうかを検証します。 |
| 一意の識別子を取得します。 |
| ソースを構成マップに変換します。 |
SourceType 定数
定数 | 値 | 説明 |
| 0 | VidAuth タイプ。 |
| 1 | VidSts タイプ。 |
| 2 | URL タイプ。 |
仕組み
MediaId 生成ルール
ビデオソースタイプ | MediaId フォーマット |
VidAuth |
|
VidSts |
|
URL |
|
MediaId により、プレーヤーインスタンスの再利用が可能になります。同じ MediaId を持つビデオソースは、同じプレーヤーインスタンスを共有します。
よくある質問
ビデオソースタイプの選択
標準的なセキュリティ要件で、認可が必要なコンテンツの場合:VidAuth モードを使用します (推奨)。
高いセキュリティと STS 一時的な認証情報が必要なコンテンツの場合:VidSts モードを使用します。
公開動画の場合:URL モードを使用します。
VidAuth と VidSts の比較
機能 | VidAuth | VidSts |
認可方式 | PlayAuth | STS 一時的な認証情報 |
パラメーター数 | 2 | 4 ~ 5 |
セキュリティレベル | 中 | 高 |
ユースケース | ほとんどのビジネスシナリオ | 高セキュリティシナリオ |
推奨 | 推奨 | 特別な要件がある場合 |
作成失敗の処理
以下を確認してください。
パラメーターが null または無効かを確認します。
URL フォーマットが正しいかを確認します (URL モードの場合)。
認可情報が有効かを確認します (VidAuth および VidSts の場合)。
ネットワーク接続が安定しているかを確認します。
よくある間違い
間違い 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
);デバッグ
ログを確認:
tag:AliPlayerKitを使用して Logcat をフィルタリングします。toString() を呼び出す:ビデオソースの
toString()メソッドは、機密データがマスクされた設定情報を出力します。パラメーターを検証:
isValid()メソッドを使用して設定を検証します。ネットワークを確認:ビデオソースにアクセスできることを確認します。