视频上传到点播转码后生成的文件名称(即文件的相对路径),会遵循一定规则,本文档主要介绍转码生成文件名称的默认规则,以及如何自定义。
文件名的定义
文件名由可变字符串、固定字符串组成,其中可变字符串主要是指点播提供的特定通配符,可进行动态替换,而固定字符串不能动态替换。
该文件名称定义规则暂不适用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;
}
更多配置详情请参考转码模板中添加转码模板组。