
© copyright Blender Foundation | durian.blender.org · CC BY 3.0
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.
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.
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.
Añada los controles Play, Pause, Seek, Set playback rate y Enter fullscreen. Muestre position_seconds y duration_seconds.
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.
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
- Crea o elige tu proyecto de aplicación Bubble en BestPlugins → Dashboard → Plugins.
- Elige este complemento y copia su clave de proyecto.
- Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
- Añade el elemento, elige los datos de tu aplicación y construye el flujo de trabajo a continuación.
- 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 · textEstados
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 · textEventos
source_changedsource_loadedplayback_readyplaying_changedtime_changedendedtracks_changedfullscreen_changedplayer_errorAcciones y sus entradas
PlayPauseStop and rewindReload videoSeekSet volumeSet mutedSet playback rateEnter fullscreenSelect audio trackSelect subtitle trackConfiguración del elemento · 12
source_urltext · Predeterminado: ""- Valor de ejemplo
https://bestplugins.online/native-samples/lesson.mp4 - Ejemplo de expresión Bubble
Selected 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 ejemplo
https://bestplugins.online/native-samples/poster.jpg - Ejemplo de expresión Bubble
Selected 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 ejemplo
auto - Ejemplo de expresión Bubble
Selected 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 ejemplo
1.5 - Ejemplo de expresión Bubble
Speed Dropdown's value - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
volumenumber · Predeterminado: 1- Valor de ejemplo
0.8 - Ejemplo de expresión Bubble
Volume Slider's value - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
mutedyes/no · Predeterminado: false- Valor de ejemplo
no - Ejemplo de expresión Bubble
Mute Checkbox is checked - Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
loopyes/no · Predeterminado: false- Valor de ejemplo
no - Ejemplo de expresión Bubble
Selected 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 ejemplo
yes - Ejemplo de expresión Bubble
GuideHost'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 ejemplo
no - Ejemplo de expresión Bubble
GuideHost'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 ejemplo
no - Ejemplo de expresión Bubble
App 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 Bubble
App 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 ejemplo
uk - Ejemplo de expresión Bubble
Current 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 ejemplo
45 - Ejemplo de expresión Bubble
Selected 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 ejemplo
0.8 - Ejemplo de expresión Bubble
Volume 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 ejemplo
no - Ejemplo de expresión Bubble
Mute 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 ejemplo
1.5 - Ejemplo de expresión Bubble
Speed 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 ejemplo
0 - Ejemplo de expresión Bubble
Selected 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 ejemplo
0 - Ejemplo de expresión Bubble
Selected 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/noValor actual del elemento seleccionado. Léelo después del evento relacionado.
is_buffering · yes/noValor actual del elemento seleccionado. Léelo después del evento relacionado.
pending_play · yes/noValor actual del elemento seleccionado. Léelo después del evento relacionado.
is_live · yes/noValor actual del elemento seleccionado. Léelo después del evento relacionado.
muted · yes/noValor actual del elemento seleccionado. Léelo después del evento relacionado.
loop · yes/noValor actual del elemento seleccionado. Léelo después del evento relacionado.
has_source · yes/noValor actual del elemento seleccionado. Léelo después del evento relacionado.
is_fullscreen · yes/noValor actual del elemento seleccionado. Léelo después del evento relacionado.
position_seconds · numberValor actual del elemento seleccionado. Léelo después del evento relacionado.
duration_seconds · numberValor actual del elemento seleccionado. Léelo después del evento relacionado.
volume · numberValor actual del elemento seleccionado. Léelo después del evento relacionado.
rate · numberValor actual del elemento seleccionado. Léelo después del evento relacionado.
source_generation · numberValor actual del elemento seleccionado. Léelo después del evento relacionado.
selected_audio_index · numberValor actual del elemento seleccionado. Léelo después del evento relacionado.
selected_subtitle_index · numberValor actual del elemento seleccionado. Léelo después del evento relacionado.
status · textResultado actual de esta acción. Utilice el evento de finalización coincidente antes de guardar el éxito. idle,loading,readyToPlay,error
audio_tracks_json · textValor actual del elemento seleccionado. Léelo después del evento relacionado.
subtitle_tracks_json · textValor actual del elemento seleccionado. Léelo después del evento relacionado.
error_code · textInformación de error de la última acción. Muestra un mensaje útil y ofrece el reintento correspondiente.
error_message · textInformación de error de la última acción. Muestra un mensaje útil y ofrece el reintento correspondiente.
Eventos
source_changedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
source_loadedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
playback_readyCuando ocurra este evento, lea los estados relacionados del mismo elemento.
playing_changedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
time_changedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
endedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
tracks_changedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
fullscreen_changedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
player_errorCuando 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.