如何获取转码后的文件名/URL
场景
原视频上传,触发工作流的转码任务,如何获取对应转码后资源的URL链接?
解决
根据命名规则获取文件名/URL
登录 媒体处理控制台 > 媒体管理 > 媒体库设置 > 工作流,选择所需的工作流,并单击右侧的 查看。移动鼠标到转码/截图等模块,可以看到对应的输出bucket截输出路径,对应的输出文件名就是输出路径,其中自定义变量替换为具体的值即可。对应的URL为:Bucketname.Endpoint/输出路径.后缀。
注意:
输出Object中可以设置静态常量和变量,其中静态常量即直接编写,而动态变量需要通过大括号({})引用使用。输出 Object 中可选如下变量:
{RunId}: 媒体工作流执行ID;
{ObjectPrefix}: 不含Bucket信息的原文件路径;
{FileName}: 不含扩展名的原文件名;
{ExtName}: 原文件扩展名;
Endpoint的意义,参见 Endpoint设置。
控制台获取文件名/URL
登录 媒体处理控制台 > 媒体库,选择所需的视频,并单击 管理 > 媒体地址获取 > TRANSCODE > 复制,即可获取。
程序获取文件名/URL
在工作流中配置消息服务的队列或者通知(参见获取工作流通知消息实例)> 业务端消费对应的消息 > 当收到相应工作流实例“Report”消息,代表转码结束 > 根据输入Object的URL或者媒体ID(MediaId),调用媒体转码API接口。接口参见 查询媒体-使用OSS文件地址 和 查询媒体-使用媒体ID。
根据输入ObjectURL查询转码结果,Java代码示例:
static QueryMediaListByURLResponse queryMediaListByURL(DefaultAcsClient client) {
QueryMediaListByURLRequest request = new QueryMediaListByURLRequest();
request.setFileURLs(objecturl);
request.setIncludePlayList(true);
QueryMediaListByURLResponse response = null;
try {
response = client.getAcsResponse(request);
} catch (ServerException e) {
throw new RuntimeException("QueryMediaListByURLRequest Server failed");
} catch (ClientException e) {
throw new RuntimeException("QueryMediaListByURLRequest Client failed");
}
return response;
}
根据输入媒体ID查询转码结果,Java代码示例:
static QueryMediaListResponse QueryMediaList(DefaultAcsClient client) {
QueryMediaListRequest request = new QueryMediaListRequest();
request.setMediaIds("媒体ID");
request.setIncludePlayList(true);
QueryMediaListResponse response = null;
try {
response = client.getAcsResponse(request);
} catch (ServerException e) {
throw new RuntimeException("QueryMediaListRequest Server failed");
} catch (ClientException e) {
throw new RuntimeException("QueryMediaListRequest Client failed");
}
return response;
}
执行工作流输出文件怎么没有提供CDN地址
场景
视频上传,工作流转码任务触发后,在 媒体处理控制台 > 媒体库 > 管理 > 媒体地址获取 > 媒体地址 不显示媒资文件对应的CDN地址。
解决
编辑或者删除对应的工作流,重新配置工作流,在 配置工作流 > 配置内容分发网络(CDN) 中添加CDN加速域名。之后该工作流新创建的转码任务中,新增的CDN域名就会显示在输出文件的URL地址中。
原因
只有在新建工作流配置中有CDN域名,对应转码输出后的资源才会带CDN域名地址的链接,如果当时创建工作流不存在CDN域名,之后在bucket中绑定域名并进行加速,这样的域名是不会在输出媒体地址中显示的。
注意事项
媒体地址获取中,原文件地址获取是不能获取到CDN地址的,用户需自己绑定或者代码实现将bucket域名替换为对应的CDN域名。
输出文件支持如下变量设置
输出 Object 中可选如下变量:
{RunId}:媒体工作流执行ID
{ObjectPrefix}:不含Bucket信息的原文件(输入文件)路径
{FileName}:不含扩展名的原文件(输入文件)名
{ExtName}:原文件(输入文件)扩展名
如何触发工作流的执行
当工作流的配置的输入Bucket路径中存在文件的增量输入,对应的工作流就会被触发,进行相关的转码截图任务等。
关于如何上传文件到工作流的输入Bucket路径中,参见上传视频文件的方法。