動画を ApsaraVideo VOD にアップロードしてトランスコーディングする場合、出力ファイルは特定のルールに基づいて命名されます。ファイル名は、ファイルの相対パスとしても機能します。このトピックでは、トランスコードファイルのデフォルトの命名ルールと、カスタマイズ方法について説明します。
ファイル名の定義
ファイル名は、可変文字列と固定文字列で構成されています。可変文字列は、VOD が提供する特定のワイルドカード文字で、動的に置換できます。固定文字列は動的に置換できません。
これらのファイル命名ルールは、HTTP ライブストリーミング (HLS) および HTTP 経由の動的アダプティブストリーミング (DASH) のパッケージングにおける出力ファイル名には適用されません。
可変文字列
可変文字列 (ワイルドカード文字とも呼ばれます) は、特定の値のプレースホルダーです。ワイルドカード文字を設定すると、VOD は対応する値を取得し、トランスコードファイル名の生成時にワイルドカード文字をその値に置換します。VOD は次のワイルドカード文字をサポートしています:
動画 ID:
{MediaId}。1 つの動画に対して複数のトランスコード出力が存在するため、部分的な一意性を提供します。トランスコードジョブ ID:
{JobId}。完全な一意性を提供し、トランスコードファイルを一意に識別できます。再生定義マーク:
{PlayDefinition}。一意ではありません。説明再生画質マークは、GetPlayInfo オペレーションによって返される
Definitionフィールドの値です。この値は、英小文字の文字列です。
固定文字列
固定文字列は、特定のビジネス情報を表します。たとえば、watermark は透かし付き出力を示し、encrypt は暗号化された出力を示します。VOD が提供するデフォルトルールでは、暗号化されたトランスコード出力に encrypt-stream キーワードが含まれます。カスタムルールを使用して、独自のビジネス属性に合わせた固定文字列を設定することもできます。
例:
{MediaId}/{JobId}-watermark-sdおよび{MediaId}/encrypt-hdでは、キーワード watermark と encrypt が透かしおよび暗号化情報を示します。
ファイル名の一意性
トランスコード出力ファイルが上書きされないようにするため、各トランスコード出力ファイルに設定する名前は一意にする必要があります。
一意の例:
{MediaId}/{JobId}。{MediaId} は部分的な一意性を提供し、{JobId} はグローバルな一意性を提供します。これにより、ファイル名全体が一意になります。一意ではない例:
{MediaId}/test。{MediaId} は部分的な一意性しか提供せず、test は何らかのビジネス情報を表します。解像度やビットレートなど、異なるトランスコードパラメーターで 1 つの動画を 2 つの MP4 ファイルにトランスコーディングした場合、同一動画の 2 つの MP4 出力ファイルは同じ名前になります。その結果、ファイルが上書きされ、1 つの MP4 ファイルしか残りません。
デフォルトルール
VOD は、出力ファイル名を生成するためのデフォルトルール一式を提供します。ルールは次のとおりです:
ランダム文字列 は、トランスコード出力ファイル名の一意性を確保するために使用されます。
暗号化なしの出力
フォーマット:
{MediaId}/[Random string]-{PlayDefinition}例:
99f4f18c560c4f35459ef71tr/1b1196c767003c3dba0543055-40023f3f33e648df975f4dfc4c-sd暗号化された出力
フォーマット:
{MediaId}/[Random string]-{PlayDefinition}-encrypt-stream例:
99f4f18c560c4f35459ef71tr/1b1196c767003c3dba0543055-40023f3f33e648df975f4dfc4c-sd-encrypt-stream説明encrypt-stream キーワードは、出力ファイルが暗号化されたトランスコード出力であることを示します。これは HLS 暗号化 (独自暗号化および標準暗号化) にのみ適用されます。
カスタムルール
一部のビジネスシナリオでは、再生の応答時間を全体的に短縮したい場合があります。これは、特定のルールに基づいて再生アドレスを直接構築することで実現できます。たとえば、ルールが {MediaId}/{PlayDefinition} の場合、再生 API を呼び出してプレイリストを取得しなくても、MediaId と異なる定義マークを使用してファイルパスを構築できます。VOD では、トランスコードファイル名のルールをカスタマイズできます。VOD は、カスタムルールに基づいてファイル名を生成します。
制限事項
カスタムのトランスコードファイル名に含めることができるのは、特定のワイルドカード文字 (可変文字列)、英字、数字、ハイフン (-)、アンダースコア (_) のみです。カスタムルールの合計長は 128 文字を超えてはなりません。
カスタムのトランスコードファイル名は、{MediaId} ワイルドカード文字で始める必要があります。これにより部分的な一意性が確保され、異なる動画のトランスコードファイル同士が競合することを防ぎます。
VOD が自動的に追加するため、カスタムファイル名に拡張子を含めないでください。たとえば、命名ルールが {MediaId}/{JobId}-watermark-{PlayDefinition} で、出力フォーマットが mp4 の場合、VOD はファイル名の生成時に .mp4 拡張子を自動的に追加します。
例:
99f4f18c560c4f35459ef71tr/1b1196c767003c3dba0543055-watermark-sd.mp4ファイルの上書きを防止するため、カスタムルールによって各トランスコードファイルに一意の名前が生成されるようにしてください。
設定方法
トランスコードファイル名は、API を使用してのみカスタマイズできます。詳細については、「AddTranscodeTemplateGroup」をご参照ください。パラメーターの詳細については、TranscodeTemplate の TranscodeFileRegular パラメーターをご参照ください。
設定例
public static JSONArray buildTranscodeTemplateList() {
JSONObject transcodeTemplate = new JSONObject();
// トランスコード出力ファイル名をカスタマイズします。
transcodeTemplate.put("TranscodeFileRegular", "{MediaId}/{JobId}-watermark-{PlayDefinition}");
// テンプレート名。
transcodeTemplate.put("TemplateName", "testtemplate");
// 定義。
transcodeTemplate.put("Definition", "LD");
......
// 動画トランスコーディング、音声トランスコーディング、出力フォーマットなどのパラメーターを設定します。
......
JSONArray transcodeTemplateList = new JSONArray();
transcodeTemplateList.add(transcodeTemplate);
return transcodeTemplateList;
}トランスコードテンプレートグループの追加方法の詳細については、「トランスコードテンプレート」をご参照ください。