サーバーサイド Java SDK で API オペレーションを呼び出して、Intelligent Media Services (IMS) で動画編集と制作ジョブを作成するサンプルコードです。
使用上の注意
制作ジョブを作成する場合、Timeline、TemplateId、または ProjectId のいずれかのパラメーターを使用してください。
サンプルコード
Alibaba Cloud OpenAPI 開発者ポータル で API コールをオンラインでデバッグできます。
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{
// Alibaba Cloud アカウントの AccessKey は、すべての API に対するフルアクセス権限を持ちます。 API アクセスや日常の O&M には、RAM ユーザーの使用を推奨します。
// この例では、AccessKey ID と AccessKey secret を環境変数に保存する方法を示します。
com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
Config config = new Config();
config.setCredential(credentialClient);
// AccessKey ID と AccessKey secret をハードコードするには、次のコードを使用します。 ただし、プロジェクトコードに AccessKey ID と AccessKey secret を保存しないでください。 ハードコードすると、AccessKey の漏洩を招き、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
// config.accessKeyId = <yourAccessKeyId>;
// config.accessKeySecret = <yourAccessKeySecret>;
config.endpoint = "ice.cn-shanghai.aliyuncs.com";
Client client = new Client(config);
// 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());
// 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());
// 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());
// 単一の制作ジョブを取得
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());
// ライブ編集ジョブを送信
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());
// JobId で単一のライブ編集ジョブの情報を取得
GetLiveEditingJobRequest getLiveEditingJobRequest = new GetLiveEditingJobRequest();
getLiveEditingJobRequest.setJobId("****d80e4e4044975745c14b****");
GetLiveEditingJobResponse getLiveEditingJobResponse = client.getLiveEditingJob(getLiveEditingJobRequest);
System.out.println("state:"+getLiveEditingJobResponse.getBody().getLiveEditingJob().getStatus());
}
}
関連 API オペレーション
-
SubmitMediaProducingJob - 制作ジョブを送信します。
-
GetMediaProducingJob - 制作ジョブを照会します。
-
GetLiveEditingJob - ライブ編集ジョブを照会します。
-
SubmitLiveEditingJob - ライブ編集ジョブを送信します。