Memulai
Instalasi
Section titled “Instalasi”npm install @capgo/capacitor-jw-playernpx cap syncyarn add @capgo/capacitor-jw-playernpx cap syncpnpm add @capgo/capacitor-jw-playernpx cap syncbun add @capgo/capacitor-jw-playernpx cap syncPrasyarat
Section titled “Prasyarat”Anda memerlukan akun JW Player dan license key untuk menggunakan plugin ini. Daftar di JW Player jika Anda belum memilikinya.
Konfigurasi Platform
Section titled “Konfigurasi Platform”Tambahkan license key JW Player Anda ke Info.plist:
<key>JWPlayerLicenseKey</key><string>YOUR_LICENSE_KEY</string>Android
Section titled “Android”Tambahkan license key JW Player Anda ke android/app/src/main/res/values/strings.xml:
<resources> <string name="jw_player_license_key">YOUR_LICENSE_KEY</string></resources>Contoh Penggunaan
Section titled “Contoh Penggunaan”import { JWPlayer } from '@capgo/capacitor-jw-player';
// Putar satu videoawait JWPlayer.playVideo({ mediaUrl: 'https://example.com/video.mp4', title: 'Video Saya', description: 'Deskripsi video', poster: 'https://example.com/poster.jpg'});
// Putar playlistawait JWPlayer.playPlaylist({ playlistUrl: 'https://example.com/playlist.json'});
// Dengarkan event playerJWPlayer.addListener('playerReady', () => { console.log('Player siap');});
JWPlayer.addListener('play', (data) => { console.log('Video mulai diputar');});
JWPlayer.addListener('pause', (data) => { console.log('Video dijeda');});
JWPlayer.addListener('complete', (data) => { console.log('Pemutaran video selesai');});
JWPlayer.addListener('error', (error) => { console.error('Error player:', error);});Referensi API
Section titled “Referensi API”playVideo(options)
Section titled “playVideo(options)”playVideo(options: VideoOptions) => Promise<void>Putar satu video dalam mode layar penuh.
| Param | Type |
|---|---|
options | VideoOptions |
playPlaylist(options)
Section titled “playPlaylist(options)”playPlaylist(options: PlaylistOptions) => Promise<void>Putar playlist dalam mode layar penuh.
| Param | Type |
|---|---|
options | PlaylistOptions |
pause()
Section titled “pause()”pause() => Promise<void>Jeda video saat ini.
play()
Section titled “play()”play() => Promise<void>Lanjutkan pemutaran video.
seek(options)
Section titled “seek(options)”seek(options: { position: number }) => Promise<void>Seek ke posisi tertentu di video.
| Param | Type |
|---|---|
options | { position: number } |
setPlaybackSpeed(options)
Section titled “setPlaybackSpeed(options)”setPlaybackSpeed(options: { speed: number }) => Promise<void>Atur kecepatan pemutaran.
| Param | Type |
|---|---|
options | { speed: number } |
setVolume(options)
Section titled “setVolume(options)”setVolume(options: { volume: number }) => Promise<void>Atur volume audio (0.0 hingga 1.0).
| Param | Type |
|---|---|
options | { volume: number } |
selectAudioTrack(options)
Section titled “selectAudioTrack(options)”selectAudioTrack(options: { trackIndex: number }) => Promise<void>Pilih track audio berdasarkan indeks.
| Param | Type |
|---|---|
options | { trackIndex: number } |
selectCaptionTrack(options)
Section titled “selectCaptionTrack(options)”selectCaptionTrack(options: { trackIndex: number }) => Promise<void>Pilih track caption/subtitle berdasarkan indeks.
| Param | Type |
|---|---|
options | { trackIndex: number } |
stop()
Section titled “stop()”stop() => Promise<void>Hentikan pemutaran dan tutup player.
Interface
Section titled “Interface”VideoOptions
Section titled “VideoOptions”| Prop | Type | Description |
|---|---|---|
mediaUrl | string | URL file video |
title | string | Judul video (opsional) |
description | string | Deskripsi video (opsional) |
poster | string | URL poster/thumbnail (opsional) |
autoStart | boolean | Mulai pemutaran otomatis (opsional, default: true) |
PlaylistOptions
Section titled “PlaylistOptions”| Prop | Type | Description |
|---|---|---|
playlistUrl | string | URL playlist JSON JW |
autoStart | boolean | Mulai pemutaran otomatis (opsional) |
Event Listener
Section titled “Event Listener”Event yang Tersedia
Section titled “Event yang Tersedia”playerReady- Player diinisialisasi dan siapplay- Pemutaran video dimulaipause- Pemutaran video dijedacomplete- Pemutaran video selesaierror- Player mengalami errorseek- Pengguna seek ke posisi berbedatime- Waktu pemutaran diperbaruibufferChange- Status buffer berubah
Contoh Event
Section titled “Contoh Event”// Dengarkan update waktuJWPlayer.addListener('time', (data) => { console.log('Waktu saat ini:', data.position); console.log('Durasi:', data.duration);});
// Dengarkan perubahan bufferJWPlayer.addListener('bufferChange', (data) => { console.log('Buffering:', data.buffering);});
// Hapus listener saat selesaiconst listener = await JWPlayer.addListener('play', (data) => { console.log('Playing');});
// Kemudian...listener.remove();Penggunaan Lanjutan
Section titled “Penggunaan Lanjutan”Memutar dengan Caption
Section titled “Memutar dengan Caption”await JWPlayer.playVideo({ mediaUrl: 'https://example.com/video.mp4', title: 'Video dengan Subtitle', poster: 'https://example.com/poster.jpg', tracks: [ { file: 'https://example.com/captions-en.vtt', label: 'English', kind: 'captions' }, { file: 'https://example.com/captions-es.vtt', label: 'Spanish', kind: 'captions' } ]});Kontrol Pemutaran Kustom
Section titled “Kontrol Pemutaran Kustom”import { JWPlayer } from '@capgo/capacitor-jw-player';
// Mulai memutarawait JWPlayer.play();
// Jeda setelah 10 detiksetTimeout(() => { JWPlayer.pause();}, 10000);
// Seek ke 30 detikawait JWPlayer.seek({ position: 30 });
// Atur kecepatan pemutaran ke 1.5xawait JWPlayer.setPlaybackSpeed({ speed: 1.5 });
// Atur volume ke 50%await JWPlayer.setVolume({ volume: 0.5 });Praktik Terbaik
Section titled “Praktik Terbaik”- Selalu sediakan gambar poster untuk pengalaman pengguna yang lebih baik
- Tangani error player dengan anggun dengan pesan error yang sesuai
- Bersihkan event listener saat komponen unmount
- Uji pemutaran video di perangkat iOS dan Android
- Gunakan format video yang sesuai (MP4 direkomendasikan)
- Implementasikan loading state saat video diinisialisasi
- Pertimbangkan kondisi jaringan saat streaming
Pemecahan Masalah
Section titled “Pemecahan Masalah”Video Tidak Diputar
Section titled “Video Tidak Diputar”- Verifikasi license key JW Player Anda benar
- Periksa bahwa URL video dapat diakses dan valid
- Pastikan header CORS yang tepat jika menggunakan server kustom
- Uji dengan format video yang berbeda
Masalah Layar Penuh
Section titled “Masalah Layar Penuh”- Plugin selalu memutar dalam mode layar penuh
- Pastikan izin yang tepat untuk layar penuh di aplikasi Anda
Kinerja
Section titled “Kinerja”- Gunakan kualitas video yang sesuai untuk perangkat target
- Pertimbangkan streaming adaptif untuk kinerja lebih baik
- Implementasikan indikator buffering yang tepat