آموزش پخش ویدیو در یونیتی با کامپوننت Video Player یونیتی
آموزش استفاده از کامپوننت Video Player یونیتی
نسخهی تست شده برای این آموزش، 2018 میباشد
قبلا در «اینلینک»، به روش نمایش ویدیو با استفاده از MovieTexture اشاره کردیم! اما آن روش قبل از این بود که یونیتی، کامپوننت Video Player را عرضه کند! و حالا کامپوننت Video Player یک راه ساده برای نمایش ویدیو و مدیریت آن در هر قسمت از بازی که میخواهیم میباشد و همچنین امکانات زیادی را نیز در اختیارمان قرار میدهد.
مراحل انجام کار
اگر یونیتی شما نسخهی جدید است، میتوانید از منوی GameObject، روی Video و سپس Video Player کلیک کنید تا کامپوننت VideoPlayer روی یک EmptyGameObject جدیدی ایجاد شود. اما همچنان میتوانید از بخش Inspector و سپس Add Component، ویدیو پلیر را به هر آبجکتی که میخواهید اضافه کنید. و در نهایت پس از اضافه کردن این کامپوننت به یک GameObject، موارد زیر را در Inspector آن آبجکت مشاهده میکنید:
ابتدا اجازه دهید خلاصهی هر ویژگی را توضیح دهیم:
- Source نوع منبع ویدیو را مشخص میکند که در حال حاظر شامل Video Clip و URL میباشد.
این دو مقدار به شرح زیر هستند:- Video Clip برای پخش ویدیویی که در Assets (داخل فایلهای بازی) قرار دارد استفاده میشود.
- URL برای پخش ویدیویی که در روی حافظهی دستگاه یا اینترنت قرار دارد استفاده میشود.
- Video Clip این ویژگی در صورت انتخاب Video Clip برای Source، نمایش داده میشود. و میتوان فایل ویدیویی را به Assets اضافه کرده و سپس آن را روی این قسمت درگ کرد.
- URL این ویژگی در صورت انتخاب URL برای Source، نمایش داده میشود. و میتوان مسیر فایلی را از روی سیستم انتخاب کرد. یا آدرس آن را که در اینرنت قرار دارد نوشت.
- Play On Awake به محض اجرای صحنه، ویدیو پخش شود یا خیر.
- Wait For First Frame درصورت فعال بودن، یونیتی قبل از شروع بازی، منتظر اولین فریم از ویدیو جهت نمایش خواهد ماند.
- Loop ویدیو پس از اتمام، از اول پخش شود یا نه؟!
- Playback Speed سرعت پحش ویدیو که در حالت عادی روی 1 قرار دارد.
- Render Mode (حالت نمایشی) یعنی ویدیو قرار است روی چه چیزی رندر یا نمایش داده شود؟!
همچنین ویژگیهای Target Texture و Aspect Ratio که در زیر Render Mode قرار دارند، مربوط به مقدار Render Texture ای هستند که انتخاب کردهایم و در صورت تغییر مقدار آن، این دو گزینه نیز تغیر خواهند کرد. - Audio Output Mode نوع خروجی صدا را مشخص میکند.
نمایش ویدیو در حالت Render Texture
- یک فایل ویدیویی به Assets اضافه کنید.
- ویژگی Source ویدیو پلیر را روی Video Clip قرار دهید.
- فایل ویدیو را از Assets روی ویژگی Video Clip درگ کنید.
در این حالت، چندویژگی جدید Track, Mute و Volume نیز به زیر Audio Output Mode اضافه خواهند شد که مربوط به صدای ویدیو میباشند. - Render Mode را روی Render Texture قرار دهید.
- در Assets راست کلیک کرده و از قسمت Create Render Texture را انتخاب کنید.
- Render Texture ایجاد شده را روی ویژگی Target Texture ویدیو پلیر درگ کنید.
- یک Plane ایجاد کنید.
- Render Texture را روی Plane نیز درگ کنید.
- بازی را اجرا کنید.
در واقع در این حالت، ویدیوی ما روی Render Texture نمایش داده میشود و آن نیز روی یک GameObject ای مثل Plane ترسیم شده است که میتواند روی گیمآبجکتهای دیگری نیز ترسیم شود.
بازی را اجرا کنید تا متوجه پخش ویدیو شوید.
نمایش تمام صفحه در حالت Render Texture
برای اینکه ویدیوی ما در حالت تمام صفحه یا Full Screen نمایش داده شود، میتوانیم Plane را بزرگ کرده و مقابل دوربین قرار دهیم! اما این کار پیچیده بوده و عیبهایی از جمله فاصله دوربین دارد! بنابراین میتوانیم از جالت نمایشی دیگری استفاده کنیم که در ادامه توضیح خواهیم داد.
نمایش ویدیو در حالت Camera
برای Render Mode، دو حالت Camera Far Plane و Camera Near Plane نیز وجود دارد؛ که هردوی اینها برای نمایش ویدیو روی قاب دوربین به کار میروند. اما تفاوتشان در چیست؟!
اگر به ویژگیهای دوربین سری بزنید، دو مقدار Far و Near را در ویژگی Clipping Planes دوربین مشاهده میکنید. و اگر آبجکت دوربین را انتخاب کنید، خواهید دید که دوربین شامل محدودهای از ابتدا تا آنجایی که میتواند نمایش دهد میباشد و این محدوده با Far و Near قابل تغییر است. Near ابتدای محدوده بوده و Far انتهای محدوده میباشد.
بنابراین در حالت Near، ویدیو در ابتدای قاب دوربین نمایش داده خواهد شد که باعث میشود هرچیزی که از Near جلوتر است نمایش داده نشود. اما در حالت Far، ویدیو در انتهای محدودهی دوربین نمایش داده خواهد شد که باعث میشود هر آنچه که بین محدودهی دید Near و Far قرار دارد نیز نمایش داده شود. و در واقع Far همانند پسزمینه یا بکگراند عمل میکند. بنباراین:
- Far = Background (پشت همه چیز)
- Near = Forground (روی همه چیز)
همچنین پس از اینکه Render Mode را روی یکی از Camera ها قرار دهید، ویژگی Camera نیز زیر Render Mode ظاهر خواهد شد که میتوانید برای مثال، Main Camera را روی آن درگ کنید.
ویژگی دیگری نیز به نام Alpha وجود دارد که شفافیت ویدیو را مشخص میکند.
نمایش ویدیو در حالت Material Override
ابتدا به تصویر زیر که خروجی این حالت است دقت کنید:
اگر حالت نمایشی Render Mode را روی Material Override قرار دهیم، ویژگی جدیدی به نام Renderer ظاهر خواهد شد. ما میتوانیم آبجکتی را از محیط بازی روی این ویژگی درگ کنیم تا ویدیو پلیر، کامپوننت Renderer آن آبجکت را دریافت کند؛ سپس طبق تصویر بالا، ویدیو به عنوان متریال روی آبجکت نمایش داده خواهد شد.
شاید بپرسید تفاوت این روش با Render Texture در چیست؟! که تصویر زیر گویای همه چیز است:
نمایش ویدیو در حالت API Only
با این حالت فعلا کاری نداریم و بهتر است در پست جدایی به آن بپردازیم؛ ولی به طور خلاصه، این حالت، ویدیو را در یک VideoPlayer.texture رندر میکند که در کدنویسی بایستی از آن استفاده شود.
استاد میشه بگید چجوری آنلاین یک ویدیو رو پخش کنیم که حجم بالا نره
داخل توضیحات گفته شده. مقدار Source رو به URL تغییر بدید. بعد میتونید استریم کنید. 🙂
ممنون از راهنمایی تون
موفق باشید ?
یک سوال دیگه ببخشید اگه از یوتیوب ویدیو بزارم بدون فیلتر شکن باز میکنه>؟ و 2 جزو بازدید ها حساب میشه؟
ببخشید اینقدر سوال میپرسم
یوتیوب فیلتره. برای پخش ویدیو «این لینک» رو تست کنید. 🙂
ممنون
سلام
ببین یونیتی همه چیزش پایه ای هست خودت باید یه پیغام براش بذاری که در صورت اجرا نشدن تحریم شکن را فعال کنید.
از طرفی چون ویدیو از برنامه اصلی پخش نشده شاید جزو بازدید ها حساب نشه به هر حال خودت یه تست بکن ببین چطوره نتیجه اش رو هم بی زحمت اینجا هم بذار!
موفق باشید!
سلام
لینک ویدیو رو باید گیر بیاری قسمت source رو هم بذار رو URL و زیرش لینک رو پیست کن فقط مواظب باش آخر بخش زیرش که لینک رو پیست کردی یه فاصله ته لینک نباشه چون کار نمیکنه.
بقیش به خلاقیت خودت بستگی داره مثلا می تونی یه تابع به دکمه پخش بدی و توش یه شرط بذاری که اگه نت وصل نبود پیام اینترنت قطع است بیاد و اگه وصل بود ویدیو پخش بشه.
موفق باشی خدانگهدار!