使用ICE SDK剪辑媒资内容

随着视频混剪的受众越来越广泛,多视频的混合剪辑被更多的企业或个人所重视。本文向您介绍如何使用ICE媒资、组织剪辑时间线 Timeline 并使用ICE SDK创作基于视频整段、任意区间片段的多段视频混剪视频。

流程

  1. 选择内容库媒资

  2. 组织剪辑 TimeLine

  3. 调用剪辑SDK

1. 选择内容库媒资

查看内容库媒资列表,选择需要进行剪辑的媒资并复制媒资ID,如下图所示:

选择

2. 组织剪辑 TimeLine

根据上一步骤所选取的媒资ID,组织剪辑TimeLine。如下,将三个视频完整顺序相接,整段合成:

{
    "VideoTracks": [
        {
            "VideoTrackClips": [
                {
                    "MediaId": "****9b4d7cf14dc7b83b0e801cbe****"
                },
                {
                    "MediaId": "****9b4d7cf14dc7b83b0e801cbe****"
                },
                {
                    "MediaId": "****1656bca4474999c961a6d2a2****"
                }
            ]
        }
    ]
}

这里介绍三类常见TimeLine组织示例:

3. 调用SDK

以 Java 语言为例, 首先在项目中引入 依赖的 SDK 库。 参考: 安装Java SDK

然后调用 ICE Java SDK 发起剪辑请求,示例如下:

package com.aliyun.sample;

import com.aliyun.ice20201109.models.*;
import com.aliyun.ice20201109.Client;
import com.aliyun.teaopenapi.models.Config;

import java.util.List;

public class MediaProducingJobSample {

    public static void main(String[] args) {
        try {
            Config config =  new Config();
            // Endpoint以上海为例,其它Region请按实际情况填写。
            config.endpoint = "ice.cn-shanghai.aliyuncs.com";
            // 阿里云子账号AccessKey, 需要添加 AliyunICEFullAccess 权限。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
            config.accessKeyId = "<yourAccessKeyId>";
            config.accessKeySecret = "<yourAccessKeySecret>";
            Client iceClient = new Client(config);

            // 通过timeline创建合成任务, mediaId 是通过内容库的注册接口注册得到的媒资ID
            SubmitMediaProducingJobRequest request1 = new SubmitMediaProducingJobRequest();
            request1.setTimeline("{\"VideoTracks\":[{\"VideoTrackClips\":[{\"MediaId\":\"****9b4d7cf14dc7b83b0e801cbe****\"},{\"MediaId\":\"****9b4d7cf14dc7b83b0e801cbe****\"},{\"MediaId\":\"****1656bca4474999c961a6d2a2****\"}]}]}");

            // 输出的媒体文件 URL: 指定为所在 Region 的 OSS Bucket 下面的文件, bucketxxx替换成真实的 Bucket 名称
            request1.setOutputMediaConfig("{ \"mediaURL\": \"http://bucketxxx.oss-cn-shanghai.aliyuncs.com/ice/sdk_test_out.mp4\", \"type\": \"oss-object\" }");

            SubmitMediaProducingJobResponse submitMediaProducingJobResponse = iceClient.submitMediaProducingJob(
                request1);

            SubmitMediaProducingJobResponseBody body = submitMediaProducingJobResponse.getBody();
            System.out.println("requestId:" + body.getRequestId() + " jobId:" + body.getJobId());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}