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
-
SubmitMediaProducingJob - Submits a video editing and production job.
-
GetMediaProducingJob - Queries a video editing and production job.
-
GetLiveEditingJob - Queries a live video editing job.
-
SubmitLiveEditingJob - Submits a live video editing job.