All Products
Search
Document Center

Intelligent Media Services:Video editing and production

Last Updated:Jun 16, 2026

Sample code for creating a video editing and production job in Intelligent Media Services by calling an API operation with the server-side Java SDK.

Usage notes

When you create a production job, use one of the following parameters: `Timeline`, `TemplateId`, or `ProjectId`.

Sample code

Debug API calls online in the Alibaba Cloud OpenAPI Developer Portal.

package com.aliyun.ice.sample;

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

public class MediaProducingJobSample {

    public static void main (String[] args) throws Exception{

        // An Alibaba Cloud account AccessKey has full access permissions for all APIs. Use a Resource Access Management (RAM) user for API access or daily O&M.
        // This example shows how to save the AccessKey ID and AccessKey secret in environment variables.
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
        Config config = new Config();
        config.setCredential(credentialClient);

        // To hard-code the AccessKey ID and AccessKey secret, use the following code. However, do not save your AccessKey ID and AccessKey secret in your project code. Hard coding may lead to an AccessKey leak and compromise the security of all resources in your account.
        // config.accessKeyId = <yourAccessKeyId>;
        // config.accessKeySecret = <yourAccessKeySecret>;

        config.endpoint = "ice.cn-shanghai.aliyuncs.com";
        Client client = new Client(config);

        // Create a production job using Timeline
        SubmitMediaProducingJobRequest submitMediaProducingJobRequest1 = new SubmitMediaProducingJobRequest();
        submitMediaProducingJobRequest1.setTimeline("{\"VideoTracks\":[{\"VideoTrackClips\":[{\"MediaId\":\"****9b4d7cf14dc7b83b0e801cbe****\"},{\"MediaId\":\"****9b4d7cf14dc7b83b0e801cbe****\"}]}]}");
        submitMediaProducingJobRequest1.setOutputMediaConfig("{\"MediaURL\":\"http://example-bucket.oss-object.com/example.mp4\"}");
        submitMediaProducingJobRequest1.setProjectMetadata("{\"coverURL\":\"http://test.sample.com/mediaid.jpg\",\"description\":\"description\",\"title\":\"title\",\"tags\":\"Tag1,Tag2,Test\"}");
        SubmitMediaProducingJobResponse submitMediaProducingJobResponse1 = client.submitMediaProducingJob(submitMediaProducingJobRequest1);
        System.out.println("requestId : " + submitMediaProducingJobResponse1.getBody().getRequestId());
        System.out.println("jobId : " + submitMediaProducingJobResponse1.getBody().getJobId());
        System.out.println("projectId : " + submitMediaProducingJobResponse1.getBody().getProjectId());

        // Create a production job using TemplateId
        SubmitMediaProducingJobRequest submitMediaProducingJobRequest2 = new SubmitMediaProducingJobRequest();
        submitMediaProducingJobRequest2.setTemplateId("IceSys_VideoMerge");
        submitMediaProducingJobRequest2.setClipsParam("{\"VideoArray\":[\"****05512043f49f697f7425****\",\"****2788e810116a45109f2e****\",\"****67f44f4964e6c998dee8****\",]}");
        submitMediaProducingJobRequest2.setOutputMediaConfig("{\"MediaURL\":\"http://example-bucket.oss-object.com/example.mp4\"}");
        SubmitMediaProducingJobResponse submitMediaProducingJobResponse2 = client.submitMediaProducingJob(submitMediaProducingJobRequest2);
        System.out.println("requestId : " + submitMediaProducingJobResponse2.getBody().getRequestId());
        System.out.println("jobId : " + submitMediaProducingJobResponse2.getBody().getJobId());
        System.out.println("projectId : " + submitMediaProducingJobResponse2.getBody().getProjectId());

        // Create a production job using ProjectId
        SubmitMediaProducingJobRequest submitMediaProducingJobRequest3 = new SubmitMediaProducingJobRequest();
        submitMediaProducingJobRequest3.setProjectId("****67f44f4964e6c998dee8****");
        submitMediaProducingJobRequest3.setOutputMediaConfig("{\"MediaURL\":\"http://example-bucket.oss-object.com/example.mp4\"}");
        SubmitMediaProducingJobResponse submitMediaProducingJobResponse3 = client.submitMediaProducingJob(submitMediaProducingJobRequest3);
        System.out.println("requestId : " + submitMediaProducingJobResponse3.getBody().getRequestId());
        System.out.println("jobId : " + submitMediaProducingJobResponse3.getBody().getJobId());
        System.out.println("projectId : " + submitMediaProducingJobResponse3.getBody().getProjectId());

        // Get a single production job
        GetMediaProducingJobRequest request = new GetMediaProducingJobRequest();
        request.setJobId("****67f44f4964e6c998dee8****");
        GetMediaProducingJobResponse reqponse = client.getMediaProducingJob(request);
        System.out.println("jobId : " + reqponse.getBody().getMediaProducingJob().getJobId());
        System.out.println("status : " + reqponse.getBody().getMediaProducingJob().getStatus());

        // Submit a production job for a live stream segment
        SubmitLiveEditingJobRequest submitLiveEditingJobRequest = new SubmitLiveEditingJobRequest();
        submitLiveEditingJobRequest.setClips("[{\"StartTime\":\"2021-06-21T08:01:00Z\",\"EndTime\":\"2021-06-21T08:03:00Z\",\"AppName\":\"app\",\"DomainName\":\"domain.com\",\"StreamName\":\"stream\"},{\"StartTime\":\"2021-06-21T08:05:00Z\",\"EndTime\":\"2021-06-21T08:09:00Z\"}]");
        submitLiveEditingJobRequest.setProjectId("****fddd7748b58bf1d47e95****");
        submitLiveEditingJobRequest.setLiveStreamConfig("{ \"AppName\": \"app\", \"DomainName\": \"domain.com\", \"StreamName\": \"stream\" }");
        submitLiveEditingJobRequest.setOutputMediaConfig("{ \"MediaURL\": \"https://example-bucket.oss-cn-shanghai.aliyuncs.com/testfile.mp4\" }");
        submitLiveEditingJobRequest.setMediaProduceConfig("{ \"Mode\": \"AccurateFast\"}");
        submitLiveEditingJobRequest.setUserData("{\"key\": \"value\"}");
        submitLiveEditingJobRequest.setOutputMediaTarget("oss-object");
        SubmitLiveEditingJobResponse submitLiveEditingJobResponse = client.submitLiveEditingJob(submitLiveEditingJobRequest);
        System.out.println("jobId:"+submitLiveEditingJobResponse.getBody().getJobId());
        System.out.println("requestid:"+submitLiveEditingJobResponse.getBody().getRequestId());

        // Get information about a single live editing job by JobId
        GetLiveEditingJobRequest getLiveEditingJobRequest = new GetLiveEditingJobRequest();
        getLiveEditingJobRequest.setJobId("****d80e4e4044975745c14b****");
        GetLiveEditingJobResponse getLiveEditingJobResponse = client.getLiveEditingJob(getLiveEditingJobRequest);
        System.out.println("state:"+getLiveEditingJobResponse.getBody().getLiveEditingJob().getStatus());

    }
}

Related API operations