رابط 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 را تنظیم کنید. برای MP4 از auto یا progressive استفاده کنید؛ برای یک جریان 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.

راهنماهای مرتبط

برای دریافت کمک، به ما بگویید از کدام افزونه و دستگاه استفاده می‌کنید، عملی که امتحان کردید و چه اتفاقی افتاد. از مثالی بدون داده‌های شخصی استفاده کنید. هرگز کلید یا فایل‌های خصوصی خود را به اشتراک نگذارید.