All Products
Search
Document Center

ApsaraVideo VOD:Pengeditan video

Last Updated:Jun 03, 2026

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.image.png

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:

Catatan

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.