变量
简介
变量是七牛云多媒体处理同用户交换数据的机制,引入变量的目的在于更灵活的控制创建任务后续动作中的内容组织和传递。可以认为变量是一种占位符,我们会将占位符按约定替换为实际内容。
变量分为两种:预定义变量 和 自定义变量。
- 预定义变量,是系统提供的一系列预定义变量,可直接使用。
- 自定义变量,则由调用方指定,通过应对于上传时的表单参数,服务端会将这些上传参数的具体值返回给调用方。
应用场景
-
文字水印可以通过设置变量来动态获取。在某些特定场景,不同的视频需要压制不同的水印信息,例如:
- 短视频需要压制不同用户的昵称/uid等,以表示不同视频版权属于不同的上传用户。
- 直播场景中,在视频流中加上任务创建时间(创建多媒体任务的时间)。
-
使用变量,自定义输出文件名。
-
增量上传触发工作流,支持设置 kodo的自定义变量和部分系统变量。
预定义变量
魔法变量是一组预先定义的变量,可以使用 {{.meta.var}}
或 字符串与{{.meta.var}}的组合
形式求值。
目前可用的魔法变量如下:
变量名 | 命名空间 | 变量说明 |
---|---|---|
bucket | meta | 获得上传的目标空间名。 |
key | meta | 获得文件保存在空间中的资源名。 |
fname | meta | 上传的原始文件名。 |
prefix | meta | key 忽略{{.meta.fname}} 文件名、忽略{{.meta.ext}}后缀。 |
ext | meta | 上传资源的后缀名,通过自动检测的 mimeType 或者{{.meta.fname}}的后缀来获取。 |
count | meta | count 为六个占位符的数字串,不足位的填充前导零即%06d ,如 000001 。 |
end | meta | 表示一个视频的结束时间点。 |
t_year | meta | 任务创建时的年份。 |
t_mon | meta | 任务创建时的月份。 |
t_day | meta | 任务创建时的日期。 |
t_hour | meta | 任务创建时的小时。 |
t_min | meta | 任务创建时的分钟。 |
t_sec | meta | 任务创建时的秒钟。 |
year | meta | 文件上传时的年份。 |
mon | meta | 文件上传时的月份。 |
day | meta | 文件上传时的日期。 |
hour | meta | 文件上传时的小时。 |
min | meta | 文件上传时的分钟。 |
sec | meta | 文件上传时的秒钟。 |
求值举例:
{{.meta.bucket}}
- 获得上传目标bucket名字{{.meta.fname}}
- 获取上传文件的原始文件名{{.meta.ext}}
- 获取上传资源的后缀名{{.meta.prefix}}
- 忽略上传资源 key的后缀名和原始文件名
变量不支持数组形式的访问子项,例如:
-
{{.meta.var[0]}}
示例
源文件名 = abc/abc/file.mp4
.meta.key = abc/abc/file.mp4
.meta.prefix = abc/abc/
.meta.fname = file
.meta.ext = .mp4
.meta.bucket=public
输出文件名填写如下魔法变量是,结果文件会是:
- echo{{.meta.fname}} ,结果文件=
echofile
- {{.meta.prefix}}{{.meta.ext}},结果文件=
abc/abc.mp4
- {{.meta.bucket}}{{.meta.fname}}{{.meta.ext}}, 结果文件为=
publicfile.mp4
自定义变量
应用客户端在上传请求中设定自定义变量的值。自定义变量的行为同 魔法变量 基本一致,变量名必须以x_
开始。注意:此处跟 kodo 自定义变量名以x:
开始,举例:通过表达式{{.meta.x_abc}}
来使用在kodo上传时定义的自定义变量 x:abc
。
当前支持 kodo的自定义变量,可以满足在增量上传触发转码时,能在传递过来的 event 中,一并传递过来这些变量。
示例
文件上传到存储空间 -> 上传触发多媒体文件处理-> 输出,输出文件名命名为:{{.meta.bucket}}{{.meta.fname}}{{.meta.x_uid}},服务端会将请求中会将请求中 {{.meta.x_uid}}
的值,替换到输出文件名中。
.meta.bucket=
upload
.meta.fname=
-
.meta.x_uid=
1810775223
结果文件=
upload-1810775223
这个例子中{{.meta.x_uid}}
就是自定义变量。如果变量取值失败,相应内容中对应的变量将赋予空值。