全部产品
Search
文档中心

媒体处理:媒体转码输出文件相关问题

更新时间:Dec 05, 2018

如何获取转码后的文件名/URL

场景

原视频上传,触发工作流的转码任务,如何获取对应转码后资源的URL链接?

解决

  • 根据命名规则获取文件名/URL

    登录 媒体处理控制台 > 媒体管理 > 媒体库设置 > 工作流,选择所需的工作流,并单击右侧的 查看。移动鼠标到转码/截图等模块,可以看到对应的输出bucket截输出路径,对应的输出文件名就是输出路径,其中自定义变量替换为具体的值即可。对应的URL为:Bucketname.Endpoint/输出路径.后缀。

    2

    注意:

    • 输出Object中可以设置静态常量和变量,其中静态常量即直接编写,而动态变量需要通过大括号({})引用使用。输出 Object 中可选如下变量:

    • {RunId}: 媒体工作流执行ID;

    • {ObjectPrefix}: 不含Bucket信息的原文件路径;

    • {FileName}: 不含扩展名的原文件名;

    • {ExtName}: 原文件扩展名;

    • Endpoint的意义,参见 Endpoint设置

  • 控制台获取文件名/URL

    登录 媒体处理控制台 > 媒体库,选择所需的视频,并单击 管理 > 媒体地址获取 > TRANSCODE > 复制,即可获取。

    2

  • 程序获取文件名/URL

    在工作流中配置消息服务的队列或者通知(参见获取工作流通知消息实例)> 业务端消费对应的消息 > 当收到相应工作流实例“Report”消息,代表转码结束 > 根据输入Object的URL或者媒体ID(MediaId),调用媒体转码API接口。接口参见 查询媒体-使用OSS文件地址查询媒体-使用媒体ID

    根据输入ObjectURL查询转码结果,Java代码示例:

    1. static QueryMediaListByURLResponse queryMediaListByURL(DefaultAcsClient client) {
    2. QueryMediaListByURLRequest request = new QueryMediaListByURLRequest();
    3. request.setFileURLs(objecturl);
    4. request.setIncludePlayList(true);
    5. QueryMediaListByURLResponse response = null;
    6. try {
    7. response = client.getAcsResponse(request);
    8. } catch (ServerException e) {
    9. throw new RuntimeException("QueryMediaListByURLRequest Server failed");
    10. } catch (ClientException e) {
    11. throw new RuntimeException("QueryMediaListByURLRequest Client failed");
    12. }
    13. return response;
    14. }

    根据输入媒体ID查询转码结果,Java代码示例:

    1. static QueryMediaListResponse QueryMediaList(DefaultAcsClient client) {
    2. QueryMediaListRequest request = new QueryMediaListRequest();
    3. request.setMediaIds("媒体ID");
    4. request.setIncludePlayList(true);
    5. QueryMediaListResponse response = null;
    6. try {
    7. response = client.getAcsResponse(request);
    8. } catch (ServerException e) {
    9. throw new RuntimeException("QueryMediaListRequest Server failed");
    10. } catch (ClientException e) {
    11. throw new RuntimeException("QueryMediaListRequest Client failed");
    12. }
    13. return response;
    14. }

执行工作流输出文件怎么没有提供CDN地址

场景

视频上传,工作流转码任务触发后,在 媒体处理控制台 > 媒体库 > 管理 > 媒体地址获取 > 媒体地址 不显示媒资文件对应的CDN地址。

3

解决

编辑或者删除对应的工作流,重新配置工作流,在 配置工作流 > 配置内容分发网络(CDN) 中添加CDN加速域名。之后该工作流新创建的转码任务中,新增的CDN域名就会显示在输出文件的URL地址中。

2

原因

只有在新建工作流配置中有CDN域名,对应转码输出后的资源才会带CDN域名地址的链接,如果当时创建工作流不存在CDN域名,之后在bucket中绑定域名并进行加速,这样的域名是不会在输出媒体地址中显示的。

注意事项

媒体地址获取中,原文件地址获取是不能获取到CDN地址的,用户需自己绑定或者代码实现将bucket域名替换为对应的CDN域名。

2

输出文件支持如下变量设置

输出 Object 中可选如下变量:

  • {RunId}:媒体工作流执行ID

  • {ObjectPrefix}:不含Bucket信息的原文件(输入文件)路径

  • {FileName}:不含扩展名的原文件(输入文件)名

  • {ExtName}:原文件(输入文件)扩展名

如何触发工作流的执行

当工作流的配置的输入Bucket路径中存在文件的增量输入,对应的工作流就会被触发,进行相关的转码截图任务等。

6

关于如何上传文件到工作流的输入Bucket路径中,参见上传视频文件的方法。