自定义转码生成的文件名称

视频上传到点播转码后生成的文件名称(即文件的相对路径),会遵循一定规则,本文档主要介绍转码生成文件名称的默认规则,以及如何自定义。

文件名的定义

文件名由可变字符串、固定字符串组成,其中可变字符串主要是指点播提供的特定通配符,可进行动态替换,而固定字符串不能动态替换。

说明

该文件名称定义规则暂不适用HLSDASH打包的输出文件名称。

  • 可变字符串

    可变字符串即通配符,是指具体取值的替换规则,只需要设置对应的通配符,则点播会在生成转码文件名称时,获取具体的取值去替换通配符,当前点播支持的通配符如下:

    • 视频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自定义转码文件名称,详细请参考添加转码配置 ,参数详情请参考 转码模板配置TranscodeTemplateTranscodeFileRegular参数。

配置示例

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;
    }

更多配置详情请参考转码模板中添加转码模板组。