視頻上傳到點播轉碼後產生的檔案名稱(即檔案的相對路徑),會遵循一定規則,本文檔主要介紹轉碼組建檔案名稱的預設規則,以及如何自訂。
檔案名稱的定義
檔案名稱由可變字串、固定字串組成,其中可變字串主要是指點播提供的特定萬用字元,可進行動態替換,而固定字串不能動態替換。
該檔案名稱定義規則暫不適用HLS和DASH打包的輸出檔案名稱。
可變字串
可變字串即萬用字元,是指具體取值的替換規則,只需要設定對應的萬用字元,則點播會在產生轉碼檔案名稱時,擷取具體的取值去替換萬用字元,當前點播支援的萬用字元如下:
視頻ID:
{MediaId}
,局部唯一性,一個視頻可產生多路轉碼輸出。轉碼任務ID:
{JobId}
,完全唯一性,可唯一標記一個轉碼檔案。播放清晰度標記:
{PlayDefinition}
,不具有唯一性。說明播放清晰度標記為擷取視頻播放地址介面中返回的
Definition
欄位的取值,且使用英文小寫形式。
固定字串
固定字串可代表具體的商務資訊。例如:watermark(表示有浮水印輸出)、encrypt(表示加密輸出)等,點播提供的預設規則中對於轉碼加密輸出會具備encrypt-stream關鍵字,也可通過自訂規則配置具體各自業務特性的固定字串。
樣本:
{MediaId}/{JobId}-watermark-sd
、{MediaId}/encrypt-hd
,具備watermark、encrypt關鍵可表示浮水印和加密資訊。
檔案名稱的唯一性
為避免轉碼輸出檔案相互覆蓋,點播要求配置的轉碼輸出的檔案名稱必須具備唯一性。
唯一性樣本:
{MediaId}/{JobId}
:{MediaId} 僅具備局部唯一性,{JobId} 具備全域唯一性,從而確保整個檔案名稱的唯一性。非唯一性樣本:
{MediaId}/test
:{MediaId} 僅具備局部唯一性,test代表某個商務資訊。當此時需要轉碼輸出兩個解析度、碼率等轉碼參數不同的MP4檔案,對於同一個視頻兩個MP4格式的轉碼輸出檔案,名稱就會相同,且會出現檔案相互覆蓋的情況,最終導致只有一個MP4檔案。
預設規則
點播轉碼會對檔案輸出名稱提供一套預設的建置規則,具體如下:
以下隨機字串主要是為了保證轉碼輸出檔案名稱的唯一性。
非加密輸出
形式為:
{MediaId}/[隨機字串]-{PlayDefinition}
產生樣本:
99f4f18c560c4f35459ef71tr/1b1196c767003c3dba0543055-40023f3f33e648df975f4dfc4c-sd
加密輸出
形式為:
{MediaId}/[隨機字串]-{PlayDefinition}-encrypt-stream
產生樣本:
99f4f18c560c4f35459ef71tr/1b1196c767003c3dba0543055-40023f3f33e648df975f4dfc4c-sd-encrypt-stream
說明encrypt-stream關鍵字表示當前轉碼輸出檔案為轉碼加密輸出,僅對HLS加密生效(私人加密/標準加密)。
自訂規則
對於某些特定的業務情境,如使用者為了降低視頻整體的播放回應時間,希望根據某些可行的規則直接拼接處理播放地址,例如:規則為{MediaId}/{PlayDefinition}
,則可直接通過MediaId +不同的清晰度標記
來拼接對應的檔案路徑,而無需通過播放介面擷取播放清單。由此,點播轉碼支援使用者自訂轉碼檔案名稱規則,轉碼會根據規則產生具體的名稱。
規則限制
自訂轉碼檔案名稱只支援特定的萬用字元(可變字串)、英文字串、數字、串連號(-)、底線(_) ,整個自訂規則總長度不能超過128個字元。
自訂轉碼檔案名稱必須以萬用字元 {MediaId} 開始,可首先保證轉碼檔案名稱局部唯一,防止不同視頻轉碼檔案名稱相互影響。
自訂轉碼檔案名稱不需設定檔尾碼名,因為點播轉碼將自動補齊尾碼名,例如:名稱規則為 {MediaId}/{JobId}-watermark-{PlayDefinition},格式 mp4,那麼點播轉碼會在產生實際檔案名稱時自動帶上mp4尾碼。
樣本:
99f4f18c560c4f35459ef71tr/1b1196c767003c3dba0543055-watermark-sd.mp4。
自訂轉碼檔案名稱規則必須確保轉碼輸出檔案名稱具備唯一性,防止檔案覆蓋。
配置方式
當前僅支援通過API自訂轉碼檔案名稱,詳細請參考添加轉碼配置 ,參數詳情請參考 轉碼模板配置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;
}
更多配置詳情請參考轉碼模板中添加轉碼模板組。