Fitur pengeditan daring ApsaraVideo VOD menggabungkan materi audio, video, dan teks menjadi video baru. Contoh Java SDK berikut menunjukkan cara membuat dan mengelola proyek pengeditan daring serta mengirimkan tugas produksi video.
Catatan pemanggilan API
Dalam topik ini, pasangan AccessKey digunakan untuk menginisialisasi instance client dalam contoh kode.
Untuk penjelasan detail mengenai parameter API dan bidang yang dikembalikan, kunjungi Alibaba Cloud OpenAPI Portal dan lihat tab Documentation untuk setiap API.
Topik ini hanya menyediakan contoh kode untuk beberapa API kompleks. Untuk mendapatkan contoh kode SDK untuk API lainnya, buka Alibaba Cloud OpenAPI Portal. Pada tab Parameter Settings di sebelah kiri, masukkan informasi parameter yang diperlukan dan lakukan pemanggilan. Kemudian, pada tab SDK Sample di sebelah kanan, pilih versi SDK dan bahasa target untuk melihat serta mengunduh contoh kode.
Pemanggilan API dalam topik ini menggunakan SDK V1.0 sebagai contoh. Untuk mendapatkan contoh SDK V2.0, tentukan versi SDK yang sesuai saat mengambil contoh kode dari Alibaba Cloud OpenAPI Portal.

Inisialisasi client
Sebelum menggunakan SDK, inisialisasi client seperti yang dijelaskan dalam Inisialisasi.
Kirim tugas produksi video berdasarkan timeline
Panggil ProduceEditingProjectVideo untuk mengirimkan tugas produksi video berdasarkan timeline.
Pendekatan ini cocok untuk sebagian besar skenario produksi video.
OpenAPI Explorer: ProduceEditingProjectVideo.
Contoh kode:
Contoh tambahan pengeditan timeline dan pencampuran aliran: Pengeditan Video - Contoh Penggunaan.
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.ProduceEditingProjectVideoRequest;
import com.aliyuncs.vod.model.v20170321.ProduceEditingProjectVideoResponse;
/**
* Dapatkan informasi AccessKey.
*/
public static DefaultAcsClient initVodClient() throws ClientException {
String regionId = "cn-shanghai"; // Tentukan wilayah tempat ApsaraVideo VOD diaktifkan.
// Pasangan AccessKey dari akun Alibaba Cloud memiliki izin atas semua operasi API. Kami menyarankan Anda menggunakan RAM user untuk memanggil operasi API atau melakukan O&M rutin.
// Kami menyarankan agar Anda tidak menyimpan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) dalam kode proyek Anda. Jika tidak, pasangan AccessKey tersebut dapat bocor, sehingga membahayakan keamanan seluruh sumber daya dalam akun Anda.
// Dalam contoh ini, sistem membaca pasangan AccessKey dari variabel lingkungan untuk menerapkan autentikasi akses API. Sebelum menjalankan contoh kode, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
DefaultProfile profile = DefaultProfile.getProfile(regionId, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
return client;
}
/**
* Kode Contoh
*/
public static void main(String[] args) throws Exception {
DefaultAcsClient client = initVodClient();
ProduceEditingProjectVideoRequest request = new ProduceEditingProjectVideoRequest();
// Bangun Timeline Proyek Pengeditan
request.setTimeline(buildTimeline());
// Atur Metadata Media Produksi
request.setMediaMetadata(buildMediaMetadata());
// Atur Konfigurasi Produksi
request.setProduceConfig(buildProduceConfig());
ProduceEditingProjectVideoResponse response = null;
try {
response = client.getAcsResponse(request);
if (response != null){
// ID Media Produksi
System.out.println("MediaId:" + response.getMediaId());
// ID Permintaan
System.out.println("RequestId:" + response.getRequestId());
}
} catch (ServerException e){
System.out.println("Kode ServerError:" + e.getErrCode() + ", pesan:" + e.getErrMsg());
} catch (ClientException e){
System.out.println("Kode ClientError:" + e.getErrCode() + ", pesan:" + e.getErrMsg());
} catch (Exception e) {
System.out.println("Pesan Error:" + e.getLocalizedMessage());
}
}
public static String buildMediaMetadata(){
JSONObject mediaMetadata = new JSONObject();
// Judul Media Produksi
mediaMetadata.put("Title", "Title");
// Deskripsi Media Produksi
mediaMetadata.put("Description", "Description");
// URL Sampul Media Produksi yang Ditentukan Pengguna
mediaMetadata.put("CoverURL", "http://192.168.0.0/16/media/cover/mediaid.jpg");
// ID Kategori Media Produksi
mediaMetadata.put("CateId", null);
// Nama Tag Media Produksi
mediaMetadata.put("Tags", "Tag1,Tag2,Test");
return mediaMetadata.toString();
}
public static String buildProduceConfig(){
JSONObject produceConfig = new JSONObject();
/*
Proses produksi dapat menghasilkan file sumber media. Anda dapat mentranskode file sumber yang dihasilkan. Tentukan parameter TemplateGroupId jika ingin mentranskode file sumber tersebut.
1. Tidak wajib
2. Gunakan ID grup templat transkode default jika kosong
*/
produceConfig.put("TemplateGroupId", null);
return produceConfig.toString();
}
/**
* Contoh ini menunjukkan cara menggabungkan dua video
*/
public static String buildTimeline(){
JSONObject timeline = new JSONObject();
// Trek Video
JSONArray videoTracks = new JSONArray();
JSONObject videoTrack = new JSONObject();
// Klip Trek Video
JSONArray videoTrackClips = new JSONArray();
JSONObject videoTrackClip1 = new JSONObject();
videoTrackClip1.put("MediaId", "11119b4d7cf14dc7b83b0e801cbe****");
videoTrackClips.add(videoTrackClip1);
JSONObject videoTrackClip2 = new JSONObject();
videoTrackClip2.put("MediaId", "22229b4d7cf14dc7b83b0e801cbe****");
videoTrackClips.add(videoTrackClip2);
videoTrack.put("VideoTrackClips", videoTrackClips);
videoTracks.add(videoTrack);
timeline.put("VideoTracks", videoTracks);
return timeline.toString();
}
Kirim tugas produksi video berdasarkan proyek pengeditan daring
Panggil ProduceEditingProjectVideo untuk mengirimkan tugas produksi video berdasarkan proyek pengeditan daring.
Gunakan pendekatan ini ketika Anda memerlukan kontrol detail halus terhadap proyek pengeditan daring.
OpenAPI Explorer: ProduceEditingProjectVideo.
Contoh kode:
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.ProduceEditingProjectVideoRequest;
import com.aliyuncs.vod.model.v20170321.ProduceEditingProjectVideoResponse;
/**
* Dapatkan informasi AccessKey.
*/
public static DefaultAcsClient initVodClient() throws ClientException {
String regionId = "cn-shanghai"; // Tentukan wilayah tempat ApsaraVideo VOD diaktifkan.
// Pasangan AccessKey dari akun Alibaba Cloud memiliki izin atas semua operasi API. Kami menyarankan Anda menggunakan RAM user untuk memanggil operasi API atau melakukan O&M rutin.
// Kami menyarankan agar Anda tidak menyimpan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) dalam kode proyek Anda. Jika tidak, pasangan AccessKey tersebut dapat bocor, sehingga membahayakan keamanan seluruh sumber daya dalam akun Anda.
// Dalam contoh ini, sistem membaca pasangan AccessKey dari variabel lingkungan untuk menerapkan autentikasi akses API. Sebelum menjalankan contoh kode, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
DefaultProfile profile = DefaultProfile.getProfile(regionId, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
return client;
}
/**
* Kode Contoh
*/
public static void main(String[] args) throws Exception {
DefaultAcsClient client = initVodClient();
ProduceEditingProjectVideoRequest request = new ProduceEditingProjectVideoRequest();
// Atur ID Proyek Pengeditan yang akan diproduksi
request.setProjectId("ProjectId");
// Atur Metadata Media Produksi
request.setMediaMetadata(buildMediaMetadata());
// Atur Konfigurasi Produksi
request.setProduceConfig(buildProduceConfig());
ProduceEditingProjectVideoResponse response = null;
try {
response = client.getAcsResponse(request);
if (response != null){
// ID Media Produksi
System.out.println("MediaId:" + response.getMediaId());
// ID Permintaan
System.out.println("RequestId:" + response.getRequestId());
}
} catch (ServerException e){
System.out.println("Kode ServerError:" + e.getErrCode() + ", pesan:" + e.getErrMsg());
} catch (ClientException e){
System.out.println("Kode ClientError:" + e.getErrCode() + ", pesan:" + e.getErrMsg());
} catch (Exception e) {
System.out.println("Pesan Error:" + e.getLocalizedMessage());
}
}
public static String buildMediaMetadata(){
JSONObject mediaMetadata = new JSONObject();
// Judul Media Produksi
mediaMetadata.put("Title", "Title");
// Deskripsi Media Produksi
mediaMetadata.put("Description", "Description");
// URL Sampul Media Produksi yang Ditentukan Pengguna
mediaMetadata.put("CoverURL", "http://192.168.0.0/16/media/cover/mediaid.jpg");
// ID Kategori Media Produksi
mediaMetadata.put("CateId", null);
// Nama Tag Media Produksi
mediaMetadata.put("Tags", "Tag1,Tag2,Test");
return mediaMetadata.toString();
}
public static String buildProduceConfig(){
JSONObject produceConfig = new JSONObject();
/*
Proses produksi dapat menghasilkan file sumber media. Anda dapat mentranskode file sumber yang dihasilkan. Tentukan parameter TemplateGroupId jika ingin mentranskode file sumber tersebut.
1. Tidak wajib
2. Gunakan ID grup templat transkode default jika kosong
*/
produceConfig.put("TemplateGroupId", null);
return produceConfig.toString();
}
Buat proyek pengeditan daring
Panggil AddEditingProject untuk membuat proyek pengeditan daring.
OpenAPI Explorer: AddEditingProject.
Contoh kode:
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.AddEditingProjectRequest;
import com.aliyuncs.vod.model.v20170321.AddEditingProjectResponse;
/**
* Dapatkan informasi AccessKey.
*/
public static DefaultAcsClient initVodClient() throws ClientException {
String regionId = "cn-shanghai"; // Tentukan wilayah tempat ApsaraVideo VOD diaktifkan.
// Pasangan AccessKey dari akun Alibaba Cloud memiliki izin atas semua operasi API. Kami menyarankan Anda menggunakan RAM user untuk memanggil operasi API atau melakukan O&M rutin.
// Kami menyarankan agar Anda tidak menyimpan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) dalam kode proyek Anda. Jika tidak, pasangan AccessKey tersebut dapat bocor, sehingga membahayakan keamanan seluruh sumber daya dalam akun Anda.
// Dalam contoh ini, sistem membaca pasangan AccessKey dari variabel lingkungan untuk menerapkan autentikasi akses API. Sebelum menjalankan contoh kode, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
DefaultProfile profile = DefaultProfile.getProfile(regionId, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
return client;
}
/**
* Kode Contoh
*/
public static void main(String[] args) throws Exception {
DefaultAcsClient client = initVodClient();
AddEditingProjectRequest request = new AddEditingProjectRequest();
// Bangun Timeline Proyek Pengeditan
request.setTimeline(buildTimeline());
// Atur Judul Proyek Pengeditan
request.setTitle("Editing Project Title");
// Atur Deskripsi Proyek Pengeditan
request.setDescription("Editing Project Description");
// Atur URL Sampul Proyek Pengeditan
request.setCoverURL("http://192.168.0.0/16/editingproject/cover/projectid.jpg");
AddEditingProjectResponse response = null;
try {
response = client.getAcsResponse(request);
if (response != null){
if (response.getProject() != null){
System.out.println("ID Proyek Pengeditan:" + response.getProject().getProjectId());
System.out.println("Judul Proyek Pengeditan:" + response.getProject().getTitle());
System.out.println("Waktu Pembuatan Proyek Pengeditan:" + response.getProject().getCreationTime());
System.out.println("Deskripsi Proyek Pengeditan:" + response.getProject().getDescription());
System.out.println("Status Proyek Pengeditan:" + response.getProject().getStatus());
}
// ID Permintaan
System.out.println("RequestId:" + response.getRequestId());
}
} catch (ServerException e){
System.out.println("Kode ServerError:" + e.getErrCode() + ", pesan:" + e.getErrMsg());
} catch (ClientException e){
System.out.println("Kode ClientError:" + e.getErrCode() + ", pesan:" + e.getErrMsg());
} catch (Exception e) {
System.out.println("Pesan Error:" + e.getLocalizedMessage());
}
}
/**
* Contoh ini menunjukkan cara menggabungkan dua video
*/
public static String buildTimeline(){
JSONObject timeline = new JSONObject();
// Trek Video
JSONArray videoTracks = new JSONArray();
JSONObject videoTrack = new JSONObject();
// Klip Trek Video
JSONArray videoTrackClips = new JSONArray();
JSONObject videoTrackClip1 = new JSONObject();
videoTrackClip1.put("MediaId", "11119b4d7cf14dc7b83b0e801cbe****");
videoTrackClips.add(videoTrackClip1);
JSONObject videoTrackClip2 = new JSONObject();
videoTrackClip2.put("MediaId", "22229b4d7cf14dc7b83b0e801cbe****");
videoTrackClips.add(videoTrackClip2);
videoTrack.put("VideoTrackClips", videoTrackClips);
videoTracks.add(videoTrack);
timeline.put("VideoTracks", videoTracks);
return timeline.toString();
}
Ubah proyek pengeditan daring
Panggil UpdateEditingProject untuk mengubah proyek pengeditan daring.
OpenAPI Explorer: UpdateEditingProject.
Contoh kode:
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.UpdateEditingProjectRequest;
import com.aliyuncs.vod.model.v20170321.UpdateEditingProjectResponse;
/**
* Dapatkan informasi AccessKey.
*/
public static DefaultAcsClient initVodClient() throws ClientException {
String regionId = "cn-shanghai"; // Tentukan wilayah tempat ApsaraVideo VOD diaktifkan.
// Pasangan AccessKey dari akun Alibaba Cloud memiliki izin atas semua operasi API. Kami menyarankan Anda menggunakan RAM user untuk memanggil operasi API atau melakukan O&M rutin.
// Kami menyarankan agar Anda tidak menyimpan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) dalam kode proyek Anda. Jika tidak, pasangan AccessKey tersebut dapat bocor, sehingga membahayakan keamanan seluruh sumber daya dalam akun Anda.
// Dalam contoh ini, sistem membaca pasangan AccessKey dari variabel lingkungan untuk menerapkan autentikasi akses API. Sebelum menjalankan contoh kode, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
DefaultProfile profile = DefaultProfile.getProfile(regionId, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
DefaultAcsClient client = new DefaultAcsClient(profile);
return client;
}
/**
* Kode Contoh
*/
public static void main(String[] args) throws Exception {
DefaultAcsClient client = initVodClient();
UpdateEditingProjectRequest request = new UpdateEditingProjectRequest();
request.setProjectId("YourProjectId");
// Atur Timeline Proyek Pengeditan
request.setTimeline(buildTimeline());
// Atur Judul Proyek Pengeditan
request.setTitle("Editing Project Title");
// Atur Deskripsi Proyek Pengeditan
request.setDescription("Editing Project Description");
// Atur URL Sampul Proyek Pengeditan
request.setCoverURL("http://192.168.0.0/16/editingproject/cover/projectid.jpg");
UpdateEditingProjectResponse response = null;
try {
response = client.getAcsResponse(request);
if (response != null){
// ID Permintaan
System.out.println("RequestId:" + response.getRequestId());
}
} catch (ServerException e){
System.out.println("Kode ServerError:" + e.getErrCode() + ", pesan:" + e.getErrMsg());
} catch (ClientException e){
System.out.println("Kode ClientError:" + e.getErrCode() + ", pesan:" + e.getErrMsg());
} catch (Exception e) {
System.out.println("Pesan Error:" + e.getLocalizedMessage());
}
}
/**
* Contoh ini menunjukkan cara menggabungkan dua video
*/
public static String buildTimeline(){
JSONObject timeline = new JSONObject();
// Trek Video
JSONArray videoTracks = new JSONArray();
JSONObject videoTrack = new JSONObject();
// Trek Video
JSONArray videoTrackClips = new JSONArray();
JSONObject videoTrackClip1 = new JSONObject();
videoTrackClip1.put("MediaId", "11119b4d7cf14dc7b83b0e801cbe****");
videoTrackClips.add(videoTrackClip1);
JSONObject videoTrackClip2 = new JSONObject();
videoTrackClip2.put("MediaId", "22229b4d7cf14dc7b83b0e801cbe****");
videoTrackClips.add(videoTrackClip2);
videoTrack.put("VideoTrackClips", videoTrackClips);
videoTracks.add(videoTrack);
timeline.put("VideoTracks", videoTracks);
return timeline.toString();
}
Hapus proyek pengeditan daring
Panggil DeleteEditingProject untuk menghapus proyek pengeditan daring.
OpenAPI Explorer: DeleteEditingProject.
Kueri detail proyek pengeditan daring
Panggil GetEditingProject untuk mengkueri detail proyek pengeditan daring.
OpenAPI Explorer: atau GetEditingProject.
Kueri proyek pengeditan daring
Panggil SearchEditingProject untuk mencari proyek pengeditan daring.
OpenAPI Explorer: atau SearchEditingProject.
Tetapkan materi untuk proyek pengeditan daring
Panggil SetEditingProjectMaterials untuk menetapkan materi bagi proyek pengeditan daring.
OpenAPI Explorer: SetEditingProjectMaterials.
Kueri materi dalam proyek pengeditan daring
Panggil GetEditingProjectMaterials untuk mengkueri materi dalam proyek pengeditan daring.
OpenAPI Explorer: GetEditingProjectMaterials.