Alibaba Cloud ApsaraVideo VOD (VOD) はプレビュー機能を提供します。 このトピックでは、プレビュー機能を有効にする方法と、プレビューURLを取得するためのベストプラクティスについて説明します。
概要
プレビュー機能を有効にすると、ユーザーはオーディオまたはビデオファイルの所定の期間をプレビューできます。 この機能は通常、有料メディア資産に使用されます。 サーバー側でGetPlayInfo操作を呼び出して、プレビュー期間を指定できます。 この操作はプレビューURLを返します。 または、プレビュー情報を含むプレビューURLを作成できます。 構築されたURLは署名付きURLです。
Alibaba Cloud ApsaraVideo VODのプレビュー機能は、Alibaba Cloud CDNに基づいて実装されています。 プレビュー機能の基本原則は、プレーヤーが指定されたプレビュー期間に関する情報を含む高速化ドメイン名のURLを使用してVODにアクセスすることです。 ファイルが返される前に、VODはURLを検証する必要があります。 プレビューURLが検証に合格した場合、指定されたファイルが返されます。 それ以外の場合、アクセスは拒否され、HTTP 403ステータスコードが返されます。 次の図は、ApsaraVideo VODのプレビュー機能の動作を示しています。
- CDNの高速化ドメイン名を設定し、プレビュー機能を有効にします。
重要 プレビュー機能を使用する前に、ドメイン名を設定してプレビュー機能を有効にする必要があります。 詳細については、「プレビュー機能を有効にする」をご参照ください。
- プレーヤーはプレビューリクエストをApsaraVideo VODに送信します。
- ApsaraVideo VODは、プレビューリクエストのドメイン名設定とプレビュー期間設定に基づいてプレビューURLを生成します。
注 ApsaraVideo VODを使用すると、サーバー側でAPI操作を呼び出してプレビューURLを生成したり、プレビューURLを作成したりできます。 詳細については、「GetPlayInfo操作を呼び出して、プレビューURLを取得します。」および「プレビューURLを作成する」をご参照ください。
- プレイヤーはプレビューURLを使用してCDNからビデオをリクエストします。
制限事項
- ApsaraVideo VODでは、MP4およびHLS形式のビデオファイルをプレビューできます。 MP4ファイルのメタデータは、ファイルヘッダーに含まれている必要があります。 ファイルテールにメタデータが含まれているMP4ファイルはプレビューできません。 ApsaraVideo VODがビデオをトランスコードし、そのコンテナ形式をMP4に変換すると、システムはメタデータをファイルヘッダーに配置します。
- プレビュー期間は、キーフレームに基づいて決定されます。 ショートビデオにはプレビュー機能を使用しないことをお勧めします。 長い動画の場合は、プレビュー時間を30秒以上に設定することを推奨します。
デフォルトでは、トランスコードされたビデオのキーフレーム間隔は10秒です。
注 コード変換テンプレートのキーフレーム間隔を変更できます。 詳細については、「t1959251.html#multiTask3221」をご参照ください。
- HLSファイルのプレビュー粒度は、各TSセグメントの期間です。 指定されたプレビュー期間と返されたビデオの実際のプレビュー期間は異なる場合があります。 返されるビデオの実際のプレビュー期間は、指定されたプレビュー期間に基づいて切り上げられます。 たとえば、TSセグメントの長さが10秒で、指定されたプレビューの長さが15秒の場合、返されるビデオのプレビューの長さは20秒です。
プレビュー機能を有効にする
操作を呼び出してプレビューURLを取得するか、プレビューURLを作成する前に、ドメイン名を設定してプレビュー機能を有効にする必要があります。 プレビュー機能を有効にするには、次の手順を実行します。
- CDNの高速化ドメイン名を設定します。 詳細については、「t1959258.html#multiTask802」をご参照ください。
重要 プレビュー機能を使用するには、CDNの高速化ドメイン名を設定する必要があります。
- URL認証を有効にし、サポートプレビューをオンにします。 詳細については、「t1959280.html#multiTask774」をご参照ください。
重要 ドメイン名でプレビュー機能が有効になっていない場合、ビデオ再生のリクエストにプレビューパラメーターを含めることができず、返されたURLにアクセスできません。 URL認証を設定するときは、サポートプレビューをオンにする必要があります。
次の図は、VODコンソールでプレビュー機能を有効にする方法を示しています。
注 プレビューURLを手動で作成するには、privateKeyパラメーターを指定して認証値を計算する必要があります。 値は、コンソールで生成または入力されたプライマリキーまたはセカンダリキーの値です。 後続の使用のために上記の値を記録する。 - Back-to-origin of Rangeを有効にし、ドメイン名のドラッグ /ドロップ再生を行います。 詳細については、「オブジェクトのチャンク化」および「t1994890.html#task_1994890」をご参照ください。
GetPlayInfo操作を呼び出して、プレビューURLを取得します。
ApsaraVideo VODを使用すると、GetPlayInfo操作を呼び出してビデオのプレビューURLを取得できます。 詳細については、「GetPlayInfo」をご参照ください。 サーバーSDKを統合し、SDKを使用してこの操作を呼び出し、プレビューURLを取得できます。 プレビューURLを取得するには、次の手順を実行します。
- ビジネス要件に基づいてサーバーSDKを統合します。 詳細については、「」をご参照ください。「サーバーSDKリファレンス」をご参照ください。
- SDKを使用してGetPlayInfo操作を呼び出します。 この操作を呼び出すときに、PlayConfigのPreviewTimeを使用してプレビュー期間を指定できます。 サーバーは、プレビュー期間の設定に基づいてプレビューURLを返します。 PlayConfigパラメーターの詳細については、「リクエストパラメーター」をご参照ください。
- 他のプログラミング言語のサンプルコードの詳細については、「OpenAPI」をご参照ください。
com.alibaba.fastjson.JSONObjectをインポートします。com.aliyuncs.DefaultAcsClientをインポートします。com.aliyuncs.profile.DefaultProfileをインポートします。com.aliyuncs.exceptions.ClientExceptionをインポートします。com.aliyuncs.vod.mo del.v20170321.GetPlayInfoRequestをインポートします。com.aliyuncs.vod.mo del.v20170321.GetPlayInfoResponseをインポートします。/**
* @ 日付2021/12/30
* /
public class VodPreviewTest {
public static void main(String[] args) throws ClientException {
// ApsaraVideo VODのリージョンを指定します。 詳細については、「ApsaraVideo VODのリージョンID」をご参照ください。
String regionId = "cn-shanghai";
// Alibaba CloudアカウントのAccessKey IDを指定します。
文字列accessKeyId = "<your accessKeyId>";
// Alibaba CloudアカウントのAccessKey Secretを指定します。
文字列accessKeySecret = "<your accessKeySecret>";
// ビデオのIDを指定します。 例: 533606af570e4db4961248d0978b **** 。 VODコンソールでビデオをアップロードした後、VODコンソールにログインし、[メディアファイル]> [オーディオ /ビデオ] を選択してビデオのIDを表示します。 CreateUploadVideo操作を呼び出してビデオをアップロードする場合、ビデオのIDはレスポンスのVideoIdの値になります。
String videoId = "<your videoId>";
DefaultAcsClientクライアント=InitVodClient(regionId、accessKeyId、accessKeySecret);
GetPlayInfoResponseレスポンス=null;
try {
応答=getPlayInfo (クライアント、videoId);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("response = " + JSONObject.toJSONString (応答));
}
/**
* クライアントを初期化します。
*
* @ param regionId
* @ param accessKeyId
* @ param accessKeySecret
* @return
* @throws ClientException
*/
public static DefaultAcsClient InitVodClient(String regionId, String accessKeyId, String accessKeySecret) throws ClientException {
DefaultProfile profile = DefaultProfile.getProfile(regionId、accessKeyId、accessKeySecret);
DefaultAcsClient client = new DefaultAcsClient(profile);
return client;
}
/**
* ビデオ再生URLを取得します。
*
* @param client
* @ param videoId
* @return
* @throws Exception
*/
public static GetPlayInfoResponse getPlayInfo(DefaultAcsClientクライアント、String videoId) throws Exception {
GetPlayInfoRequest request=新しいGetPlayInfoRequest();
request.setVideoId(videoId);
// 有効期間を秒単位で指定します。 既定値: 3600。
request.setAuthTimeout(3600L);
request.setFormats("mp4");
JSONObject playConfig = new JSONObject();
// プレビュー時間を秒単位で指定します。 最小値:1
playConfig.put("PreviewTime" 、"30");
request.setPlayConfig(playConfig.toJSONString());
return client.getAcsResponse(request);
}
}
プレビューURLを作成する
ApsaraVideo VODを使用すると、プレビュー情報を含む署名付きURLを作成できます。 署名付きURLを作成するには、次の手順を実行します。
- プレビューパラメーターを含む署名付きURLを作成します。 署名付きプレビューURLのMD5ハッシュ値を計算する場合、プレビュー期間の計算に使用する
previewTime
を追加する必要があります。ビデオのURLのMD5ハッシュ計算 プレビューURLのMD5ハッシュ計算 MD5(uri-timestamp-rand-uid-PrivateKey)
MD5(uri-timestamp-rand-uid-PrivateKey-previewTime)
注 MD5ハッシュ計算のパラメーターと、署名付きURLの作成に使用されるメソッドの詳細については、「URL認証の設定」をご参照ください。 ビデオ全体を再生する場合は、previewTimeパラメーターを設定しないでください。 - 構築された署名付きURLの末尾に
&end=
を追加し、その後にpreviewTime
を追加します。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
import java.util.UUID;
impor t java.net.URL;
impor t org.apache.com mons.lang3.StringUtils;
private String generateRand() {
UUID.randomUUID().toString().replaceAll("-", ""); を返します。
}
プライベート文字列md5(String str) {
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(str.getBytes("UTF-8"));
bytesToHex(md5.digest()) を返します。
} catch (Exception e) {
e.printStackTrace();
}
}
public String genAuthKey(String object, String privateKey, Long expireTime, Long previewTime) {
String rand = "0";
文字列uid = "0";
if (StringUtils.isBlank(privateKey)) {
"" を返します。
}
rand = generateRand();
long timestamp = System.currentTimeMillis() / 1000 + (expireTime == null? 0 : expireTime);
文字列authStr = timestamp + "-" + rand + "-" + uid;
文字列md5Str = object + "-" + authStr + "-" + privateKey;
if(previewTime!=0)
md5Str = md5Str + "-" + previewTime;
文字列auth_key = authStr + "-" + this.md5(md5Str);
auth_keyを返します。
}
public void previewTest() が例外をスロー {
try {
String key = "<Your PrivateKey>";// VODコンソールで設定したプライマリキーまたはセカンダリキー。 詳細については、「プレビュー機能を有効にする」をご参照ください。
String fileUrl = "<Your File URL>";// ファイルのURL。 例: http://example.aliyundoc.com/test/bee21427ca3346848835c1bd786054c5-19bd8528c1d51576cd726cf86471ca0 ****.mp4。
URL url=新しいURL(fileUrl);
String file = url.getFile();
Long previewTime=120L; // プレビュー期間。
長いexpireTime = 1800L;
String auth_key =genAuthKey(file, key, expireTime, previewTime);
fileUrl = fileUrl + "?auth_key=" + auth_key;
if(previewTime! =0)
fileUrl = fileUrl + "&end=" + previewTime;
System.out.println(fileUrl);
} catch (Exception e) {
e.printStackTrace();
}
}