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

ApsaraVideo VOD:ビデオのプレビュー

最終更新日:Jan 29, 2026

ビデオプレビュー機能を使用すると、ユーザーはビデオやオーディオなどのコンテンツを期間限定で視聴できます。 この機能は、有料コースや短編ドラマなどの有料サービスで一般的に使用されます。 このトピックでは、ApsaraVideo VOD (VOD) のビデオプレビュー機能を有効にし、プレビュー URL を取得する方法について説明します。

仕組み

Alibaba Cloud VOD はプレビュー機能を提供します。 サーバーサイドの GetPlayInfo API 操作を呼び出す際にプレビュー時間を設定するか、プレビュー情報を含む署名付き URL を手動で生成することで、プレビュー URL を取得できます。

重要

指定されたプレビュー時間がオリジナルビデオの総再生時間を超える場合、ユーザーは VOD から返されたプレビュー URL を使用してビデオ全体を再生できます。

VOD のビデオプレビュー機能は、Alibaba Cloud CDN に基づいて実装されています。 基本的な仕組みは次のとおりです:プレーヤーは、指定されたプレビュー時間を含むプレビュー URL (CDN ドメイン名) を含むリクエストを送信します。 クラウドはプレビュー URL を認証します。 認証が成功すると、指定されたファイルコンテンツが返されます。 それ以外の場合、アクセスは拒否され、403 エラーが返されます。 次の図は、ビデオプレビューのワークフローを示しています。

流程提示

  1. CDN ドメイン名を設定し、ビデオプレビュー機能を有効にします。

    重要

    プレビュー機能を使用するには、ドメイン名を設定し、プレビュー機能を有効にする必要があります。詳細については、「プレビュー機能を有効にする」をご参照ください。

  2. ご利用のプレーヤーが VOD にプレビューリクエストを送信します。

  3. VOD は、ドメイン名の構成とリクエストで指定されたプレビュー時間に基づいてプレビュー URL を生成します。

    説明

    サーバーサイド API 操作を呼び出してプレビュー URL を生成するか、プレビュー URL を生成できます。 詳細については、「API 操作の呼び出しによるプレビュー URL の取得」または「プレビュー URL の手動生成」をご参照ください。

  4. ご利用のプレーヤーが CDN にリクエストを送信して、プレビュービデオを再生します。

制限事項

  • ビデオプレビュー機能は、MP4 および HLS ファイル形式をサポートしています。 MP4 ビデオの場合、メタデータはファイルヘッダーにある必要があります。 ファイルの末尾にメタデータがある MP4 ビデオはサポートされていません。 VOD を使用してビデオを MP4 コンテナフォーマットにトランスコードすると、メタデータはファイルヘッダーに配置されます。

  • プレビュー時間はキーフレームに依存します。 デフォルトでは、VOD によってトランスコードされた出力ファイルに対して 10 秒ごとにキーフレームが生成されます。 したがって、短いビデオにはプレビュー機能を使用しないことを推奨します。 長いビデオの場合は、プレビュー時間を少なくとも 30 秒に設定してください。

    説明

    トランスコーディングテンプレートでキーフレーム間隔を変更できます。 詳細については、「トランスコーディングテンプレート」をご参照ください。

  • HLS ファイルの場合、プレビューの精度は TS セグメントの期間に基づきます。 プレビュー時間は、TS セグメント期間の最も近い倍数に切り上げられます。 たとえば、TS セグメントが 10 秒で、プレビュー時間を 15 秒に設定した場合、20 秒のプレビューが返されます。

ビデオプレビュー機能の有効化

API 操作を呼び出すか、URL を手動で生成してプレビュー URL を取得する前に、ドメイン名を設定し、ビデオプレビュー機能を有効にする必要があります。 次の手順に従ってください:

  1. CDN ドメイン名を設定します。 詳細については、「高速化ドメイン名の追加」をご参照ください。

    重要

    ビデオプレビュー機能は、CDN ドメイン名として設定されたドメイン名でのみ利用できます。

  2. ドメイン名の URL 署名を有効にし、プレビュー機能を有効にすることもできます。詳細については、「URL 署名」をご参照ください。

    重要

    ドメイン名でビデオプレビュー機能が無効になっている場合、VOD へのリクエストにプレビューパラメーターを含めることはできません。 返された URL はアクセス不能になります。 したがって、URL 署名を有効にするときは、お試し視聴をサポート スイッチをオンにする必要があります。

    次の図は、ビデオプレビュー機能を有効にするためのコンソールインターフェイスを示しています。

    説明

    プレビュー URL を手動で生成するには、privateKey パラメーターを使用して認証値を計算する必要があります。 このパラメーターには、コンソールから取得した プライマリキー または セカンダリキー の値を設定します。 後で使用するためにキーの値を記録しておいてください。

    开启试看功能

  3. ドメイン名に対して Range オリジンフェッチとシーク再生を有効にします。 詳細については、「Range オリジンフェッチの設定」および「シーク再生」をご参照ください。

API 操作の呼び出しによるプレビュー URL の取得

VOD は、ビデオ再生 URL を取得するための API 操作を提供します。 API 操作の詳細については、「オーディオおよびビデオ再生 URL の取得」をご参照ください。 サーバーサイド SDK を統合し、SDK を使用してこの操作を呼び出すことで、プレビュー URL を取得できます。 プレビュー URL を取得するには、次の手順に従ってください:

重要

この操作を呼び出す前に、プレビュー機能が有効になっていることを確認してください。 詳細については、「ビデオプレビュー機能の有効化」をご参照ください。

  1. 適切なサーバーサイド SDK を統合します。 詳細については、「ApsaraVideo VOD SDK クイックスタート」をご参照ください。

  2. SDK を使用して「オーディオおよびビデオ再生 URL の取得」 API 操作を呼び出します。 API 操作を呼び出す際に、PlayConfig パラメーター内の PreviewTime パラメーターを設定してプレビュー時間を指定します。 サーバーは指定された時間に基づいてプレビュー URL を返します。 PlayConfig パラメーターの詳細については、「PlayConfig」をご参照ください。

クリックしてプレビュー URL を取得するためのサンプルコード (Java) を表示

説明
  • 他の言語のサンプルコードについては、「OpenAPI」をご参照ください。

  • VOD API 操作を呼び出すには、AccessKey ペアを取得して本人確認を完了する必要があります。 AccessKey ペアの取得方法の詳細については、「AccessKey ペアの作成」をご参照ください。


import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.vod.model.v20170321.GetPlayInfoRequest;
import com.aliyuncs.vod.model.v20170321.GetPlayInfoResponse;

/**
 * @date 2021/12/30
 */
public class VodPreviewTest {
    public static void main(String[] args) throws ClientException {
        // ApsaraVideo VOD が有効化されているリージョンを指定します。 詳細については、「ApsaraVideo VOD のリージョン」をご参照ください。
        String regionId = "cn-shanghai";
        // Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作を呼び出す権限を持っています。 API 操作の呼び出しや日常の O&M には、RAM ユーザーを使用することを推奨します。
        // プロジェクトコードに AccessKey ID と AccessKey Secret をハードコーディングすることは強く推奨されません。 ハードコーディングすると、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが損なわれる可能性があります。
        // この例では、AccessKey ペアは環境変数から取得されます。 サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を設定してください。
        // ご利用の AccessKey ID。
        String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        // ご利用の AccessKey Secret。
        String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // ビデオ ID。 例: 533606af570e4db4961248d0978b****。 VOD コンソールでビデオをアップロードする場合、コンソールにログインし、[メディアライブラリ] > [オーディオ/ビデオ] を選択してビデオ ID を表示できます。 CreateUploadVideo 操作を呼び出してビデオをアップロードする場合、応答の VideoId パラメーターの値がビデオ ID です。
        String videoId = "<your videoId>";
        DefaultAcsClient client = InitVodClient(regionId, accessKeyId, accessKeySecret);
        GetPlayInfoResponse response = null;
        try {
            response = getPlayInfo(client, videoId);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("response = " + JSONObject.toJSONString(response));

    }

    /**
     * クライアントを初期化します。
     *
     * @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 client, String videoId) throws Exception {
        GetPlayInfoRequest request = new GetPlayInfoRequest();
        request.setVideoId(videoId);
        // URL の有効期間。 単位:秒。 このパラメーターを設定しない場合、デフォルト値の 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 の手動生成

プレビュー情報を含む署名付き URL を手動で生成できます。 次の手順に従ってください:

重要

プレビュー URL を生成する前に、プレビュー機能が有効になっていることを確認してください。 詳細については、「ビデオプレビュー機能の有効化」をご参照ください。

  1. プレビューパラメーターを含む署名付き 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 パラメーターを含めないでください。

  2. 生成された署名付き URL の末尾に &end= を追加します。 次に、&end= の後にプレビューパラメーター previewTime を追加して、完全なプレビュー URL を生成します。

クリックして手動生成用の JAR パッケージに必要な依存関係 (Java) を表示

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.4</version>
</dependency>

クリックしてプレビュー URL を手動で生成するためのサンプルコード (Java) を表示

    import java.util.UUID;
    import java.net.URL;
    import org.apache.commons.lang3.StringUtils;
    private String generateRand() {
        return UUID.randomUUID().toString().replaceAll("-", "");
    }
    private String md5(String str) {
        try {
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            md5.update(str.getBytes("UTF-8"));
            return bytesToHex(md5.digest());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public String genAuthKey(String object, String privateKey, Long expireTime, Long previewTime) {
        String rand = "0";
        String uid = "0";
        if (StringUtils.isBlank(privateKey)) {
            return "";
        }
        rand = generateRand();
        long timestamp = System.currentTimeMillis() / 1000 + (expireTime == null ? 0 : expireTime);
        String authStr = timestamp + "-" + rand + "-" + uid;
        String md5Str = object + "-" + authStr + "-" + privateKey;
        if(previewTime!=0)
            md5Str = md5Str + "-" + previewTime;
        String auth_key = authStr + "-" + this.md5(md5Str);
        return auth_key;
    }

    public void previewTest() throws Exception {
        try {
            String key = "<Your PrivateKey>";// コンソールで設定したプライマリキーまたはセカンダリキー。 キーの取得方法の詳細については、「ビデオプレビュー機能の有効化」をご参照ください。
            String fileUrl = "<Your File URL>";// ファイル URL。 例: http://example.aliyundoc.com/test/bee21427ca3346848835c1bd786054c5-19bd8528c1d51576cd726cf86471ca0****.mp4
            URL url = new URL(fileUrl);
            String file = url.getFile();
            Long previewTime = 120L;// プレビュー時間。
            Long 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();
        }
    }