Per Iniziare
Installazione
Section titled “Installazione”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 syncPrerequisiti
Section titled “Prerequisiti”Avrai bisogno di un account JW Player e di una chiave di licenza per utilizzare questo plugin. Registrati su JW Player se non ne hai uno.
Configurazione Piattaforma
Section titled “Configurazione Piattaforma”Aggiungi la tua chiave di licenza JW Player al tuo Info.plist:
<key>JWPlayerLicenseKey</key><string>YOUR_LICENSE_KEY</string>Android
Section titled “Android”Aggiungi la tua chiave di licenza JW Player a android/app/src/main/res/values/strings.xml:
<resources> <string name="jw_player_license_key">YOUR_LICENSE_KEY</string></resources>Esempio di Utilizzo
Section titled “Esempio di Utilizzo”import { JWPlayer } from '@capgo/capacitor-jw-player';
// Riproduci un singolo videoawait JWPlayer.playVideo({ mediaUrl: 'https://example.com/video.mp4', title: 'Il Mio Video', description: 'Descrizione del video', poster: 'https://example.com/poster.jpg'});
// Riproduci una playlistawait JWPlayer.playPlaylist({ playlistUrl: 'https://example.com/playlist.json'});
// Ascolta gli eventi del playerJWPlayer.addListener('playerReady', () => { console.log('Il player è pronto');});
JWPlayer.addListener('play', (data) => { console.log('Il video ha iniziato a riprodurre');});
JWPlayer.addListener('pause', (data) => { console.log('Video in pausa');});
JWPlayer.addListener('complete', (data) => { console.log('Riproduzione video completata');});
JWPlayer.addListener('error', (error) => { console.error('Errore del player:', error);});Riferimento API
Section titled “Riferimento API”playVideo(options)
Section titled “playVideo(options)”playVideo(options: VideoOptions) => Promise<void>Riproduci un singolo video in modalità schermo intero.
| Param | Type |
|---|---|
options | VideoOptions |
playPlaylist(options)
Section titled “playPlaylist(options)”playPlaylist(options: PlaylistOptions) => Promise<void>Riproduci una playlist in modalità schermo intero.
| Param | Type |
|---|---|
options | PlaylistOptions |
pause()
Section titled “pause()”pause() => Promise<void>Metti in pausa il video corrente.
play()
Section titled “play()”play() => Promise<void>Riprendi la riproduzione del video.
seek(options)
Section titled “seek(options)”seek(options: { position: number }) => Promise<void>Vai a una posizione specifica nel video.
| Param | Type |
|---|---|
options | { position: number } |
setPlaybackSpeed(options)
Section titled “setPlaybackSpeed(options)”setPlaybackSpeed(options: { speed: number }) => Promise<void>Imposta la velocità di riproduzione.
| Param | Type |
|---|---|
options | { speed: number } |
setVolume(options)
Section titled “setVolume(options)”setVolume(options: { volume: number }) => Promise<void>Imposta il volume audio (da 0.0 a 1.0).
| Param | Type |
|---|---|
options | { volume: number } |
selectAudioTrack(options)
Section titled “selectAudioTrack(options)”selectAudioTrack(options: { trackIndex: number }) => Promise<void>Seleziona una traccia audio per indice.
| Param | Type |
|---|---|
options | { trackIndex: number } |
selectCaptionTrack(options)
Section titled “selectCaptionTrack(options)”selectCaptionTrack(options: { trackIndex: number }) => Promise<void>Seleziona una traccia sottotitoli/didascalie per indice.
| Param | Type |
|---|---|
options | { trackIndex: number } |
stop()
Section titled “stop()”stop() => Promise<void>Ferma la riproduzione e chiudi il player.
Interfacce
Section titled “Interfacce”VideoOptions
Section titled “VideoOptions”| Prop | Type | Description |
|---|---|---|
mediaUrl | string | URL del file video |
title | string | Titolo del video (opzionale) |
description | string | Descrizione del video (opzionale) |
poster | string | URL del poster/miniatura (opzionale) |
autoStart | boolean | Avvia riproduzione automaticamente (opzionale, predefinito: true) |
PlaylistOptions
Section titled “PlaylistOptions”| Prop | Type | Description |
|---|---|---|
playlistUrl | string | URL del JSON della playlist JW |
autoStart | boolean | Avvia riproduzione automaticamente (opzionale) |
Listener di Eventi
Section titled “Listener di Eventi”Eventi Disponibili
Section titled “Eventi Disponibili”playerReady- Il player è inizializzato e prontoplay- Riproduzione video iniziatapause- Riproduzione video in pausacomplete- Riproduzione video completataerror- Il player ha riscontrato un erroreseek- L’utente si è spostato a una posizione diversatime- Tempo di riproduzione aggiornatobufferChange- Stato buffer cambiato
Esempio di Evento
Section titled “Esempio di Evento”// Ascolta aggiornamenti tempoJWPlayer.addListener('time', (data) => { console.log('Tempo corrente:', data.position); console.log('Durata:', data.duration);});
// Ascolta cambiamenti bufferJWPlayer.addListener('bufferChange', (data) => { console.log('Buffering:', data.buffering);});
// Rimuovi listener quando hai finitoconst listener = await JWPlayer.addListener('play', (data) => { console.log('In riproduzione');});
// Più tardi...listener.remove();Utilizzo Avanzato
Section titled “Utilizzo Avanzato”Riproduzione con Sottotitoli
Section titled “Riproduzione con Sottotitoli”await JWPlayer.playVideo({ mediaUrl: 'https://example.com/video.mp4', title: 'Video con Sottotitoli', 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' } ]});Controlli di Riproduzione Personalizzati
Section titled “Controlli di Riproduzione Personalizzati”import { JWPlayer } from '@capgo/capacitor-jw-player';
// Inizia a riprodurreawait JWPlayer.play();
// Metti in pausa dopo 10 secondisetTimeout(() => { JWPlayer.pause();}, 10000);
// Vai a 30 secondiawait JWPlayer.seek({ position: 30 });
// Imposta velocità di riproduzione a 1.5xawait JWPlayer.setPlaybackSpeed({ speed: 1.5 });
// Imposta volume al 50%await JWPlayer.setVolume({ volume: 0.5 });Migliori Pratiche
Section titled “Migliori Pratiche”- Fornisci sempre un’immagine poster per una migliore esperienza utente
- Gestisci gli errori del player con grazia con messaggi di errore appropriati
- Pulisci i listener di eventi quando il componente viene smontato
- Testa la riproduzione video su dispositivi sia iOS che Android
- Usa formati video appropriati (MP4 consigliato)
- Implementa stati di caricamento mentre il video si inizializza
- Considera le condizioni di rete durante lo streaming
Risoluzione dei Problemi
Section titled “Risoluzione dei Problemi”Il Video Non Riproduce
Section titled “Il Video Non Riproduce”- Verifica che la tua chiave di licenza JW Player sia corretta
- Controlla che l’URL del video sia accessibile e valido
- Assicurati degli header CORS appropriati se usi un server personalizzato
- Testa con formati video diversi
Problemi con Schermo Intero
Section titled “Problemi con Schermo Intero”- Il plugin riproduce sempre in modalità schermo intero
- Assicurati dei permessi appropriati per schermo intero nella tua app
Prestazioni
Section titled “Prestazioni”- Usa qualità video appropriata per i dispositivi target
- Considera streaming adattivo per migliori prestazioni
- Implementa indicatori di buffering appropriati