自定義轉碼生成的文件名稱
視頻上傳到點播轉碼后生成的文件名稱(即文件的相對路徑),會遵循一定規(guī)則,本文檔主要介紹轉碼生成文件名稱的默認規(guī)則,以及如何自定義。
文件名的定義
文件名由可變字符串、固定字符串組成,其中可變字符串主要是指點播提供的特定通配符,可進行動態(tài)替換,而固定字符串不能動態(tài)替換。
該文件名稱定義規(guī)則暫不適用HLS和DASH打包的輸出文件名稱。
可變字符串
可變字符串即通配符,是指具體取值的替換規(guī)則,只需要設置對應的通配符,則點播會在生成轉碼文件名稱時,獲取具體的取值去替換通配符,當前點播支持的通配符如下:
視頻ID:
{MediaId}
,局部唯一性,一個視頻可生成多路轉碼輸出。轉碼任務ID:
{JobId}
,完全唯一性,可唯一標記一個轉碼文件。播放清晰度標記:
{PlayDefinition}
,不具有唯一性。說明播放清晰度標記為獲取視頻播放地址接口中返回的
Definition
字段的取值,且使用英文小寫形式。
固定字符串
固定字符串可代表具體的業(yè)務信息。例如:watermark(表示有水印輸出)、encrypt(表示加密輸出)等,點播提供的默認規(guī)則中對于轉碼加密輸出會具備encrypt-stream關鍵字,也可通過自定義規(guī)則配置具體各自業(yè)務特性的固定字符串。
示例:
{MediaId}/{JobId}-watermark-sd
、{MediaId}/encrypt-hd
,具備watermark、encrypt關鍵可表示水印和加密信息。
文件名的唯一性
為避免轉碼輸出文件相互覆蓋,點播要求配置的轉碼輸出的文件名稱必須具備唯一性。
唯一性示例:
{MediaId}/{JobId}
:{MediaId} 僅具備局部唯一性,{JobId} 具備全局唯一性,從而確保整個文件名稱的唯一性。非唯一性示例:
{MediaId}/test
:{MediaId} 僅具備局部唯一性,test代表某個業(yè)務信息。當此時需要轉碼輸出兩個分辨率、碼率等轉碼參數(shù)不同的MP4文件,對于同一個視頻兩個MP4格式的轉碼輸出文件,名稱就會相同,且會出現(xiàn)文件相互覆蓋的情況,最終導致只有一個MP4文件。
默認規(guī)則
點播轉碼會對文件輸出名稱提供一套默認的生成規(guī)則,具體如下:
以下隨機字符串主要是為了保證轉碼輸出文件名稱的唯一性。
非加密輸出
形式為:
{MediaId}/[隨機字符串]-{PlayDefinition}
生成示例:
99f4f18c560c4f35459ef71tr/1b1196c767003c3dba0543055-40023f3f33e648df975f4dfc4c-sd
加密輸出
形式為:
{MediaId}/[隨機字符串]-{PlayDefinition}-encrypt-stream
生成示例:
99f4f18c560c4f35459ef71tr/1b1196c767003c3dba0543055-40023f3f33e648df975f4dfc4c-sd-encrypt-stream
說明encrypt-stream關鍵字表示當前轉碼輸出文件為轉碼加密輸出,僅對HLS加密生效(私有加密/標準加密)。
自定義規(guī)則
對于某些特定的業(yè)務場景,如用戶為了降低視頻整體的播放響應時間,希望根據(jù)某些可行的規(guī)則直接拼接處理播放地址,例如:規(guī)則為{MediaId}/{PlayDefinition}
,則可直接通過MediaId +不同的清晰度標記
來拼接對應的文件路徑,而無需通過播放接口獲取播放列表。由此,點播轉碼支持用戶自定義轉碼文件名稱規(guī)則,轉碼會根據(jù)規(guī)則生成具體的名稱。
規(guī)則限制
自定義轉碼文件名稱只支持特定的通配符(可變字符串)、英文字符串、數(shù)字、連接號(-)、下劃線(_) ,整個自定義規(guī)則總長度不能超過128個字符。
自定義轉碼文件名稱必須以通配符 {MediaId} 開始,可首先保證轉碼文件名稱局部唯一,防止不同視頻轉碼文件名稱相互影響。
自定義轉碼文件名稱不需配置文件后綴名,因為點播轉碼將自動補齊后綴名,例如:名稱規(guī)則為 {MediaId}/{JobId}-watermark-{PlayDefinition},格式 mp4,那么點播轉碼會在生成實際文件名稱時自動帶上mp4后綴。
示例:
99f4f18c560c4f35459ef71tr/1b1196c767003c3dba0543055-watermark-sd.mp4。
自定義轉碼文件名稱規(guī)則必須確保轉碼輸出文件名稱具備唯一性,防止文件覆蓋。
配置方式
當前僅支持通過API自定義轉碼文件名稱,詳細請參考添加轉碼配置 ,參數(shù)詳情請參考 轉碼模板配置TranscodeTemplate的TranscodeFileRegular
參數(shù)。
配置示例
public static JSONArray buildTranscodeTemplateList() {
JSONObject transcodeTemplate = new JSONObject();
//自定義轉碼輸出文件名稱
transcodeTemplate.put("TranscodeFileRegular", "{MediaId}/{JobId}-watermark-{PlayDefinition}");
//模板名稱
transcodeTemplate.put("TemplateName", "testtemplate");
//清晰度
transcodeTemplate.put("Definition", "LD");
......
//視頻轉碼配置、音頻轉碼配置、輸出格式等參數(shù)配置
......
JSONArray transcodeTemplateList = new JSONArray();
transcodeTemplateList.add(transcodeTemplate);
return transcodeTemplateList;
}
更多配置詳情請參考轉碼模板中添加轉碼模板組。