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() => 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() => 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