Interface Video Player avec une image d’échantillon tirée de la bande‑annonce Sintel.
Interface Video Player avec une image d’échantillon tirée de la bande‑annonce Sintel.
© copyright Blender Foundation | durian.blender.org · CC BY 3.0
← Tous les guides natifs

Xodera Plugins · Bubble Native

Xodera Video Player Native

Affichez des leçons, démonstrations produit et flux compatibles dans votre app, avec commandes, plein écran et pistes linguistiques disponibles.

Guides bêta publics · instructions Haptics dans sa fiche Bubble

Offre bêta publique : installation Bubble gratuite · essai de 7 jours avec carte, puis 1,50 USD/mois par plugin/projet.

Documentation révisée 6 novembre 2026

Exemples pratiques

Accès par chapitres dans une app de formation

L’apprenant doit pouvoir revoir une étape précise sans passer par un lecteur externe.

`source_url = Current Lesson’s video URL` ; `poster_url = Current Lesson’s cover` ; chaque chapitre stocke un temps de démarrage appartenant à l'application.

Clic sur un Chapitre → si la source change, attendre `source_loaded` → Seek avec `position_seconds` → Play. Set playback rate aide à examiner un geste ; Enter fullscreen s’utilise à la demande.

Lisez `position_seconds`, `duration_seconds` et `is_fullscreen`. Votre workflow enregistre la progression pour la source courante uniquement.

Sur `player_error`, affichez `error_code`, conservez la progression et proposez Reload video. Une fin de lecture ne vaut pas validation d’un cours ou d’une évaluation de sécurité.

Utilisez des fichiers directs ou flux compatibles. Ce lecteur n’exporte pas de vidéos.

Démonstration vidéo sur une fiche de marketplace

Une image ne suffit pas toujours à expliquer un produit ; un lien externe interrompt le parcours d’achat.

`source_url = Selected Listing’s demonstration URL` ; `poster_url = its thumbnail` ; `muted = yes` pour un premier aperçu intentionnellement muet.

Ouvrez l’Annonce, liez sa vidéo, puis lancez Play après une action de l’utilisateur. Proposez Set muted pour le son et Enter fullscreen pour mieux voir. Liez `is_active` au détail visible.

Utilisez `has_source`, `is_buffering` et `status` pour distinguer absence de vidéo, chargement et média prêt.

Au changement de source, abandonnez l’ancienne progression et les anciennes pistes. Affichez la miniature si le fichier choisi n’est pas pris en charge.

Utilisez des fichiers directs ou flux compatibles. Ce lecteur n’exporte pas de vidéos.

Choisir les pistes de langue d’un flux compatible

Une app multilingue doit proposer les pistes réellement présentes dans la source sélectionnée.

`source_url = Selected Programme’s accepted stream URL` ; la source elle‑même doit fournir des pistes audio/sous‑titres compatibles.

Sur `tracks_changed`, lisez `audio_tracks_json` et `subtitle_tracks_json` de la source courante. Votre app crée les choix et appelle Select audio track ou Select subtitle track avec l’index courant.

Utilisez `selected_audio_index`, `selected_subtitle_index` et `source_generation` pour rattacher le choix à cette source.

Reconstruisez les choix après chaque changement de source. En l’absence d’une piste compatible, gardez la piste par défaut et indiquez cette limite.

Utilisez des fichiers directs ou flux compatibles. Ce lecteur n’exporte pas de vidéos.

Ce qui fonctionne maintenant

Bêta publique. Utilisez les commandes et actions documentées ; testez les formats, les autorisations et le comportement dans votre propre app native. L’aperçu web ne valide pas les résultats sur appareil.

Construire le workflow

Utilisez les actions bêta disponibles ci-dessous et testez le résultat sur vos appareils cibles.

Les exemples utilisent des fiches comme Lesson, Message et Order. Remplacez-les par vos types de données et noms d’éléments. Utilisez vos propres fichiers à la place des adresses d’exemple.

  1. Renseignez source_url = Selected Lesson's video_url et poster_url = Selected Lesson's poster_url. Utilisez auto ou progressive pour MP4, hls pour HLS.

  2. Après playback_ready, utilisez Seek pour reprendre à la position position_seconds enregistrée. L'utilisateur démarre Play. Définissez is_active selon que la vue de la leçon est ouverte ou non.

  3. Ajoutez Play, Pause, Seek, Set playback rate et Enter fullscreen. Affichez position_seconds et duration_seconds.

  4. Après tracks_changed, affichez les choix audio_tracks_json et subtitle_tracks_json de cette vidéo. Passez l’index choisi à Select audio track ou Select subtitle track. À ended, enregistrez la progression.

Diagramme de flux — pas une capture d’écran d’application · SVG

Configurer une fois

Créez ou choisissez votre projet Bubble dans BestPlugins → Dashboard → Plugins. Choisissez Xodera Video Player Native, copiez sa clé, puis ouvrez Bubble → Plugins → Xodera Video Player Native et collez-la dans licensing_api_key. Enregistrez une fois, puis utilisez les actions ci-dessous. Chaque plugin de chaque projet possède sa propre clé.

Utilisez une adresse directe de vidéo ou de flux. Une page YouTube ou Vimeo n’est pas un fichier vidéo direct. Aucune permission caméra ou microphone pour la lecture.

Configurer une fois
  1. Créez ou choisissez votre projet Bubble dans BestPlugins → Dashboard → Plugins.
  2. Choisissez ce plugin et copiez sa clé de projet.
  3. Ouvrez Bubble → Plugins → ce plugin. Collez sa clé de projet dans licensing_api_key et enregistrez.
  4. Ajoutez l’élément, choisissez vos données et construisez le workflow ci-dessous.
  5. Dans le tableau de bord, vérifiez et confirmez l’essai de 7 jours avec carte pour ce plugin. Il coûte ensuite 1,50 USD/mois par projet, développement et production inclus. Annulez avant la fin de l’essai pour éviter le premier débit.
Installation et abonnement

Pour Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit et Haptics : installation Bubble gratuite, essai de 7 jours avec carte, puis 1,50 USD par mois, par plugin et projet. Développement et production inclus, sans plafond d’opérations. Les limites de fichier et de fonction restent applicables. Vérifiez facturation et annulation avant confirmation. Les autres plugins ne sont pas ouverts à l’achat.

Enregistrer le résultat dans votre app

Exemple WatchProgress : owner = Current User, lesson = Selected Lesson, seconds = Video Player's position_seconds, duration = Video Player's duration_seconds. Enregistrez seulement pour la vidéo choisie. Les index de pistes appartiennent à cette vidéo et ne sont pas des choix de langue permanents.

Échec, annulation et reprise

À player_error, affichez error_code et proposez Reload video, sans lecture automatique. Un changement de vidéo efface les anciens choix de pistes. Quitter la vue met en pause ; Play reprend la lecture.

Fonctions et limites

Vitesses : 0.5, 1, 1.5 et 2. Volume : 0–1. Formats : auto, progressive, HLS et uniquement Android‑DASH. Les pistes disponibles dépendent du fichier. Utilisez -1 pour désactiver une piste ; -2 signifie inconnu et ne peut pas être sélectionné. Aucun montage, exportation vidéo, DRM, image‑dans‑image ou cache hors ligne permanent.

Réglages, actions et résultats

Utilisez ces noms dans Bubble. Les fonctionnalités prévues sont marquées séparément.

Paramètres bêta disponibles

Réglages de l’élément

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

États

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

Événements

source_changedsource_loadedplayback_readyplaying_changedtime_changedendedtracks_changedfullscreen_changedplayer_error

Actions et paramètres

PlayPauseStop and rewindReload videoSeekSet volumeSet mutedSet playback rateEnter fullscreenSelect audio trackSelect subtitle track
Réglages de l’élément · 12
source_urltext · Défaut: ""
Valeur exemplehttps://bestplugins.online/native-samples/lesson.mp4
Expression Bubble exempleSelected Lesson's video_url
Adresse du fichier audio, vidéo ou image choisi. Utilisez un type compatible avec ce plugin.
poster_urltext · Défaut: ""
Valeur exemplehttps://bestplugins.online/native-samples/poster.jpg
Expression Bubble exempleSelected Lesson's poster_url
Utilisez la valeur de la fiche courante et les limites ci-dessous.
content_typetext · Défaut: "auto"
Valeur exempleauto
Expression Bubble exempleSelected Lesson's video_content_type
Utilisez la valeur de la fiche courante et les limites ci-dessous.
ratenumber · Défaut: 1
Valeur exemple1.5
Expression Bubble exempleSpeed Dropdown's value
Utilisez la valeur de la fiche courante et les limites ci-dessous.
volumenumber · Défaut: 1
Valeur exemple0.8
Expression Bubble exempleVolume Slider's value
Utilisez la valeur de la fiche courante et les limites ci-dessous.
mutedyes/no · Défaut: false
Valeur exempleno
Expression Bubble exempleMute Checkbox is checked
Utilisez la valeur de la fiche courante et les limites ci-dessous.
loopyes/no · Défaut: false
Valeur exempleno
Expression Bubble exempleSelected Lesson's repeat_enabled
Utilisez la valeur de la fiche courante et les limites ci-dessous.
is_activeyes/no · Défaut: true
Valeur exempleyes
Expression Bubble exempleGuideHost's view_is_active (your yes/no custom state)
yes tant que cette vue est ouverte ; no en la quittant pour arrêter la lecture ou l’action en cours.
disabledyes/no · Défaut: false
Valeur exempleno
Expression Bubble exempleGuideHost's is_busy (your yes/no custom state)
Désactivez l’élément si l’app est occupée ou l’action indisponible.
native_controlsyes/no · Défaut: false
Valeur exempleno
Expression Bubble exempleApp Settings' use_native_video_controls
Afficher ou masquer les commandes vidéo standard de l’appareil.
ui_text_jsontext · Défaut: "{}"
Valeur exemple{}
Expression Bubble exempleApp Settings' player_labels_json (supported keys only)
JSON facultatif avec les libellés de boutons pris en charge. Laissez vide pour les textes intégrés.
languagetext · Défaut: "auto"
Valeur exempleuk
Expression Bubble exempleCurrent User's preferred_language
Utilisez language=auto pour suivre une langue prise en charge sur l’appareil ou dans le navigateur. Saisissez un code de langue pris en charge pour la choisir explicitement.
Actions et paramètres · 11
Play

Aucun paramètre d’action

Pause

Aucun paramètre d’action

Stop and rewind

Aucun paramètre d’action

Reload video

Aucun paramètre d’action

Seek
position_secondsnumber · Défaut: —
Valeur exemple45
Expression Bubble exempleSelected Chapter's start_seconds
Utilisez la valeur de la fiche courante et les limites ci-dessous.
Set volume
volumenumber · Défaut: —
Valeur exemple0.8
Expression Bubble exempleVolume Slider's value
Utilisez la valeur de la fiche courante et les limites ci-dessous.
Set muted
mutedyes/no · Défaut: —
Valeur exempleno
Expression Bubble exempleMute Checkbox is checked
Utilisez la valeur de la fiche courante et les limites ci-dessous.
Set playback rate
ratenumber · Défaut: —
Valeur exemple1.5
Expression Bubble exempleSpeed Dropdown's value
Utilisez la valeur de la fiche courante et les limites ci-dessous.
Enter fullscreen

Aucun paramètre d’action

Select audio track
indexnumber · Défaut: —
Valeur exemple0
Expression Bubble exempleSelected row's current_source_index
Utilisez la valeur de la fiche courante et les limites ci-dessous.
Select subtitle track
indexnumber · Défaut: —
Valeur exemple0
Expression Bubble exempleSelected row's current_source_index
Utilisez la valeur de la fiche courante et les limites ci-dessous.
États et événements

États

is_playing · yes/no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

is_buffering · yes/no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

pending_play · yes/no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

is_live · yes/no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

muted · yes/no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

loop · yes/no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

has_source · yes/no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

is_fullscreen · yes/no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

position_seconds · number

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

duration_seconds · number

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

volume · number

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

rate · number

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

source_generation · number

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

selected_audio_index · number

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

selected_subtitle_index · number

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

status · text

Résultat actuel de l’action. Attendez l’événement de fin correspondant avant de valider la réussite. idle,loading,readyToPlay,error

audio_tracks_json · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

subtitle_tracks_json · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

error_code · text

Information sur l’erreur de la dernière action. Affichez un message utile et proposez la bonne nouvelle tentative.

error_message · text

Information sur l’erreur de la dernière action. Affichez un message utile et proposez la bonne nouvelle tentative.

Événements

source_changed

À cet événement, lisez les états correspondants du même élément.

source_loaded

À cet événement, lisez les états correspondants du même élément.

playback_ready

À cet événement, lisez les états correspondants du même élément.

playing_changed

À cet événement, lisez les états correspondants du même élément.

time_changed

À cet événement, lisez les états correspondants du même élément.

ended

À cet événement, lisez les états correspondants du même élément.

tracks_changed

À cet événement, lisez les états correspondants du même élément.

fullscreen_changed

À cet événement, lisez les états correspondants du même élément.

player_error

À cet événement, lisez les états correspondants du même élément.

Questions des développeurs

Puis-je exporter un extrait ?

Non. Seek et plein écran ne réécrivent pas les octets.

Comment fonctionne l’abonnement ?

Pour Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit et Haptics : installation Bubble gratuite, essai de 7 jours avec carte, puis 1,50 USD par mois, par plugin et projet. Développement et production inclus, sans plafond d’opérations. Les limites de fichier et de fonction restent applicables. Vérifiez facturation et annulation avant confirmation. Les autres plugins ne sont pas ouverts à l’achat.

Autres exemples du produit
Xodera Video Player Native — Exemple antérieur du produit ; l’apparence peut différer dans la bêta actuelle.
Exemple antérieur du produit ; l’apparence peut différer dans la bêta actuelle.

Guides associés

Pour obtenir de l’aide, indiquez le plugin, l’appareil, l’action essayée et le résultat. Utilisez un exemple sans données personnelles. Ne partagez jamais votre clé ni vos fichiers privés.