Interfaz Video Player con un fotograma de muestra del tráiler Sintel.
Interfaz Video Player con un fotograma de muestra del tráiler Sintel.
© copyright Blender Foundation | durian.blender.org · CC BY 3.0
← Todas las guías nativas

Xodera Plugins · Bubble Native

Xodera Video Player Native

Mostrar lecciones, demostraciones de productos y transmisiones en vivo compatibles dentro de su aplicación, con controles de reproducción, pantalla completa y pistas de idioma disponibles.

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.

Documentación revisada 6 noviembre 2026

Ejemplos prácticos

Enlaces de capítulos en una aplicación de entrenamiento

Un aprendiz necesita reproducir un paso de una demostración sin navegar a un reproductor externo.

`source_url = Current Lesson’s video URL`; `poster_url = Current Lesson’s cover`; cada Capítulo almacena un tiempo de inicio propio de la aplicación.

Clic en el capítulo → si cambia la fuente, espere a `source_loaded` → Seek a `position_seconds` → Play. Use Set playback rate para una demostración detallada y Enter fullscreen cuando se solicite.

Lea `position_seconds`, `duration_seconds` y `is_fullscreen`; su flujo de trabajo almacena el progreso de la lección solo para la fuente actual.

En `player_error`, muestre `error_code`, preserve el progreso y ofrezca Reload video. Un evento de finalización no es prueba de que se haya aprobado una lección o una evaluación de seguridad.

Use archivos de video directos o transmisiones compatibles. Este reproductor no exporta videos.

Demostraciones de video en listados del mercado

Una imagen del producto por sí sola no puede explicar cómo funciona un artículo, pero un video externo interrumpe el flujo de compra.

`source_url = Selected Listing’s demonstration URL`; `poster_url = its thumbnail`; `muted = yes` para una primera vista previa intencionalmente silenciosa.

Abra el Listado seleccionado → vincule su video → Play después de una acción del usuario. Ofrezca Set muted para sonido y Enter fullscreen para una inspección más detallada. Vincule `is_active` al detalle visible.

Use `has_source`, `is_buffering` y `status` para distinguir un video ausente, cargando y medios listos.

Al reemplazar la fuente, deje de aplicar el progreso y las selecciones de pista anteriores. Muestre una miniatura de respaldo cuando el archivo seleccionado no sea compatible.

Use archivos de video directos o transmisiones compatibles. Este reproductor no exporta videos.

Elija las pistas de idioma disponibles en una transmisión compatible

Una aplicación multilingüe necesita ofrecer las pistas que una fuente concreta contiene realmente.

`source_url = Selected Programme’s accepted stream URL`; la propia fuente debe proporcionar pistas de audio/subtítulos compatibles.

En `tracks_changed`, lea el `audio_tracks_json` y el `subtitle_tracks_json` actuales; construya opciones en su aplicación y llame a Select audio track o Select subtitle track con el índice actual.

Utilice `selected_audio_index`, `selected_subtitle_index` y `source_generation` para asociar la opción con esta fuente.

Reconstruya las opciones después de cada cambio de fuente. Si una pista está ausente o no es compatible, mantenga la pista predeterminada y muestre esa disponibilidad de forma honesta.

Use archivos de video directos o transmisiones compatibles. Este reproductor no exporta videos.

Lo que funciona ahora

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 el flujo de trabajo

Utiliza las acciones beta disponibles a continuación y prueba el resultado en tus dispositivos objetivo.

Estos ejemplos usan registros de aplicación como Lesson, Message y Order. Reemplácelos con sus propios tipos de datos y nombres de elementos. Las direcciones de medios de ejemplo deben ser sustituidas por sus propios archivos.

  1. Configurar source_url = Selected Lesson's video_url y poster_url = Selected Lesson's poster_url. Usar auto o progressive para un MP4; usar hls para una transmisión HLS.

  2. Después de playback_ready, use Seek para reanudar en el position_seconds guardado. El usuario inicia Play. Establezca is_active según si la vista de la lección está abierta.

  3. Añada los controles Play, Pause, Seek, Set playback rate y Enter fullscreen. Muestre position_seconds y duration_seconds.

  4. Después de tracks_changed, mostrar las opciones disponibles de audio_tracks_json y subtitle_tracks_json para este video. Pasar el índice seleccionado a Select audio track o Select subtitle track. En el evento ended, guardar el progreso.

Diagrama de flujo — no es una captura de pantalla de la aplicación

Configura una vez

Crea o elige tu proyecto de aplicación Bubble en BestPlugins → Dashboard → Plugins. Elige Xodera Video Player Native, copia su clave, luego abre Bubble → Plugins → Xodera Video Player Native y pégala en licensing_api_key. Guarda una vez; luego usa las acciones a continuación. Cada complemento en cada proyecto tiene su propia clave.

Utilice una dirección de video o transmisión directa. Una dirección YouTube o una página web de Vimeo no es un archivo de video directo. La reproducción no necesita acceso a cámara o micrófono.

Configura una vez
  1. Crea o elige tu proyecto de aplicación Bubble en BestPlugins → Dashboard → Plugins.
  2. Elige este complemento y copia su clave de proyecto.
  3. Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
  4. Añade el elemento, elige los datos de tu aplicación y construye el flujo de trabajo a continuación.
  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.
Instalación y suscripción

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.

Guarda el resultado en tu aplicación

Ejemplo WatchProgress: owner = Current User, lesson = Selected Lesson, seconds = Video Player's position_seconds, duration = Video Player's duration_seconds. Guardar solo para el video seleccionado actualmente. Los índices de pista pertenecen a ese video y no deben almacenarse como opciones de idioma permanentes.

Fallo, cancelación y recuperación

En player_error, muestra error_code y ofrece Reload video. Se recarga sin iniciar la reproducción. Seleccionar otra fuente borra las opciones de pista anteriores. Al salir de la vista se pausa el video; el usuario pulsa Play para continuar.

Capacidades y límites

Velocidades: 0.5, 1, 1.5 y 2. Volumen: 0–1. Formatos: auto, progressive, HLS y Android‑only DASH. Las pistas disponibles dependen del archivo. Use -1 para desactivar una pista; -2 significa desconocido y no se puede seleccionar. No hay edición, exportación de video, DRM, picture‑in‑picture o caché offline permanente.

Configuraciones, acciones y resultados

Utilice estos nombres en Bubble. Las funciones planificadas están marcadas por separado.

Configuraciones beta disponibles

Configuración del 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

Estados

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

Eventos

source_changedsource_loadedplayback_readyplaying_changedtime_changedendedtracks_changedfullscreen_changedplayer_error

Acciones y sus entradas

PlayPauseStop and rewindReload videoSeekSet volumeSet mutedSet playback rateEnter fullscreenSelect audio trackSelect subtitle track
Configuración del elemento · 12
source_urltext · Predeterminado: ""
Valor de ejemplohttps://bestplugins.online/native-samples/lesson.mp4
Ejemplo de expresión BubbleSelected Lesson's video_url
Dirección del archivo de audio, video o imagen seleccionado. Usa un tipo de archivo que este complemento admita.
poster_urltext · Predeterminado: ""
Valor de ejemplohttps://bestplugins.online/native-samples/poster.jpg
Ejemplo de expresión BubbleSelected Lesson's poster_url
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
content_typetext · Predeterminado: "auto"
Valor de ejemploauto
Ejemplo de expresión BubbleSelected Lesson's video_content_type
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
ratenumber · Predeterminado: 1
Valor de ejemplo1.5
Ejemplo de expresión BubbleSpeed Dropdown's value
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
volumenumber · Predeterminado: 1
Valor de ejemplo0.8
Ejemplo de expresión BubbleVolume Slider's value
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
mutedyes/no · Predeterminado: false
Valor de ejemplono
Ejemplo de expresión BubbleMute Checkbox is checked
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
loopyes/no · Predeterminado: false
Valor de ejemplono
Ejemplo de expresión BubbleSelected Lesson's repeat_enabled
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
is_activeyes/no · Predeterminado: true
Valor de ejemployes
Ejemplo de expresión BubbleGuideHost's view_is_active (your yes/no custom state)
Establece sí mientras esta vista está abierta. Establece no al salir, para que la reproducción o el trabajo actual puedan detenerse.
disabledyes/no · Predeterminado: false
Valor de ejemplono
Ejemplo de expresión BubbleGuideHost's is_busy (your yes/no custom state)
Desactiva el elemento mientras tu aplicación está ocupada o esta acción no está disponible.
native_controlsyes/no · Predeterminado: false
Valor de ejemplono
Ejemplo de expresión BubbleApp Settings' use_native_video_controls
Mostrar u ocultar los controles de video estándar del dispositivo.
ui_text_jsontext · Predeterminado: "{}"
Valor de ejemplo{}
Ejemplo de expresión BubbleApp Settings' player_labels_json (supported keys only)
JSON opcional con etiquetas de botón compatibles. Déjalo vacío para usar el texto incorporado.
languagetext · Predeterminado: "auto"
Valor de ejemplouk
Ejemplo de expresión BubbleCurrent User's preferred_language
Configurar language=auto para seguir un dispositivo o idioma de navegador compatible. Introduzca un código de idioma compatible para seleccionarlo explícitamente.
Acciones y sus entradas · 11
Play

Sin parámetros de acción

Pause

Sin parámetros de acción

Stop and rewind

Sin parámetros de acción

Reload video

Sin parámetros de acción

Seek
position_secondsnumber · Predeterminado: —
Valor de ejemplo45
Ejemplo de expresión BubbleSelected Chapter's start_seconds
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
Set volume
volumenumber · Predeterminado: —
Valor de ejemplo0.8
Ejemplo de expresión BubbleVolume Slider's value
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
Set muted
mutedyes/no · Predeterminado: —
Valor de ejemplono
Ejemplo de expresión BubbleMute Checkbox is checked
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
Set playback rate
ratenumber · Predeterminado: —
Valor de ejemplo1.5
Ejemplo de expresión BubbleSpeed Dropdown's value
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
Enter fullscreen

Sin parámetros de acción

Select audio track
indexnumber · Predeterminado: —
Valor de ejemplo0
Ejemplo de expresión BubbleSelected row's current_source_index
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
Select subtitle track
indexnumber · Predeterminado: —
Valor de ejemplo0
Ejemplo de expresión BubbleSelected row's current_source_index
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
Estados y eventos

Estados

is_playing · yes/no

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

is_buffering · yes/no

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

pending_play · yes/no

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

is_live · yes/no

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

muted · yes/no

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

loop · yes/no

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

has_source · yes/no

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

is_fullscreen · yes/no

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

position_seconds · number

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

duration_seconds · number

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

volume · number

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

rate · number

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

source_generation · number

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

selected_audio_index · number

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

selected_subtitle_index · number

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

status · text

Resultado actual de esta acción. Utilice el evento de finalización coincidente antes de guardar el éxito. idle,loading,readyToPlay,error

audio_tracks_json · text

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

subtitle_tracks_json · text

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

error_code · text

Información de error de la última acción. Muestra un mensaje útil y ofrece el reintento correspondiente.

error_message · text

Información de error de la última acción. Muestra un mensaje útil y ofrece el reintento correspondiente.

Eventos

source_changed

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

source_loaded

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

playback_ready

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

playing_changed

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

time_changed

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

ended

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

tracks_changed

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

fullscreen_changed

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

player_error

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

Preguntas que hacen los desarrolladores

¿Puedo exportar el segmento seleccionado?

No. Seek y el modo pantalla completa cambian la reproducción, no los bytes del video.

¿Cómo funciona la suscripción?

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.

Guías relacionadas

Para obtener ayuda, indíquenos qué plugin y dispositivo utiliza, la acción que intentó y lo que ocurrió. Use un ejemplo sin datos personales. Nunca comparta su clave ni archivos privados.