All Products
Search
Document Center

ApsaraVideo VOD:Atur gambar mini video

Last Updated:Aug 27, 2026

ApsaraVideo for VOD menggunakan snapshot yang diambil secara otomatis sebagai gambar mini video default. Anda dapat menentukan gambar mini kustom selama atau setelah proses upload.

Ikhtisar

Setiap video yang diupload ke ApsaraVideo for VOD memiliki gambar mini.

Jika Anda menentukan gambar mini saat upload, gambar tersebut akan digunakan. Jika tidak, ApsaraVideo for VOD mengambil satu hingga delapan snapshot dan memilih salah satu dari bagian tengah sebagai default (Video snapshots). Anda dapat memperbarui gambar mini setelah upload.

ApsaraVideo for VOD mendukung gambar mini reguler dan gambar mini pintar.

  • Gambar mini reguler: Gambar kustom yang Anda tentukan. Sumbernya mencakup gambar lokal, snapshot video, atau URL yang dapat diakses. Mendukung format statis dan animasi.

  • Gambar mini pintar: Sistem menganalisis konten video dan estetika visual untuk memilih keyframe atau segmen optimal. Mendukung gambar statis dan animasi yang diekstraksi dari video sumber.

Kasus penggunaan

Jenis gambar mini

Metode

Dokumentasi

Atur gambar mini saat upload

Regular thumbnail

OpenAPI

Atur gambar mini saat upload

Perbarui gambar mini setelah upload

Regular thumbnail

  • Console

  • OpenAPI

Perbarui gambar mini setelah upload

Smart thumbnail

OpenAPI

Prasyarat

Atur gambar mini saat upload

Anda hanya dapat menentukan gambar mini saat upload jika menggunakan API atau SDK (Metode upload).

Penting

Parameter CoverURL menerima URL apa pun. ApsaraVideo for VOD menyimpan URL ini dan mengembalikannya saat diminta. Pastikan URL tersebut dapat diakses.

  • Saat memanggil operasi CreateUploadVideo, teruskan parameter CoverURL untuk menentukan URL gambar mini.

  • Saat memanggil operasi UploadMediaByURL, teruskan parameter CoverURL dalam UploadMetadata untuk menentukan URL gambar mini.

Perbarui gambar mini setelah upload

Setelah mengupload video, gunakan metode berikut untuk memperbarui gambar mininya.

Atur gambar mini reguler

Console

Perbarui gambar mini video di konsol ApsaraVideo for VOD menggunakan gambar lokal atau snapshot video.

  1. Login ke konsol ApsaraVideo for VOD.

  2. Pada panel navigasi kiri, pilih Media Files > Audio/Video.

  3. Temukan video yang ingin Anda perbarui dan klik Manage pada kolom Actions.

  4. Pada tab Basic Information, klik Editing Video Information .

    • Pilih salah satu snapshot yang diambil secara otomatis untuk digunakan sebagai gambar mini.

    • Klik Upload untuk memilih gambar lokal sebagai gambar mini.

      Catatan

      Gambar harus berupa file JPG atau PNG, ukuran maksimal 1 MB, dengan resolusi maksimum 1920×1080 piksel.

  5. Klik Save untuk menyelesaikan konfigurasi.

    Kembali ke daftar audio/video untuk memverifikasi pembaruan gambar mini.

OpenAPI

Panggil operasi API berikut untuk memperbarui gambar mini video. URL apa pun yang dapat diakses dapat digunakan sebagai sumber gambar mini.

Penting

Parameter CoverURL menerima URL apa pun. ApsaraVideo for VOD menyimpan URL ini dan mengembalikannya saat diminta. Pastikan URL tersebut dapat diakses.

  • Panggil operasi UpdateVideoInfo dan teruskan CoverURL untuk menentukan URL gambar mini.

  • Panggil operasi UpdateVideoInfos dan teruskan CoverURL dalam UpdateContent untuk menentukan URL gambar mini.

  • Jika video Anda berada di bucket OSS Anda sendiri yang telah didaftarkan ke ApsaraVideo for VOD, panggil operasi RegisterMedia dan teruskan CoverURL dalam RegisterMetadata untuk menentukan URL gambar mini.

Atur gambar mini pintar

Fitur gambar mini pintar menganalisis konten video, estetika visual, dan data produksi ekstensif untuk memilih keyframe atau segmen optimal, sehingga meningkatkan tingkat klik dan pengalaman pengguna.

Catatan

ApsaraVideo for VOD mendukung gambar mini statis dan animasi. Gambar mini video tidak didukung.

  • Penggunaan

    1. Panggil operasi AddAITemplate untuk membuat templat gambar mini pintar. Atur parameter TemplateType menjadi AIImage dan konfigurasikan parameter lain sesuai kebutuhan.

    2. Panggil operasi SubmitAIImageJob untuk mengirim pekerjaan gambar mini pintar. Atur parameter AITemplateId ke ID templat yang telah Anda buat dan konfigurasikan parameter lain sesuai kebutuhan.

Contoh: Atur frame pertama sebagai gambar mini

Ikhtisar proses

  1. Buat templat snapshot untuk mengambil frame pertama video.

  2. Kirim pekerjaan snapshot untuk mengambil frame pertama.

  3. Atur gambar mini video ke snapshot frame pertama yang diambil.

Prosedur

Console

  1. Buat templat snapshot untuk mengambil frame pertama.

    1. Login ke konsol ApsaraVideo for VOD.

    2. Pada panel navigasi kiri, pilih Configuration Management > Media Processing > Snapshot Templates.

    3. Klik Create Snapshot Template. Konfigurasikan parameter untuk mengambil frame pertama.

      Tentukan Template Name kustom. Pilih Normal Snapshot untuk Snapshot Type. Atur Start Time ke 00:00:00 dan Snapshot Count: ke 1. Konfigurasikan parameter lain sesuai kebutuhan (Snapshot templates).

    4. Klik Save untuk membuat templat snapshot.

  2. Kirim pekerjaan snapshot untuk mengambil frame pertama.

    Catatan
    • Untuk mengirim pekerjaan snapshot dari konsol, buat alur kerja dengan node Snapshots dan pilih templat snapshot frame pertama (Kelola alur kerja).

    • Konfigurasikan notifikasi event SnapshotComplete untuk menerima status tugas dan URL gambar yang diambil saat pekerjaan selesai (Pengaturan callback).

    • Skenario 1: Ambil snapshot saat upload video

      1. Di konsol ApsaraVideo for VOD, pilih Media Files > Audio/Video.

      2. Klik Upload Audio/Video, lalu klik Add Audio/Video.

      3. Tentukan metode upload dan lokasi penyimpanan, tambahkan file video, lalu pilih Use Workflow. Pilih alur kerja yang telah Anda buat untuk mengambil frame pertama.

      4. Klik Upload.

    • Skenario 2: Ambil snapshot setelah upload video

      1. Di konsol ApsaraVideo for VOD, pilih Media Files > Audio/Video.

      2. Pada daftar audio/video, temukan video target dan klik Media Processing pada kolom Actions.

      3. Atur Processing Type ke Use Workflow, dan atur parameter Workflows ke alur kerja yang telah Anda buat untuk mengambil frame pertama.

      4. Klik OK.

    • Dapatkan hasil snapshot

      • Jika Anda telah mengonfigurasi notifikasi event SnapshotComplete, Anda dapat memperoleh status tugas dan URL gambar yang diambil dari callback.

      • Jika Anda belum mengonfigurasi notifikasi event, Anda dapat memanggil operasi ListSnapshots secara berkala untuk memeriksa status tugas dan URL gambar yang diambil.

  3. Atur gambar mini video ke snapshot frame pertama.

    Catatan

    Simpan snapshot dari Langkah 2 ke komputer lokal Anda sebelum menguploadnya sebagai gambar mini.

    1. Di konsol ApsaraVideo for VOD, pilih Media Files > Audio/Video.

    2. Pada daftar audio/video, temukan video target dan klik Manage pada kolom Actions.

    3. Pada tab Basic information, klik Editing Video Information .

    4. Klik Upload, pilih snapshot frame pertama yang telah Anda simpan secara lokal, lalu klik Open.

    5. Klik Save untuk mengatur gambar mini video.

      Periksa daftar audio/video untuk memverifikasi pembaruan gambar mini.

OpenAPI

Catatan

Contoh berikut menggunakan Alibaba Cloud SDK untuk Java guna memanggil operasi API ApsaraVideo for VOD.

Prosedur

  1. Buat templat snapshot untuk mengambil frame pertama.

    Panggil operasi AddVodTemplate untuk membuat templat snapshot guna mengambil frame pertama. Kode berikut memberikan contohnya:

    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.aliyuncs.vod.model.v20170321.AddVodTemplateRequest;
    import com.aliyuncs.vod.model.v20170321.AddVodTemplateResponse;
    /**
     * Catatan:
     * 1. Demo ini menunjukkan cara membuat templat untuk mengambil frame pertama sebagai satu snapshot.
     * 2. Kami menyarankan menggunakan konsol ApsaraVideo for VOD untuk membuat templat snapshot guna pengalaman yang lebih nyaman.
     */
    public class AddSnapshotTemplate {
        // Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin atas semua operasi API. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
        // Jangan hard-code ID AccessKey dan AccessKey Secret dalam proyek Anda. Jika tidak, pasangan AccessKey dapat bocor dan keamanan semua sumber daya Anda dapat terganggu.
        // Contoh ini menunjukkan cara menggunakan variabel lingkungan untuk memperoleh pasangan AccessKey guna verifikasi identitas. Sebelum menjalankan kode, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
        public static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        public static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        public static void main(String[] args) {
            try{
                DefaultAcsClient vodClient = initVodClient(accessKeyId, accessKeySecret);
                AddVodTemplateResponse response = addSnapshotTemplate(vodClient);
                System.out.println("RequestId is:" + response.getRequestId());
                System.out.println("TemplateId is:" + response.getVodTemplateId());
            }catch (Exception e){
            }
        }
        public static AddVodTemplateResponse addSnapshotTemplate(DefaultAcsClient vodClient) throws ClientException {
            AddVodTemplateRequest request = new AddVodTemplateRequest();
            request.setName("First-frame snapshot template");
            request.setTemplateType("Snapshot");
            request.setTemplateConfig("{\"SnapshotType\":\"NormalSnapshot\",\"SnapshotConfig\":{\"FrameType\":\"normal\",\"Count\":1,\"Interval\":1,\"SpecifiedOffsetTime\":0}}");
            return vodClient.getAcsResponse(request);
        }
        public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
            // Wilayah tempat ApsaraVideo for VOD diaktifkan.
            String regionId = "cn-shanghai";  
            DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
            DefaultAcsClient client = new DefaultAcsClient(profile);
            return client;
        }
    }
    
  2. Kirim pekerjaan snapshot untuk mengambil frame pertama.

    Panggil operasi SubmitSnapshotJob untuk mengirim pekerjaan snapshot. Kode berikut memberikan contohnya:

    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.aliyuncs.vod.model.v20170321.*;
    /**
     * Catatan:
     * 1. Demo ini menunjukkan cara mengirim pekerjaan snapshot setelah templat snapshot frame pertama dibuat.
     * 2. Untuk video yang baru diupload, kami menyarankan melakukan langkah ini setelah event `VideoAnalysisComplete` berhasil. Untuk video yang sudah ada dengan status Normal, Anda dapat merancang proses sendiri.
     * 3. Snapshot merupakan tugas asinkron. Kami menyarankan menunggu event `SnapshotComplete` berhasil sebelum mengambil URL snapshot.
     * 4. Anda dapat memperkirakan URL output snapshot dari `SnapshotRegular` dalam callback event. Untuk informasi lebih lanjut tentang aturan pembuatan URL, lihat topik `SnapshotComplete`.
     * 5. Jika Anda tidak memiliki layanan callback, Anda juga dapat memanggil operasi `ListSnapshots` untuk memeriksa hasil secara berkala. Operasi ini hanya mengembalikan hasil snapshot terbaru secara default. Untuk informasi lebih lanjut, lihat referensi API `ListSnapshots`.
     */
    public class SubmitSnapshotJob {
        // Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin atas semua operasi API. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
        // Jangan hard-code ID AccessKey dan AccessKey Secret dalam proyek Anda. Jika tidak, pasangan AccessKey dapat bocor dan keamanan semua sumber daya Anda dapat terganggu.
        // Contoh ini menunjukkan cara menggunakan variabel lingkungan untuk memperoleh pasangan AccessKey guna verifikasi identitas. Sebelum menjalankan kode, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
        public static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        public static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        public static void main(String[] args) {
            try{
                DefaultAcsClient vodClient = initVodClient(accessKeyId, accessKeySecret);
                SubmitSnapshotJobResponse response = submitSnapshotJob(vodClient);
                System.out.println("RequestId is:" + response.getRequestId());
                System.out.println("JobId is:" + response.getSnapshotJob().getJobId());
            }catch (Exception e){
            }
        }
        public static SubmitSnapshotJobResponse submitSnapshotJob(DefaultAcsClient vodClient) throws ClientException {
            SubmitSnapshotJobRequest request = new SubmitSnapshotJobRequest();
            request.setVideoId("a42b**********633b79f0102");
            request.setSnapshotTemplateId("1f27a7**********eba2756");
            // Opsional. Parameter pass-through kustom yang tersedia dalam callback. Gunakan ini untuk mengidentifikasi snapshot frame pertama.
            request.setUserData("{\"Extend\":{\"SnapshotType\":\"FirstFrame\",\"VideoId\":\"a42bf540********33b79f0102\"}}");
            return vodClient.getAcsResponse(request);
        }
        public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
            // Wilayah tempat ApsaraVideo for VOD diaktifkan.
            String regionId = "cn-shanghai";  
            DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
            DefaultAcsClient client = new DefaultAcsClient(profile);
            return client;
        }
        // Panggil ListSnapshots untuk mengkueri snapshot.
        public static ListSnapshotsResponse listSnapshots(DefaultAcsClient vodClient) throws ClientException {
            ListSnapshotsRequest request = new ListSnapshotsRequest();
            request.setVideoId("a42bf540b1b371ed804a6633b79****");
            request.setSnapshotType("NormalSnapshot");
            ListSnapshotsResponse response = vodClient.getAcsResponse(request);
            System.out.println("RequestId is:" + response.getRequestId());
            System.out.println("SnapshotUrl is:" + response.getMediaSnapshot().getSnapshots().get(0).getUrl());
            return vodClient.getAcsResponse(request);
        }
    }
    
  3. Atur gambar mini video ke snapshot frame pertama.

    Contoh ini memodifikasi gambar mini satu video setelah upload. Metode lain: Atur gambar mini saat upload video dan Perbarui gambar mini setelah upload video.

    Panggil operasi UpdateVideoInfo dan teruskan parameter CoverURL untuk menentukan gambar mini video. Kode berikut memberikan contohnya:

    package com.alibaba.bltest.transcode;
    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.aliyuncs.vod.model.v20170321.UpdateVideoInfoRequest;
    import com.aliyuncs.vod.model.v20170321.UpdateVideoInfoResponse;
    /**
     * Catatan:
     * 1. Demo ini menunjukkan cara memperbarui gambar mini satu video. Untuk memodifikasi parameter video lain, lihat referensi API `UpdateVideoInfo`.
     * 2. Saat memperbarui gambar mini, pastikan URL gambar yang Anda berikan valid.
     */
    public class UpdateVideoInfo {
        // Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin atas semua operasi API. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
        // Jangan hard-code ID AccessKey dan AccessKey Secret dalam proyek Anda. Jika tidak, pasangan AccessKey dapat bocor dan keamanan semua sumber daya Anda dapat terganggu.
        // Contoh ini menunjukkan cara menggunakan variabel lingkungan untuk memperoleh pasangan AccessKey guna verifikasi identitas. Sebelum menjalankan kode, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
        public static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        public static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        public static void main(String[] args) {
            try{
                DefaultAcsClient vodClient = initVodClient(accessKeyId, accessKeySecret);
                UpdateVideoInfoResponse response = updateVideoInfo(vodClient);
                System.out.println("RequestId is:" + response.getRequestId());
            }catch (Exception e){
            }
        }
        public static UpdateVideoInfoResponse updateVideoInfo(DefaultAcsClient vodClient) throws ClientException {
            UpdateVideoInfoRequest request = new UpdateVideoInfoRequest();
            request.setVideoId("a42b***********33b79f0102");
            // Saat mengatur gambar mini frame pertama, atur `CoverURL` ke URL gambar yang dihasilkan setelah pekerjaan snapshot frame pertama berhasil.
            request.setCoverURL("http://demo.aliyuncdn.com/a42bf5******40b1b37/snapshots/normal/41B7AF54-18672BB301D-1748-0984-309-112420****.jpg");
            return vodClient.getAcsResponse(request);
        }
        public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
            // Wilayah tempat ApsaraVideo for VOD diaktifkan.
            String regionId = "cn-shanghai";  
            DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
            DefaultAcsClient client = new DefaultAcsClient(profile);
            return client;
        }
    }
    

Contoh lengkap

package com.alibaba.bltest.transcode;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.*;
import org.apache.commons.lang3.StringUtils;
/**
 * Catatan:
 * 1. Demo ini menyediakan logika lengkap untuk mengambil snapshot dan memperbarui gambar mini. Anda harus menyesuaikan bagian kode tertentu dengan logika bisnis Anda.
 * 2. Demo ini tidak dapat dijalankan langsung. Anda harus menambahkan logika yang diperlukan.
 * 3. Demo ini hanya sebagai referensi dan bukan satu-satunya metode implementasi.
 */
public class SnapshotAndUpdateCover {
    // Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin atas semua operasi API. Kami menyarankan Anda menggunakan Pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
    // Jangan hard-code ID AccessKey dan AccessKey Secret dalam proyek Anda. Jika tidak, pasangan AccessKey dapat bocor dan keamanan semua sumber daya Anda dapat terganggu.
    // Contoh ini menunjukkan cara menggunakan variabel lingkungan untuk memperoleh pasangan AccessKey guna verifikasi identitas. Sebelum menjalankan kode, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
    public static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    public static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    public static void main(String[] args) {
        try{
            DefaultAcsClient vodClient = initVodClient(accessKeyId, accessKeySecret);
            // ID Video
            String videoId = "a42bf540b1b37*******b79f0102";
            // Skenario 1: Anda memiliki layanan callback atau menggunakan Message Service (MNS).
            // Jika Anda mengatur gambar mini untuk video yang baru diupload, Anda harus terlebih dahulu menerima event keberhasilan analisis video.
            // Jika Anda mengatur gambar mini untuk video yang sudah ada, Anda dapat langsung mengirim pekerjaan snapshot dari langkah ini.
            submitSnapshotJob(vodClient,videoId);
            // Setelah menerima callback event `SnapshotComplete`, tentukan jenis snapshot dan ambil URL gambar yang diperlukan.
            JSONObject callBackMessage = new JSONObject();  // Ganti ini dengan pesan yang diterima oleh layanan callback.
            String snapshotType = callBackMessage.getJSONObject("UserData").getJSONObject("Extend").getString("SnapshotType");
            if("FirstFrame".equals(snapshotType)){
                // Ganti logika path snapshot di sini dengan logika kustom Anda.
                String coverUrl = callBackMessage.getJSONArray("SnapshotInfos").getJSONObject(0).getString("SnapshotRegular").replace("{SnapshotCount}","00001");
                // Perbarui gambar mini video.
                updateVideoInfo(vodClient,videoId,coverUrl);
            }
            // Skenario 2: Anda tidak memiliki layanan callback atau menggunakan MNS.
            // Jika Anda mengatur gambar mini untuk video yang baru diupload, polling status video setelah upload.
            String videoStatus = "";
            while(!"Normal".equals(videoStatus)){
                videoStatus = getVideoInfo(vodClient,videoId);
                Thread.sleep(1000);
            }
            // Jika Anda mengatur gambar mini untuk video yang sudah ada, Anda dapat langsung mengirim pekerjaan snapshot dari langkah ini.
            submitSnapshotJob(vodClient,videoId);
            // Polling hasil snapshot.
            String coverUrl = "";
            while(StringUtils.isBlank(coverUrl)){
                coverUrl = listSnapshots(vodClient,videoId);
                Thread.sleep(1000);
            }
            // Perbarui gambar mini video.
            updateVideoInfo(vodClient,videoId,coverUrl);
        }catch (Exception e){
        }
    }
    /**
     * Kirim pekerjaan snapshot.
     */
    public static SubmitSnapshotJobResponse submitSnapshotJob(DefaultAcsClient vodClient, String vid) throws ClientException {
        SubmitSnapshotJobRequest request = new SubmitSnapshotJobRequest();
        request.setVideoId(vid);
        request.setSnapshotTemplateId("1f27a7f*********70eba2756");
        // Opsional. Parameter pass-through kustom yang tersedia dalam callback. Gunakan ini untuk mengidentifikasi snapshot frame pertama.
        request.setUserData("{\"Extend\":{\"SnapshotType\":\"FirstFrame\",\"VideoId\":\"a42bf540********33b79f0102\"}}");
        return vodClient.getAcsResponse(request);
    }
    /**
     * Perbarui gambar mini video.
     */
    public static UpdateVideoInfoResponse updateVideoInfo(DefaultAcsClient vodClient, String vid, String coverUrl) throws ClientException {
        UpdateVideoInfoRequest request = new UpdateVideoInfoRequest();
        request.setVideoId(vid);
        // Saat mengatur gambar mini frame pertama, atur `CoverURL` ke URL gambar yang dihasilkan setelah pekerjaan snapshot frame pertama berhasil.
        request.setCoverURL(coverUrl);
        return vodClient.getAcsResponse(request);
    }
    /**
     * Inisialisasi instance SDK.
     */
    public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
        // Wilayah tempat ApsaraVideo for VOD diaktifkan.
        String regionId = "cn-shanghai";  
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        return client;
    }
    /**
     * Kueri snapshot.
     */
    public static String listSnapshots(DefaultAcsClient vodClient, String vid) throws ClientException {
        ListSnapshotsRequest request = new ListSnapshotsRequest();
        request.setVideoId(vid);
        request.setSnapshotType("NormalSnapshot");
        ListSnapshotsResponse response = vodClient.getAcsResponse(request);
        String coverUrl = "";
        System.out.println("RequestId is:" + response.getRequestId());
        try{
            coverUrl = response.getMediaSnapshot().getSnapshots().get(0).getUrl();
            System.out.println("SnapshotUrl is:" + response.getMediaSnapshot().getSnapshots().get(0).getUrl());
        }catch (NullPointerException e){
        }
        return coverUrl;
    }
    /**
     * Kueri satu video.
     */
    public static String getVideoInfo(DefaultAcsClient vodClient, String vid) throws ClientException {
        GetVideoInfoRequest request = new GetVideoInfoRequest();
        request.setVideoId(vid);
        GetVideoInfoResponse response = vodClient.getAcsResponse(request);
        System.out.println("RequestId is:" + response.getRequestId());
        String videoStatus = "";
        try{
            videoStatus = response.getVideo().getStatus();
            System.out.println("Video Status is:" + response.getVideo().getStatus());
        }catch (NullPointerException e){
        }
        return videoStatus;
    }
}