在使用数据处理功能时,每个Object都会触发一个任务,任务中需要指定处理后的文件保存路径。为了避免文件覆盖,需要保证输出路径为动态路径。您可以在输出路径中引用源文件的信息,如Bucket、文件名、上传时间等。例如:将视频截帧任务的输出路径指定为oss://test-bucket/{dirname}/{barename}_output.{autoext},将目标文件保存到源文件所在目录下,文件名为源文件名_output,并自动添加后缀。
使用场景
控制台使用场景
-
任务:处理任务可在输出路径中引用源文件信息。例如:文档转jpg图片任务,输出路径设置为
oss://test-bucket/output/{dirname}/{barename}/{index}.{autoext},处理时{autoext}将被替换为jpg,转换生成的图片保存路径为oss://test-bucket/output/源文件目录/源文件名/图片序号.jpg。在创建任务弹窗中,样式选择
doc_to_jpg。输出路径下方提示:需填写完整文件名,文件名支持使用变量,且应避免输入输出路径同名。通知配置区域可选择消息队列,完成后单击确定。 -
批处理:批处理创建成功后会对每个存量文件生成任务。为避免数据覆盖,建议在输出路径中设置变量。例如:视频截帧批处理将视频截帧为png格式,输出路径设置为
oss://test-bucket/output/{dirname}/{barename}/{index}.{autoext},处理时{autoext}将被替换为png,处理后生成的png图片保存路径为oss://test-bucket/output/源文件目录/源文件名/图片序号.png。在输出配置区域完成输出路径设置后,注意使用
key、barename、basename变量时需确认输出文件和输入文件路径不同,否则将导致源文件被覆盖以及循环触发。在权限配置区域,服务角色选择 AliyunIMMBatchTriggerRole(默认角色),然后单击确定。 -
触发器:触发器创建成功后会对每个新增文件生成任务。为避免文件覆盖,建议在输出路径中设置变量。例如:文档转换触发器将文档转换为jpg图片格式,将输出路径设置为
oss://test-bucket/output/{dirname}/{barename}/{index}.{autoext},处理时{autoext}将被替换为jpg,处理后生成的jpg图片文件保存路径为oss://test-bucket/output/源文件目录/源文件名/图片序号.jpg。配置输出路径时需注意:使用 key、barename、basename 变量时应确保输出文件路径与输入文件路径不同,以避免文件覆盖。在权限配置区域,服务角色选择 AliyunIMMBatchTriggerRole(默认角色),然后单击确定。
API使用场景
-
另存为 (
sys/saveas):另存为 (sys/saveas) 中的b(Bucket)和o(Object)参数支持变量。例如:您在对example.docx文档进行文档转换处理时,需要将1~10页分别转换为png格式,可以将sys/saveas设置为b_e2J1Y2tldH0,o_ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw(e2J1Y2tldH0是{bucket}进行Base64编码之后的值,ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw是doc_images/{index}.png编码之后的值),则转换后生成的图片保存到源文件相同的Bucket下,路径为doc_images/下标.png。 -
任务:任务的输出路径支持变量。例如:调用创建文档转换任务接口创建文档转换任务时,TargetURI参数必须填写包含扩展名的完整输出文件路径,TargetURI使用变量(例如:
oss://test-bucket/output/{dirname}/{barename}/{index}.jpg)。
注意事项
-
批处理和触发器的输出路径以非
/结尾时,文件名需要至少包含一个变量,否则多个输出文件将会互相覆盖。 -
任务的输出路径不支持以
/结尾的路径,支持使用变量。
任务相关变量
同步处理和异步处理请求的时间点也可以作为变量,例如您在2022-09-01T02:06:57.798Z时刻提交的处理请求,可以使用下表中的变量。
|
变量 |
说明 |
示例值 |
|
t_year |
处理请求提交时的年份,格式为yyyy。 |
|
|
t_mon |
处理请求提交时的月份,格式为mm。 |
|
|
t_day |
处理请求提交时的日期,格式为dd。 |
|
|
t_hour |
处理请求提交时的小时,格式为HH。 |
|
|
t_min |
处理请求提交时的分钟,格式为MM。 |
|
|
t_sec |
处理请求提交时的秒钟,格式为SS。 |
|
图片处理相关变量
以源文件oss://test-bucket/path1/path2/name.png为例,该文件上传时间为2022-04-22 14:38:25,可以使用下表中的变量。
|
变量 |
说明 |
示例值 |
|
bucket |
原始文件存储空间(Bucket)名称。 |
|
|
key |
原始文件保存在存储空间中的资源名。 重要
使用该变量时请避免将输出文件和输入文件设置为相同文件,否则会覆盖源文件或在批处理时循环触发。 |
|
|
dirname |
原始文件路径目录。 重要
使用该变量时请避免将输出文件和输入文件设置为相同文件,否则会覆盖源文件或在批处理时循环触发。 |
|
|
barename |
原始文件名(不包含扩展名)。 重要
使用该变量时请避免将输出文件和输入文件设置为相同文件,否则会覆盖源文件或在批处理时循环触发。 |
|
|
basename |
原始文件名(包含扩展名)。 重要
使用该变量时请避免将输出文件和输入文件设置为相同文件,否则会覆盖源文件或在批处理时循环触发。 |
|
|
ext |
原始文件资源的扩展名,通过自动检测的 |
|
|
year |
原始文件上传时的年份,格式为yyyy。 |
|
|
mon |
原始文件上传时的月份,格式为mm。 |
|
|
day |
原始文件上传时的日期,格式为dd。 |
|
|
hour |
原始文件上传时的小时,格式为HH。 |
|
|
min |
原始文件上传时的分钟,格式为MM。 |
|
|
sec |
原始文件上传时的秒钟,格式为SS。 |
|
文档转换相关变量
文档转换处理可以使用页码、Sheet名称等作为变量,例如将含有一个Sheet,Sheet名称为sheet1的Excel文档转换为JPG图片,可以使用下表中的变量。
|
变量 |
说明 |
示例值 |
|
autoext |
文档转换中输出文件的后缀。 |
|
|
index |
输出下标,从1开始递增,Word、PDF、PPT为页码,Excel中为sheetindex_sheetsubindex。 |
Word、PDF、PPT为 Excel为 |
|
sheetname |
Excel的Sheet名称。 |
|
|
sheetindex |
Excel的Sheet下标,从1开始。 |
|
|
sheetsubindex |
Excel的Sheet其中部分下标,从1开始。 |
|
媒体处理相关变量
媒体处理可以使用容器扩展名、分辨率等作为变量。例如,对video.mp4进行分片转码,媒体容器为ts,目标分辨率为1920x1080,可以使用下表中的变量。
|
变量 |
说明 |
示例值 |
|
autoext |
媒体处理中输出文件的后缀。 |
|
|
index |
输出下标,从1开始递增,用于分片转码、截图等多输出场景。 |
|
|
streamindex |
音视频流ID,音视频流分别从0递增。 |
|
|
resolution |
设置的转码分辨率,仅视频转码可用。 |
|
使用REST API
如果您的程序自定义要求较高,您可以直接发起REST API请求。直接发起REST API请求需要手动编写代码计算签名。
您可以在PostObject接口中以添加处理参数或样式参数的方式来处理文件。更多信息,请参见另存为。
示例一:文档格式转换
如下REST API示例在PostObject接口中以添加处理参数的方式对example.docx进行文档格式转换处理,在另存为 (sys/saveas) 中的b(Bucket)和o(Object)参数使用变量。
-
pages_MS0xMA:转换文档1-10页(MS0xMA是1-10进行Base64编码之后的值)。
-
target_png:将文档转换成png图片格式。
-
source_docx:指定源文件类型为docx。
-
sys/saveas:另存为。
-
b_e2J1Y2tldH0:转码完成后将得到的图片使用{bucket}变量保存到源Bucket(e2J1Y2tldH0是{bucket}进行Base64编码后的值)。
-
o_ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw:object使用{index}变量以example.docx页码作为图片文件名保存到doc_images目录下(ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw是doc_images/{index}.png进行Base64编码之后的值)。
-
POST /exmaple.docx?x-oss-async-process HTTP/1.1
Host: doc-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
// 将文件example.docx的1-10页转换为PNG格式的图片文件,转换后的存储路径为:oss://源Bucket/doc_images/页码.png。
x-oss-async-process=doc/convert,pages_MS0xMA,target_png,source_docx|sys/saveas,b_e2J1Y2tldH0,o_ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw
示例二:视频转码
如下以视频转码处理场景为,对example.avi文件进行视频转码处理,配置了多个处理参数。
-
f_mp4:转码输出媒体文件容器为MP4。
-
vcodec_h265:视频流格式为H.265。
-
s_1920x1080:分辨率为1920x1080。
-
vb_2000000:视频码率为2 Mbps。
-
fps_30:视频帧率为30 fps。
-
acodec_aac:音频编码格式为AAC。
-
ab_100000:音频码率为100 Kbps。
-
sn_1:禁用字幕流。
-
sys/saveas 另存为。
-
b_e2J1Y2tldH0:转码完成后将得到的文件使用{bucket}变量保存到源Bucket(e2J1Y2tldH0是{bucket}进行Base64编码后的值)。
-
o_b3V0cHV0LnthdXRvZXh0fQ:object使用{autoext}变量自动添加后缀,保存后的object为output.mp4(b3V0cHV0LnthdXRvZXh0fQ是output.{autoext}进行Base64编码后的值)。
-
POST /exmaple.avi?x-oss-async-process HTTP/1.1
Host: video-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
x-oss-async-process=video/convert,f_mp4,vcodec_h265,s_1920x1080,vb_2000000,fps_30,acodec_aac,ab_100000,sn_1|sys/saveas,b_e2J1Y2tldH0,o_b3V0cHV0LnthdXRvZXh0fQ