Exemple de code pour créer une tâche de montage et de production vidéo dans Intelligent Media Services en appelant une opération d'API avec le SDK Java côté serveur.
Notes d'utilisation
Lorsque vous créez une tâche de production, utilisez l'un des paramètres suivants : Timeline, TemplateId ou ProjectId.
Exemple de code
Déboguez les appels d'API en ligne sur le Portail des développeurs OpenAPI Alibaba Cloud.
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());
}
}
Opérations d'API associées
SubmitMediaProducingJob - Soumet une tâche de montage et de production vidéo.
GetMediaProducingJob - Interroge une tâche de montage et de production vidéo.
GetLiveEditingJob - Interroge une tâche de montage vidéo en direct.
SubmitLiveEditingJob - Soumet une tâche de montage vidéo en direct.