Интерфейс Video Player с образцом кадра из трейлера Sintel.
Интерфейс Video Player с образцом кадра из трейлера Sintel.
© copyright Blender Foundation | durian.blender.org · CC BY 3.0
← Все нативные руководства

Xodera Plugins · Bubble Native

Xodera Video Player Native

Показывать уроки, демонстрации продукта и поддерживаемые прямые трансляции внутри вашего приложения, с элементами управления воспроизведением, полноэкранным режимом и доступными языковыми дорожками.

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.

Документация проверена 6 в ноябре 2026

Практические примеры

Ссылки на главы в обучающем приложении

Обучающему необходимо повторить один шаг демонстрации без перехода к внешнему плееру.

`source_url = Current Lesson’s video URL`; `poster_url = Current Lesson’s cover`; каждая глава хранит стартовое время, принадлежащее приложению.

Клик по главе → при смене источника дождитесь `source_loaded` → Seek до `position_seconds` → Play. Используйте Set playback rate для подробной демонстрации и Enter fullscreen по запросу.

Прочитайте `position_seconds`, `duration_seconds` и `is_fullscreen`; ваш рабочий процесс сохраняет прогресс урока только для текущего источника.

При `player_error` покажите `error_code`, сохраните прогресс и предложите Reload video. Событие завершения не является доказательством прохождения урока или оценки безопасности.

Используйте прямые видеофайлы или поддерживаемые потоки. Этот плеер не экспортирует видео.

Видеодемонстрации в списках маркетплейса

Одно лишь изображение продукта не может объяснить, как работает товар, но внешнее видео нарушает процесс покупки.

`source_url = Selected Listing’s demonstration URL`; `poster_url = its thumbnail`; `muted = yes` для намеренно беззвучного первого превью.

Откройте выбранный листинг → привяжите его видео → Play после действия пользователя. Предложите Set muted для звука и Enter fullscreen для более детального просмотра. Привяжите `is_active` к видимой детали.

Используйте `has_source`, `is_buffering` и `status` для различения отсутствующего видео, загрузки и готового медиа.

При замене источника прекратите применять старый прогресс и выбранные треки. Покажите запасную миниатюру, если выбранный файл не поддерживается.

Используйте прямые видеофайлы или поддерживаемые потоки. Этот плеер не экспортирует видео.

Выберите доступные языковые дорожки в поддерживаемом потоке

Многоязычное приложение должно предлагать дорожки, которые действительно содержит конкретный источник.

`source_url = Selected Programme’s accepted stream URL`; источник сам должен предоставлять совместимые аудио/субтитры.

На `tracks_changed` прочитайте текущие `audio_tracks_json` и `subtitle_tracks_json`; сформируйте варианты в приложении и вызовите Select audio track или Select subtitle track с текущим индексом.

Используйте `selected_audio_index`, `selected_subtitle_index` и `source_generation` для привязки выбора к этому источнику.

Восстанавливайте варианты после каждого изменения источника. Если дорожка отсутствует или не поддерживается, оставляйте дорожку по умолчанию и честно отображайте её доступность.

Используйте прямые видеофайлы или поддерживаемые потоки. Этот плеер не экспортирует видео.

Что работает сейчас

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.

Создайте рабочий процесс

Используйте доступные ниже действия беты и протестируйте результат на целевых устройствах.

В этих примерах используются записи приложений, такие как Lesson, Message и Order. Замените их своими типами данных и именами элементов. Примерные медиа‑адреса необходимо заменить вашими файлами.

  1. Установите source_url = Selected Lesson's video_url и poster_url = Selected Lesson's poster_url. Используйте auto или progressive для MP4; используйте hls для потока HLS.

  2. После playback_ready используйте Seek, чтобы возобновить с сохранённого position_seconds. Пользователь запускает Play. Установите is_active в зависимости от того, открыт ли просмотр урока.

  3. Добавьте элементы управления Play, Pause, Seek, Set playback rate и Enter fullscreen. Отобразите position_seconds и duration_seconds.

  4. После tracks_changed покажите доступные варианты audio_tracks_json и subtitle_tracks_json для этого видео. Передайте выбранный индекс в Select audio track или Select subtitle track. При событии ended сохраните прогресс.

Диаграмма рабочего процесса — не скриншот приложения

Настройте один раз

Создайте или выберите ваш проект Bubble в BestPlugins → Dashboard → Plugins. Выберите Xodera Video Player Native, скопируйте его ключ, затем откройте Bubble → Plugins → Xodera Video Player Native и вставьте его в licensing_api_key. Сохраните один раз; затем используйте действия ниже. Каждый плагин в каждом проекте имеет свой собственный ключ.

Использовать прямой адрес видео или потока. YouTube или адрес веб‑страницы Vimeo не являются прямым видеофайлом. Воспроизведение не требует доступа к камере или микрофону.

Настройте один раз
  1. Создайте или выберите ваш проект Bubble в BestPlugins → Dashboard → Plugins.
  2. Выберите этот плагин и скопируйте его ключ проекта.
  3. Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
  4. Добавьте элемент, выберите данные вашего приложения и постройте рабочий процесс ниже.
  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.
Установка и подписка

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.

Сохраните результат в вашем приложении

Пример WatchProgress: owner = Current User, lesson = Selected Lesson, seconds = Video Player's position_seconds, duration = Video Player's duration_seconds. Сохраняйте только для текущего выбранного видео. Индексы дорожек принадлежат этому видео и не должны сохраняться как постоянные языковые настройки.

Сбой, отмена и восстановление

При player_error показывать error_code и предлагать Reload video. Происходит перезагрузка без запуска воспроизведения. Выбор другого источника очищает старые выборы дорожек. При выходе из вида видео ставится на паузу; пользователь нажимает Play, чтобы продолжить.

Возможности и ограничения

Скорости: 0.5, 1, 1.5 и 2. Громкость: 0–1. Форматы: auto, progressive, HLS и только Android‑DASH. Доступные дорожки зависят от файла. Используйте -1, чтобы отключить дорожку; -2 означает «неизвестно» и не может быть выбрано. Нет редактирования, экспорта видео, DRM, картинка‑в‑картинке или постоянного офлайн‑кеша.

Настройки, действия и результаты

Используйте эти имена в Bubble. Планируемые функции отмечены отдельно.

Доступные настройки бета-версии

Настройки элемента

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

Состояния

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

События

source_changedsource_loadedplayback_readyplaying_changedtime_changedendedtracks_changedfullscreen_changedplayer_error

Действия и их входные данные

PlayPauseStop and rewindReload videoSeekSet volumeSet mutedSet playback rateEnter fullscreenSelect audio trackSelect subtitle track
Настройки элемента · 12
source_urltext · По умолчанию: ""
Пример значенияhttps://bestplugins.online/native-samples/lesson.mp4
Пример Bubble выраженияSelected Lesson's video_url
Адрес выбранного аудио, видео или изображения. Используйте тип файла, поддерживаемый этим плагином.
poster_urltext · По умолчанию: ""
Пример значенияhttps://bestplugins.online/native-samples/poster.jpg
Пример Bubble выраженияSelected Lesson's poster_url
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
content_typetext · По умолчанию: "auto"
Пример значенияauto
Пример Bubble выраженияSelected Lesson's video_content_type
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
ratenumber · По умолчанию: 1
Пример значения1.5
Пример Bubble выраженияSpeed Dropdown's value
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
volumenumber · По умолчанию: 1
Пример значения0.8
Пример Bubble выраженияVolume Slider's value
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
mutedyes/no · По умолчанию: false
Пример значенияno
Пример Bubble выраженияMute Checkbox is checked
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
loopyes/no · По умолчанию: false
Пример значенияno
Пример Bubble выраженияSelected Lesson's repeat_enabled
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
is_activeyes/no · По умолчанию: true
Пример значенияyes
Пример Bubble выраженияGuideHost's view_is_active (your yes/no custom state)
Установить «да», пока этот вид открыт. Установить «нет» при закрытии, чтобы воспроизведение или текущая работа могли остановиться.
disabledyes/no · По умолчанию: false
Пример значенияno
Пример Bubble выраженияGuideHost's is_busy (your yes/no custom state)
Отключить элемент, пока приложение занято или действие недоступно.
native_controlsyes/no · По умолчанию: false
Пример значенияno
Пример Bubble выраженияApp Settings' use_native_video_controls
Показать или скрыть стандартные видеоконтролы устройства.
ui_text_jsontext · По умолчанию: "{}"
Пример значения{}
Пример Bubble выраженияApp Settings' player_labels_json (supported keys only)
Необязательный JSON с поддерживаемыми надписями кнопок. Оставьте пустым, чтобы использовать встроенный текст.
languagetext · По умолчанию: "auto"
Пример значенияuk
Пример Bubble выраженияCurrent User's preferred_language
Установите language=auto для следования за поддерживаемым устройством или языком браузера. Введите поддерживаемый код языка, чтобы выбрать его явно.
Действия и их входные данные · 11
Play

Нет параметров действия

Pause

Нет параметров действия

Stop and rewind

Нет параметров действия

Reload video

Нет параметров действия

Seek
position_secondsnumber · По умолчанию: —
Пример значения45
Пример Bubble выраженияSelected Chapter's start_seconds
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Set volume
volumenumber · По умолчанию: —
Пример значения0.8
Пример Bubble выраженияVolume Slider's value
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Set muted
mutedyes/no · По умолчанию: —
Пример значенияno
Пример Bubble выраженияMute Checkbox is checked
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Set playback rate
ratenumber · По умолчанию: —
Пример значения1.5
Пример Bubble выраженияSpeed Dropdown's value
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Enter fullscreen

Нет параметров действия

Select audio track
indexnumber · По умолчанию: —
Пример значения0
Пример Bubble выраженияSelected row's current_source_index
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Select subtitle track
indexnumber · По умолчанию: —
Пример значения0
Пример Bubble выраженияSelected row's current_source_index
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Состояния и события

Состояния

is_playing · yes/no

Текущее значение выбранного элемента. Читайте его после связанного события.

is_buffering · yes/no

Текущее значение выбранного элемента. Читайте его после связанного события.

pending_play · yes/no

Текущее значение выбранного элемента. Читайте его после связанного события.

is_live · yes/no

Текущее значение выбранного элемента. Читайте его после связанного события.

muted · yes/no

Текущее значение выбранного элемента. Читайте его после связанного события.

loop · yes/no

Текущее значение выбранного элемента. Читайте его после связанного события.

has_source · yes/no

Текущее значение выбранного элемента. Читайте его после связанного события.

is_fullscreen · yes/no

Текущее значение выбранного элемента. Читайте его после связанного события.

position_seconds · number

Текущее значение выбранного элемента. Читайте его после связанного события.

duration_seconds · number

Текущее значение выбранного элемента. Читайте его после связанного события.

volume · number

Текущее значение выбранного элемента. Читайте его после связанного события.

rate · number

Текущее значение выбранного элемента. Читайте его после связанного события.

source_generation · number

Текущее значение выбранного элемента. Читайте его после связанного события.

selected_audio_index · number

Текущее значение выбранного элемента. Читайте его после связанного события.

selected_subtitle_index · number

Текущее значение выбранного элемента. Читайте его после связанного события.

status · text

Текущий результат этого действия. Используйте соответствующее событие завершения перед сохранением успеха. idle,loading,readyToPlay,error

audio_tracks_json · text

Текущее значение выбранного элемента. Читайте его после связанного события.

subtitle_tracks_json · text

Текущее значение выбранного элемента. Читайте его после связанного события.

error_code · text

Информация об ошибке последнего действия. Показать полезное сообщение и предложить соответствующий повтор.

error_message · text

Информация об ошибке последнего действия. Показать полезное сообщение и предложить соответствующий повтор.

События

source_changed

Когда происходит это событие, считайте связанные состояния из того же элемента.

source_loaded

Когда происходит это событие, считайте связанные состояния из того же элемента.

playback_ready

Когда происходит это событие, считайте связанные состояния из того же элемента.

playing_changed

Когда происходит это событие, считайте связанные состояния из того же элемента.

time_changed

Когда происходит это событие, считайте связанные состояния из того же элемента.

ended

Когда происходит это событие, считайте связанные состояния из того же элемента.

tracks_changed

Когда происходит это событие, считайте связанные состояния из того же элемента.

fullscreen_changed

Когда происходит это событие, считайте связанные состояния из того же элемента.

player_error

Когда происходит это событие, считайте связанные состояния из того же элемента.

Вопросы, которые задают разработчики

Можно ли экспортировать выбранный сегмент?

Нет. Seek и полноэкранный режим меняют воспроизведение, а не байты видео.

Как работает подписка?

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.

Связанные руководства

Для получения помощи укажите, какой плагин и устройство вы используете, какое действие пытались выполнить и что произошло. Приведите пример без персональных данных. Никогда не делитесь своим ключом или личными файлами.