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