All Products
Search
Document Center

ApsaraVideo VOD:Fitur dasar

Last Updated:Aug 05, 2026

Gunakan fitur dasar ApsaraVideo Player SDK untuk Flutter, termasuk kontrol pemutaran, pengaturan tampilan, penyesuaian volume dan kecepatan, serta penggantian definisi. Untuk informasi lebih lanjut, lihat Fitur lanjutan dan referensi API.

Setel sumber data (DataSource)

  • ApsaraVideo Player SDK untuk Flutter mendukung empat metode pemutaran VOD: VidAuth (direkomendasikan), VidSts, UrlSource, dan pemutaran terenkripsi.

  • ApsaraVideo Player SDK untuk Flutter hanya mendukung satu metode pemutaran live streaming: UrlSource.

Pemutaran VOD

Pemutaran VOD menggunakan VidAuth (Direkomendasikan)

Untuk memutar video VOD menggunakan VidAuth, atur `vid` ke ID audio atau video dan `playauth` ke kredensial pemutaran.

  1. Setelah file audio atau video diunggah, Anda dapat memperoleh ID-nya di konsol ApsaraVideo VOD dengan memilih Media Library > Audio/Video, atau dengan memanggil operasi SearchMedia.

  2. Anda dapat memperoleh kredensial pemutaran dengan memanggil operasi GetVideoPlayAuth. Kami merekomendasikan penggunaan SDK untuk memperoleh kredensial pemutaran guna menghindari penandatanganan manual. Contoh cara memanggil operasi ini tersedia di Developer Portal.

Kami merekomendasikan pengguna ApsaraVideo VOD untuk menggunakan metode pemutaran ini. VidAuth lebih aman dan lebih mudah digunakan dibandingkan VidSts. Untuk perbandingan detail, lihat Perbandingan antara metode berbasis kredensial dan metode berbasis STS.

void onViewPlayerCreated(viewId) async {
  // Setel tampilan yang dirender untuk player.
  fAliplayer.setPlayerView(viewId);
  // Catatan: Sebelum memanggil generatePlayerConfig, Anda harus memanggil createVidPlayerConfigGenerator() dan setPreviewTime().
  FlutterAliplayer.createVidPlayerConfigGenerator();
  FlutterAliplayer.setPreviewTime(0);
  // Setel sumber pemutaran.
  FlutterAliplayer.generatePlayerConfig().then((value) {
      fAliplayer.setVidAuth(
          vid: "Your Vid",// Wajib. ID video (VideoId).
          region: "Your Region",// Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default: cn-shanghai.
          playAuth: "<yourPlayAuth>",// Wajib. Kredensial pemutaran. Anda harus memanggil operasi GetVideoPlayAuth ApsaraVideo VOD untuk menghasilkan kredensial ini.
          playConfig: value);
        });    
  }
}

Pemutaran VOD menggunakan VidSts

Untuk memutar video VOD menggunakan VidSts, gunakan kredensial sementara dari Security Token Service (STS) alih-alih kredensial pemutaran VOD. Peroleh token STS dan pasangan AccessKey sementara (AccessKeyId dan AccessKeySecret) terlebih dahulu. Untuk informasi selengkapnya, lihat Memperoleh token STS.

void onViewPlayerCreated(viewId) async {
  // Setel tampilan yang dirender untuk player.
  fAliplayer.setPlayerView(viewId);
  // Catatan: Sebelum memanggil generatePlayerConfig, Anda harus memanggil createVidPlayerConfigGenerator() dan setPreviewTime().
  FlutterAliplayer.createVidPlayerConfigGenerator();
  FlutterAliplayer.setPreviewTime(0);
  // Pemutaran menggunakan VidSts.
  FlutterAliplayer.generatePlayerConfig().then((value) {
     fAliplayer.setVidSts(
          vid: "Your Vid",// Wajib. ID video (VideoId).
          region: "Your Region",// Wajib. Wilayah tempat ApsaraVideo VOD diaktifkan. Nilai default: cn-shanghai.
          accessKeyId: "<yourAccessKeyId>",// Wajib. ID AccessKey dari pasangan AccessKey sementara. Anda harus memanggil operasi AssumeRole STS untuk menghasilkan ID AccessKey ini.
          accessKeySecret: "<yourAccessKeySecret>",// Wajib. Rahasia AccessKey dari pasangan AccessKey sementara. Anda harus memanggil operasi AssumeRole STS untuk menghasilkan rahasia AccessKey ini.
          securityToken: "<yourSecurityToken>",// Wajib. Token STS. Anda harus memanggil operasi AssumeRole STS untuk menghasilkan token ini.
      	  playConfig: value);
    	});
       
}

Pemutaran VOD menggunakan UrlSource

Untuk memutar video VOD menggunakan UrlSource, atur `setUrl` ke URL pemutaran. URL tersebut dapat berupa URL pihak ketiga atau URL pemutaran dari ApsaraVideo VOD.

Anda dapat memperoleh URL pemutaran Alibaba Cloud dengan memanggil operasi GetPlayInfo. Kami merekomendasikan penggunaan SDK untuk memperoleh URL pemutaran guna menghindari penandatanganan manual. Contohnya tersedia di Developer Portal.

void onViewPlayerCreated(viewId) async {
  // Setel tampilan yang dirender untuk player.
  fAliplayer.setPlayerView(viewId);
  // Setel sumber pemutaran.
  switch (_playMode) {
      // Pemutaran menggunakan UrlSource.
    case ModeType.URL:
      this.fAliplayer.setUrl("Playback URL"); // Wajib. URL pemutaran. URL dapat berupa URL VOD pihak ketiga atau URL pemutaran dari ApsaraVideo VOD.
      break;
    default:
  }
}

Pemutaran VOD terenkripsi

ApsaraVideo VOD mendukung enkripsi HLS, enkripsi privat Alibaba Cloud, dan enkripsi DRM. Untuk informasi selengkapnya tentang pemutaran terenkripsi, lihat Memutar video terenkripsi di Flutter.

Pemutaran live stream

Untuk informasi selengkapnya, lihat ApsaraVideo Player untuk Flutter.

Catatan
  • UrlSource menggunakan URL untuk pemutaran. VidSts dan VidAuth menggunakan ID video (VID) untuk pemutaran.

  • Untuk informasi selengkapnya tentang cara menyetel wilayah, lihat Wilayah VOD.

Kontrol pemutaran

ApsaraVideo Player SDK untuk Flutter mendukung operasi umum seperti memulai, menjeda, dan mencari ke waktu tertentu.

Putar otomatis

Gunakan metode setAutoPlay untuk mengaktifkan putar otomatis. Putar otomatis dinonaktifkan secara default. Contoh:

fAliplayer.setAutoPlay(true);

Persiapkan pemutaran

Panggil metode prepare untuk mulai membaca dan mengurai data untuk pemutaran. Jika putar otomatis diaktifkan, video akan diputar secara otomatis setelah data selesai diurai. Contoh:

fAliplayer.prepare();

Mulai pemutaran

Gunakan metode play untuk memulai pemutaran. Contoh:

 fAliplayer.play();

Mulai pemutaran dari waktu tertentu

Gunakan metode seekTo untuk melompat ke waktu tertentu. Ini berguna untuk menyeret bilah progres atau melanjutkan pemutaran dari posisi yang disimpan. Contoh:

// position adalah waktu yang ditentukan dalam milidetik. Nilai valid untuk seekMode: FlutterAvpdef.ACCURATE (pencarian akurat) dan FlutterAvpdef.INACCURATE (pencarian tidak akurat).
fAliplayer.seekTo(position,seekMode);

Untuk memulai pemutaran dari posisi tertentu, panggil metode ini sebelum memanggil prepare. Contoh:

// Setel waktu mulai dalam milidetik untuk persiapan player berikutnya. Pengaturan ini hanya berlaku untuk panggilan prepare berikutnya.
// Setelah prepare dipanggil, nilai ini secara otomatis diatur ulang menjadi nol. Jika metode ini tidak dipanggil lagi sebelum prepare berikutnya, pemutaran dimulai secara normal.
// Anda dapat mengatur seekMode ke mode akurat atau tidak akurat.
fAliplayer.setStartTime(time, seekMode);

Jeda pemutaran

Gunakan metode pause untuk menjeda pemutaran. Contoh:

fAliplayer.pause();

Lanjutkan pemutaran

Gunakan metode play untuk melanjutkan pemutaran. Contoh:

fAliplayer.play();

Hentikan pemutaran

Gunakan metode stop untuk menghentikan pemutaran. Contoh:

fAliplayer.stop();

Hancurkan pemain

Hapus instans player secara sinkron atau asinkron. Contoh:

// Penghapusan sinkron. Metode stop dipanggil secara internal secara otomatis.
fAliplayer.destroy();
// Penghapusan asinkron. Metode stop dipanggil secara internal secara otomatis.
fAliplayer.releaseAsync();
Catatan

Penghapusan sinkron hanya mengembalikan hasil setelah semua sumber daya player dilepas. Untuk responsivitas UI yang lebih baik, gunakan penghapusan asinkron. Perhatikan hal-hal berikut:

  1. Jangan melakukan operasi lain pada objek player selama proses penghapusan asinkron.

  2. Anda tidak perlu menghentikan player secara manual sebelum memanggil metode penghapusan asinkron karena metode tersebut sudah mencakup prosedur penghentian asinkron.

Dengarkan status player

ApsaraVideo Player SDK untuk Flutter memungkinkan Anda menyetel pendengar player untuk memantau status player.

Atur pendengar player

Anda dapat menyetel beberapa pendengar untuk player.

  1. Untuk pemutaran manual, Anda harus menyetel pendengar OnPrepared. Hal ini karena Anda perlu memanggil metode play dalam callback OnPrepared untuk memulai pemutaran.

  2. Pendengar OnTrackReady dan OnError sangat penting. Kami merekomendasikan agar Anda menyetelnya.

Contoh berikut menunjukkan beberapa pendengar yang tersedia:

// Persiapan berhasil.
fAliplayer.setOnPrepard((playerId) {});
// Frame pertama ditampilkan.
fAliplayer.setOnRenderingStart((playerId) {});
// Lebar dan tinggi video berubah.
fAliplayer.setOnVideoSizeChanged((width, height,playerId) {});
// Status player berubah.
fAliplayer.setOnStateChanged((newState,playerId) {});
// Status pemuatan.
fAliplayer.setOnLoadingStatusListener(
    loadingBegin: (playerId) {},
    loadingProgress: (percent, netSpeed,playerId) {},
    loadingEnd: (playerId) {});
// Pencarian selesai.
fAliplayer.setOnSeekComplete((playerId) {});
// Callback untuk informasi event player, termasuk buffer dan progres pemutaran saat ini. Informasi ditentukan oleh infoCode, yang sesuai dengan FlutterAvpdef.infoCode.
fAliplayer.setOnInfo((infoCode, extraValue, extraMsg,playerId) {});
// Pemutaran selesai.
fAliplayer.setOnCompletion((playerId) {});
// Aliran siap.
fAliplayer.setOnTrackReady((playerId) {});
// Hasil tangkapan layar.
fAliplayer.setOnSnapShot((path,playerId) {});
// Hasil error.
fAliplayer.setOnError((errorCode, errorExtra, errorMsg,playerId) {});
// Aliran dialihkan.
fAliplayer.setOnTrackChanged((value,playerId) {});

Dengarkan status pemutaran

Dengarkan perubahan status player. Callback `onStateChanged` menyediakan status saat ini. Contoh:

fAliplayer.setOnStateChanged((newState, playerId) {
  // newState adalah status pemutaran.
  switch (newState) {
    case FlutterAvpdef.AVPStatus_AVPStatusIdle: // Idle
      break;
    case FlutterAvpdef.AVPStatus_AVPStatusInitialzed: // Inisialisasi selesai.
      break;
    case FlutterAvpdef.AVPStatus_AVPStatusPrepared: // Persiapan selesai.
      break;
    case FlutterAvpdef.AVPStatus_AVPStatusStarted: // Sedang diputar.
      break;
    case FlutterAvpdef.AVPStatus_AVPStatusPaused: // Dijeda.
      break;
    case FlutterAvpdef.AVPStatus_AVPStatusStopped: // Dihentikan.
      break;
    case FlutterAvpdef.AVPStatus_AVPStatusCompletion: // Pemutaran selesai.
      break;
    case FlutterAvpdef.AVPStatus_AVPStatusError: // Terjadi error.
      break;
    default:
  }
});

Setel mode tampilan

ApsaraVideo Player SDK untuk Flutter mendukung pengaturan tampilan seperti fill, rotasi, dan pencerminan.

Fill

SDK mendukung tiga mode fill: aspect fit, aspect fill, dan scale to fill. Gunakan metode setScalingMode untuk menyetel mode fill. Contoh:

// Setel mode ke aspect fit. Video diskalakan secara proporsional agar muat dalam tampilan tanpa distorsi.
fAliplayer.setScalingMode(ScaleMode.SCALE_ASPECT_FIT);
// Setel mode ke aspect fill. Video diskalakan secara proporsional agar mengisi tampilan tanpa distorsi.
fAliplayer.setScalingMode(ScaleMode.SCALE_ASPECT_FILL);
// Setel mode ke scale to fill. Video mungkin mengalami distorsi jika rasio aspeknya tidak sesuai dengan rasio aspek tampilan.
fAliplayer.setScalingMode(ScaleMode.SCALE_TO_FILL);

Rotasi

Gunakan metode setRotateMode untuk memutar video dengan sudut tertentu. Anda juga dapat mengambil sudut rotasi setelah menyetelnya. Contoh:

// Putar video 0 derajat searah jarum jam.
fAliplayer.setRotateMode(RotateMode.ROTATE_0);
// Putar video 90 derajat searah jarum jam.
fAliplayer.setRotateMode(RotateMode.ROTATE_90);
// Putar video 180 derajat searah jarum jam.
fAliplayer.setRotateMode(RotateMode.ROTATE_180);
// Putar video 270 derajat searah jarum jam.
fAliplayer.setRotateMode(RotateMode.ROTATE_270);
// Dapatkan sudut rotasi.
fAliplayer.getRotateMode();

Pencerminan

SDK mendukung pencerminan horizontal, pencerminan vertikal, dan tanpa pencerminan. Gunakan metode setMirrorMode untuk mengonfigurasi pencerminan. Contoh:

// Setel tanpa pencerminan.
fAliplayer.setMirrorMode(MirrorMode.MIRROR_MODE_NONE);
// Setel pencerminan horizontal.
fAliplayer.setMirrorMode(MirrorMode.MIRROR_MODE_HORIZONTAL);
// Setel pencerminan vertikal.
fAliplayer.setMirrorMode(MirrorMode.MIRROR_MODE_VERTICAL);

Dapatkan informasi pemutaran

Ambil progres pemutaran saat ini dan durasi video menggunakan ApsaraVideo Player SDK untuk Flutter.

Peroleh progres pemutaran saat ini

Peroleh waktu pemutaran saat ini dalam milidetik dari callback `onInfo`. Contoh:

fAliplayer.setOnInfo((infoCode,extraValue,extraMsg,playerId){
 if(infoCode==FlutterAvpdef.CURRENTPOSITION){
 // extraValue adalah progres pemutaran saat ini.
}
});

Peroleh durasi video

Peroleh total durasi video setelah video dimuat, misalnya setelah event `AVPEventPrepareDone`. Contoh:

fAliplayer.getMediaInfo().then((value){
 _videoDuration=value['duration'];
});

Setel volume

Pengaturan volume mencakup penyesuaian volume dan pembisuan.

Penyesuaian volume

Sesuaikan volume menggunakan metode setVolume. Rentang yang didukung adalah 0 hingga 2. Nilai lebih besar dari 1 tidak direkomendasikan karena dapat menyebabkan kebisingan. Contoh:

// Nilai volume adalah bilangan real dari 0 hingga 2.
fAliPlayer.setVolume(1);
// Dapatkan informasi volume.
fAliPlayer.getVolume();

Pengaturan pembisuan

Gunakan metode setMute untuk membisukan player. Contoh:

fAliplayer.setMute(true);

Ubah kecepatan pemutaran

ApsaraVideo Player SDK untuk Flutter memungkinkan Anda mengubah kecepatan pemutaran. Gunakan metode setSpeed untuk memutar dengan kecepatan 0,5x hingga 5x kecepatan normal. Nada audio tetap tidak berubah. Contoh:

// Setel kecepatan pemutaran. Kecepatan dari 0,5x hingga 5x didukung. Kecepatan biasanya diatur dalam kelipatan 0,5, seperti 0,5x, 1x, dan 1,5x.
fAliplayer.setSpeed(1.0);

Pengaturan multi-definisi

Jika Anda menggunakan metode berbasis VID (VidAuth atau VidSts) untuk pemutaran, tidak diperlukan pengaturan tambahan. SDK mengambil daftar definisi dari ApsaraVideo VOD secara otomatis. Anda dapat mengambil dan mengganti definisi. Pengaturan ini tidak didukung untuk pemutaran UrlSource.

Ambil definisi

Setelah video dimuat, ambil definisi video.

fAliplayer.setOnPrepared((playerId) {
  fAliplayer.getMediaInfo().then((value){
        AVPMediaInfoinfo info=AVPMediaInfo.fromJson(value);
        info.tracks.forEach((element){
          if(element.trackType==3){
            // Definisi
            String definition=element.trackDefinition;
            // Indeks aliran
            int index=element.trackIndex;
          }
        });
      });    
});

Ganti definisi

Gunakan metode selectTrack untuk mengganti definisi. Berikan indeks TrackInfo yang sesuai.

fAliplayer.selectTrack(trackIdx);

Notifikasi pergantian definisi

Callback ini dipicu setelah pergantian definisi berhasil.

fAliplayer.setOnTrackChanged((value,playerId){
 // Callback menunjukkan bahwa pergantian berhasil. Metode untuk pergantian yang gagal belum tersedia.
});

Putar ulang berulang

ApsaraVideo Player SDK untuk Flutter menyediakan fitur putar ulang berulang. Panggil setLoop untuk mengaktifkan putar ulang berulang. Setelah video selesai, pemutaran akan dimulai kembali dari awal secara otomatis. Contoh:

fAliplayer.setLoop(true);

Callback awal perulangan mengirimkan notifikasi melalui onInfo. Contoh:

fAliplayer.setOnInfo((infoCode, extraValue, extraMsg, playerId) {
 if(infoCode == FlutterAvpdef.LOOPINGSTART){
 // Notifikasi awal putar ulang berulang
 }
});

Dapatkan log pemutaran

ApsaraVideo Player SDK untuk Flutter memungkinkan Anda memperoleh log pemutaran. Panggil enableConsoleLog untuk mengaktifkan pencetakan log. Contoh:

// Aktifkan pencetakan log.
FlutterAliplayer.enableConsoleLog(true);
// Setel tingkat log. Tingkat default adalah AF_LOG_LEVEL_INFO. Untuk troubleshooting, Anda dapat mengaturnya ke AF_LOG_LEVEL_TRACE.
FlutterAliplayer.setLogLevel(FlutterAvpdef.AF_LOG_LEVEL_INFO);

ApsaraVideo Player SDK untuk Flutter memungkinkan Anda memperoleh log tingkat frame. Panggil `setLogOption` untuk mengonfigurasi pencetakan log tingkat frame. Contoh:

/// Setel tingkat log. Untuk troubleshooting, atur tingkat log ke AF_LOG_LEVEL_TRACE.
FlutterAliplayer.setLogLevel(LogLevel.AF_LOG_LEVEL_INFO);
/// Aktifkan atau nonaktifkan log.
FlutterAliplayer.enableConsoleLog(true);
/// Informasi callback log.
FlutterAliplayer.setLogInfoCallBack((level, msg) {
   print("[LOG][LEVEL][$level] $msg");
});
/// Aktifkan callback log frame. Biasanya diaktifkan untuk troubleshooting.
/// Nilai opsi: 0 berarti dinonaktifkan, 1 berarti diaktifkan.
FlutterAliplayer.setLogOption(value);
Catatan

Fitur log tingkat frame terutama digunakan untuk troubleshooting.