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.
-
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.
-
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.
-
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();
Penghapusan sinkron hanya mengembalikan hasil setelah semua sumber daya player dilepas. Untuk responsivitas UI yang lebih baik, gunakan penghapusan asinkron. Perhatikan hal-hal berikut:
-
Jangan melakukan operasi lain pada objek player selama proses penghapusan asinkron.
-
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.
-
Untuk pemutaran manual, Anda harus menyetel pendengar
OnPrepared. Hal ini karena Anda perlu memanggil metodeplaydalam callbackOnPrepareduntuk memulai pemutaran. -
Pendengar
OnTrackReadydanOnErrorsangat 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);
Fitur log tingkat frame terutama digunakan untuk troubleshooting.