Interfaccia Video Player con un fotogramma di esempio dal trailer Sintel.
Interfaccia Video Player con un fotogramma di esempio dal trailer Sintel.
© copyright Blender Foundation | durian.blender.org · CC BY 3.0
← Tutte le guide native

Xodera Plugins · Bubble Native

Xodera Video Player Native

Mostra lezioni, dimostrazioni di prodotto e streaming live supportati all'interno della tua app, con controlli di riproduzione, schermo intero e tracce linguistiche disponibili.

Public beta guides · Haptics instructions are in its Bubble listing

Public beta offer: free Bubble install · 7-day card trial, then US$1.50/month per plugin/project.

Documentazione revisionata 6 novembre 2026

Esempi pratici

Collegamenti ai capitoli in un'app di formazione

Un apprendista deve riprodurre un passaggio di una dimostrazione senza passare a un lettore esterno.

`source_url = Current Lesson’s video URL`; `poster_url = Current Lesson’s cover`; ogni Capitolo memorizza un tempo di avvio gestito dall'app.

Clic sul capitolo → se cambia la sorgente, attendi `source_loaded` → Seek a `position_seconds` → Play. Usa Set playback rate per una dimostrazione dettagliata e Enter fullscreen su richiesta.

Leggi `position_seconds`, `duration_seconds` e `is_fullscreen`; il tuo flusso di lavoro memorizza i progressi della lezione solo per la sorgente corrente.

Su `player_error`, mostra `error_code`, conserva i progressi e offri Reload video. Un evento di completamento non è prova che una lezione o una valutazione di sicurezza sia stata superata.

Usa file video diretti o stream supportati. Questo lettore non esporta video.

Dimostrazioni video negli elenchi del marketplace

Una sola immagine del prodotto non può spiegare come funziona un articolo, ma un video esterno interrompe il flusso di acquisto.

`source_url = Selected Listing’s demonstration URL`; `poster_url = its thumbnail`; `muted = yes` per una prima anteprima intenzionalmente silenziosa.

Apri l'elenco selezionato → collega il suo video → Play dopo un'azione dell'utente. Offri Set muted per l'audio e Enter fullscreen per un'ispezione più ravvicinata. Collega `is_active` al dettaglio visibile.

Usa `has_source`, `is_buffering` e `status` per distinguere un video assente, il caricamento e i media pronti.

Alla sostituzione della sorgente, smetti di applicare i progressi e le selezioni di traccia precedenti. Mostra un'anteprima di riserva quando il file selezionato non è supportato.

Usa file video diretti o stream supportati. Questo lettore non esporta video.

Scegli le tracce linguistiche disponibili in un flusso supportato

Un'app multilingue deve offrire le tracce che una determinata sorgente contiene effettivamente.

`source_url = Selected Programme’s accepted stream URL`; la sorgente stessa deve fornire tracce audio/sottotitoli compatibili.

Su `tracks_changed`, leggi lo `audio_tracks_json` e lo `subtitle_tracks_json` correnti; crea le scelte nella tua app e chiama Select audio track o Select subtitle track con l'indice corrente.

Usa `selected_audio_index`, `selected_subtitle_index` e `source_generation` per associare la scelta a questa sorgente.

Ricostruisci le scelte dopo ogni cambiamento della sorgente. Se una traccia è assente o non supportata, mantieni la traccia predefinita e mostra onestamente la sua disponibilità.

Usa file video diretti o stream supportati. Questo lettore non esporta video.

Cosa funziona ora

Public beta. Use the documented controls and actions; test supported formats, permissions and device behavior in your own native app. Browser preview does not validate native device output.

Crea il flusso di lavoro

Usa le azioni beta disponibili qui sotto e testa il risultato sui tuoi dispositivi target.

Questi esempi utilizzano record di app come Lesson, Message e Order. Sostituiscili con i tuoi tipi di dati e nomi di elemento. Gli indirizzi multimediali di esempio devono essere sostituiti con i tuoi file.

  1. Imposta source_url = Selected Lesson's video_url e poster_url = Selected Lesson's poster_url. Usa auto o progressive per un MP4; usa hls per uno stream HLS.

  2. Dopo playback_ready, usa Seek per riprendere al position_seconds salvato. L'utente avvia Play. Imposta is_active per indicare se la visualizzazione della lezione è aperta.

  3. Aggiungi i controlli Play, Pause, Seek, Set playback rate e Enter fullscreen. Visualizza position_seconds e duration_seconds.

  4. Dopo tracks_changed, mostra le scelte disponibili audio_tracks_json e subtitle_tracks_json per questo video. Passa l'indice selezionato a Select audio track o Select subtitle track. All’evento ended, salva i progressi.

Diagramma del flusso di lavoro — non è uno screenshot dell'app

Configura una sola volta

Crea o scegli il tuo progetto app Bubble in BestPlugins → Dashboard → Plugins. Scegli Xodera Video Player Native, copia la sua chiave, quindi apri Bubble → Plugins → Xodera Video Player Native e incollala in licensing_api_key. Salva una volta; poi usa le azioni qui sotto. Ogni plugin in ogni progetto ha la propria chiave.

Usa un indirizzo video o stream diretto. Un indirizzo YouTube o una pagina web Vimeo non è un file video diretto. La riproduzione non richiede accesso a fotocamera o microfono.

Configura una sola volta
  1. Crea o scegli il tuo progetto app Bubble su BestPlugins → Dashboard → Plugins.
  2. Scegli questo plugin e copia la sua chiave di progetto.
  3. Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
  4. Aggiungi l'elemento, scegli i dati della tua app e costruisci il flusso di lavoro qui sotto.
  5. In the dashboard, review and confirm the 7-day card trial for this plugin. It then costs US$1.50/month per app project, including development and production. Cancel before the trial ends to avoid the first charge.
Installazione e abbonamento

For Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit and Haptics: free Bubble installation, a 7-day trial with a card, then US$1.50 per month per plugin and app project. Development and production are included, with no operation cap. File-size and feature limits still apply. Review billing and cancellation before confirming. Other plugins remain unavailable for purchase.

Salva il risultato nella tua app

Esempio WatchProgress: owner = Current User, lesson = Selected Lesson, seconds = Video Player's position_seconds, duration = Video Player's duration_seconds. Salva solo per il video attualmente selezionato. Gli indici delle tracce appartengono a quel video e non dovrebbero essere memorizzati come scelte linguistiche permanenti.

Errore, annullamento e ripristino

Su player_error, mostra error_code e offri Reload video. Ricarica senza avviare la riproduzione. Selezionare un'altra sorgente cancella le vecchie scelte di traccia. Uscire dalla vista mette in pausa il video; l'utente preme Play per continuare.

Capacità e limiti

Velocità: 0.5, 1, 1.5 e 2. Volume: 0–1. Formati: auto, progressive, HLS e Android‑only DASH. Le tracce disponibili dipendono dal file. Usa -1 per disattivare una traccia; -2 indica sconosciuto e non può essere selezionato. Nessuna modifica, esportazione video, DRM, picture‑in‑picture o cache offline permanente.

Impostazioni, azioni e risultati

Usa questi nomi in Bubble. Le funzionalità pianificate sono contrassegnate separatamente.

Impostazioni beta disponibili

Impostazioni elemento

source_url · textposter_url · textcontent_type · textrate · numbervolume · numbermuted · yes/noloop · yes/nois_active · yes/nodisabled · yes/nonative_controls · yes/noui_text_json · textlanguage · text

Stati

is_playing · yes/nois_buffering · yes/nopending_play · yes/nois_live · yes/nomuted · yes/noloop · yes/nohas_source · yes/nois_fullscreen · yes/noposition_seconds · numberduration_seconds · numbervolume · numberrate · numbersource_generation · numberselected_audio_index · numberselected_subtitle_index · numberstatus · textaudio_tracks_json · textsubtitle_tracks_json · texterror_code · texterror_message · text

Eventi

source_changedsource_loadedplayback_readyplaying_changedtime_changedendedtracks_changedfullscreen_changedplayer_error

Azioni e i loro input

PlayPauseStop and rewindReload videoSeekSet volumeSet mutedSet playback rateEnter fullscreenSelect audio trackSelect subtitle track
Impostazioni elemento · 12
source_urltext · Predefinito: ""
Valore di esempiohttps://bestplugins.online/native-samples/lesson.mp4
Esempio di espressione BubbleSelected Lesson's video_url
Indirizzo del file audio, video o immagine selezionato. Usa un tipo di file supportato da questo plugin.
poster_urltext · Predefinito: ""
Valore di esempiohttps://bestplugins.online/native-samples/poster.jpg
Esempio di espressione BubbleSelected Lesson's poster_url
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
content_typetext · Predefinito: "auto"
Valore di esempioauto
Esempio di espressione BubbleSelected Lesson's video_content_type
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
ratenumber · Predefinito: 1
Valore di esempio1.5
Esempio di espressione BubbleSpeed Dropdown's value
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
volumenumber · Predefinito: 1
Valore di esempio0.8
Esempio di espressione BubbleVolume Slider's value
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
mutedyes/no · Predefinito: false
Valore di esempiono
Esempio di espressione BubbleMute Checkbox is checked
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
loopyes/no · Predefinito: false
Valore di esempiono
Esempio di espressione BubbleSelected Lesson's repeat_enabled
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
is_activeyes/no · Predefinito: true
Valore di esempioyes
Esempio di espressione BubbleGuideHost's view_is_active (your yes/no custom state)
Imposta sì mentre questa vista è aperta. Imposta no quando esci, così la riproduzione o il lavoro corrente può fermarsi.
disabledyes/no · Predefinito: false
Valore di esempiono
Esempio di espressione BubbleGuideHost's is_busy (your yes/no custom state)
Disabilita l'elemento mentre la tua app è occupata o questa azione non è disponibile.
native_controlsyes/no · Predefinito: false
Valore di esempiono
Esempio di espressione BubbleApp Settings' use_native_video_controls
Mostra o nascondi i controlli video standard del dispositivo.
ui_text_jsontext · Predefinito: "{}"
Valore di esempio{}
Esempio di espressione BubbleApp Settings' player_labels_json (supported keys only)
JSON opzionale con etichette dei pulsanti supportate. Lascia vuoto per usare il testo integrato.
languagetext · Predefinito: "auto"
Valore di esempiouk
Esempio di espressione BubbleCurrent User's preferred_language
Imposta language=auto per seguire la lingua di un dispositivo o browser supportato. Inserisci un codice lingua supportato per sceglierla esplicitamente.
Azioni e i loro input · 11
Play

Nessun parametro di azione

Pause

Nessun parametro di azione

Stop and rewind

Nessun parametro di azione

Reload video

Nessun parametro di azione

Seek
position_secondsnumber · Predefinito: —
Valore di esempio45
Esempio di espressione BubbleSelected Chapter's start_seconds
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
Set volume
volumenumber · Predefinito: —
Valore di esempio0.8
Esempio di espressione BubbleVolume Slider's value
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
Set muted
mutedyes/no · Predefinito: —
Valore di esempiono
Esempio di espressione BubbleMute Checkbox is checked
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
Set playback rate
ratenumber · Predefinito: —
Valore di esempio1.5
Esempio di espressione BubbleSpeed Dropdown's value
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
Enter fullscreen

Nessun parametro di azione

Select audio track
indexnumber · Predefinito: —
Valore di esempio0
Esempio di espressione BubbleSelected row's current_source_index
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
Select subtitle track
indexnumber · Predefinito: —
Valore di esempio0
Esempio di espressione BubbleSelected row's current_source_index
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
Stati ed eventi

Stati

is_playing · yes/no

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

is_buffering · yes/no

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

pending_play · yes/no

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

is_live · yes/no

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

muted · yes/no

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

loop · yes/no

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

has_source · yes/no

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

is_fullscreen · yes/no

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

position_seconds · number

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

duration_seconds · number

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

volume · number

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

rate · number

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

source_generation · number

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

selected_audio_index · number

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

selected_subtitle_index · number

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

status · text

Risultato attuale di questa azione. Usa l'evento di completamento corrispondente prima di salvare il successo. idle,loading,readyToPlay,error

audio_tracks_json · text

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

subtitle_tracks_json · text

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

error_code · text

Informazioni di errore per l'ultima azione. Mostra un messaggio utile e offri il tentativo di nuovo pertinente.

error_message · text

Informazioni di errore per l'ultima azione. Mostra un messaggio utile e offri il tentativo di nuovo pertinente.

Eventi

source_changed

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

source_loaded

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

playback_ready

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

playing_changed

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

time_changed

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

ended

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

tracks_changed

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

fullscreen_changed

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

player_error

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

Domande che gli sviluppatori pongono

Posso esportare il segmento selezionato?

No. Seek e il fullscreen modificano la riproduzione, non i byte del video.

Come funziona l'abbonamento?

For Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit and Haptics: free Bubble installation, a 7-day trial with a card, then US$1.50 per month per plugin and app project. Development and production are included, with no operation cap. File-size and feature limits still apply. Review billing and cancellation before confirming. Other plugins remain unavailable for purchase.

Guide correlate

Per assistenza, indicaci quale plugin e dispositivo utilizzi, l'azione che hai provato e cosa è accaduto. Usa un esempio senza dati personali. Non condividere mai la tua chiave o file privati.