
© 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. Замените их своими типами данных и именами элементов. Примерные медиа‑адреса необходимо заменить вашими файлами.
Установите source_url = Selected Lesson's video_url и poster_url = Selected Lesson's poster_url. Используйте auto или progressive для MP4; используйте hls для потока HLS.
После playback_ready используйте Seek, чтобы возобновить с сохранённого position_seconds. Пользователь запускает Play. Установите is_active в зависимости от того, открыт ли просмотр урока.
Добавьте элементы управления Play, Pause, Seek, Set playback rate и Enter fullscreen. Отобразите position_seconds и duration_seconds.
После 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 не являются прямым видеофайлом. Воспроизведение не требует доступа к камере или микрофону.
Настройте один раз
- Создайте или выберите ваш проект Bubble в BestPlugins → Dashboard → Plugins.
- Выберите этот плагин и скопируйте его ключ проекта.
- Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
- Добавьте элемент, выберите данные вашего приложения и постройте рабочий процесс ниже.
- 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.
Связанные руководства
Для получения помощи укажите, какой плагин и устройство вы используете, какое действие пытались выполнить и что произошло. Приведите пример без персональных данных. Никогда не делитесь своим ключом или личными файлами.