Відтворення відео

Godot підтримує відтворення відео за допомогою вузла VideoPlayer.

Підтримувані формати відтворення

Єдиним підтримуваним форматом в ядрі є Ogg Theora (не плутати з Ogg Vorbis audio). Розширення можуть додавати підтримку додаткових форматів, але станом на липень 2022 року таких розширень ще не існує.

H.264 і H.265 не підтримуються в ядрі Godot, оскільки обидва вони обтяжені патентами на програмне забезпечення. AV1 не потребує ліцензійних відрахувань, але він повільно декодується на CPU, а апаратна підтримка декодування поки що доступна не на всіх графічних процесорах, що використовуються.

WebM підтримується в основному в Godot 3.x, але його підтримку буде припинено у версії 4.0, оскільки він виявився надто глючним і складним для підтримки. Тому використовувати WebM не рекомендується.

Примітка

Ви можете знайти відео з розширеннями .ogg або .ogx, які є загальними розширеннями даних у контейнері Ogg.

Перейменування цих розширень на .ogv може дозволити імпортувати відео до Godot. Однак не всі файли з розширеннями .ogg або .ogx є відео - деякі з них можуть містити лише аудіо.

Налаштування VideoPlayer

  1. Створіть вузол VideoPlayer за допомогою діалогового вікна Створити новий вузол.

  2. Виберіть вузол VideoPlayer на панелі дерева сцен, перейдіть до інспектора і завантажте файл .ogv у властивість Stream.

  3. Якщо ви хочете, щоб відео почало відтворюватися відразу після завантаження сцени, встановіть галочку Autoplay в інспекторі. Якщо ні, залиште Autoplay вимкненим і викличте play() на вузлі VideoPlayer у скрипті, щоб почати відтворення по необхідності.

Робота зі зміною розміру та різними співвідношеннями сторін

За замовчуванням у Godot 4.0 VideoPlayer автоматично змінює розмір відповідно до роздільної здатності відео. Ви можете зробити так, щоб він відповідав звичайному розміру Control, увімкнувши опцію Expand (Розгорнути) у вузлі VideoPlayer.

Щоб налаштувати зміну розмірів вузла VideoPlayer залежно від розміру вікна, налаштуйте прив'язки за допомогою меню Макет у верхній частині області перегляду 2D-редактора. Однак цього налаштування може бути недостатньо для всіх випадків використання, наприклад, для відтворення повноекранного відео без спотворення зображення (але з порожнім простором по краях). Для більшого контролю ви можете скористатися вузлом AspectRatioContainer, який призначено для обробки таких випадків використання:

Додайте вузол AspectRatioContainer. Переконайтеся, що він не є нащадком іншого вузла контейнера. Виділіть вузол AspectRatioContainer, а потім встановіть його Макет у верхній частині 2D-редактора на Увесь прямокутник. Встановіть Ratio у вузлі AspectRatioContainer відповідно до співвідношення сторін вашого відео. Ви можете використовувати математичні формули в інспекторі, щоб допомогти собі. Не забудьте зробити один з операндів десятковим. Інакше результат ділення завжди буде цілим числом.

Властивість Ratio вузла AspectRatioContainer змінюється в інспекторі редактора

Результат буде (приблизно) 1.777778

Після налаштування AspectRatioContainer зробіть ваш вузол VideoPlayer дочірнім для вузла AspectRatioContainer. Переконайтеся, що у VideoPlayer вимкнено опцію Expand (Розгорнути). Тепер ваше відео має автоматично масштабуватися на весь екран без спотворень.

Дивись також

Дивіться Multiple resolutions для отримання додаткових порад щодо підтримки різних співвідношень сторін у вашому проекті.

Відображення відео на 3D-поверхні

Використовуючи вузол VideoPlayer як нащадка вузла Viewport, можна відобразити будь-який 2D-вузол на 3D-поверхні. Наприклад, це може бути використано для відображення анімованих білбордів, коли покадрова анімація вимагала б занадто багато пам'яті.

Це можна зробити за допомогою наступних кроків:

  1. Створіть вузол Viewport. Встановіть його розмір відповідно до розміру вашого відео у пікселях.

  2. Створіть вузол VideoPlayer в якості нащадка вузла Viewport і вкажіть у ньому шлях до відео. Переконайтеся, що Expand (Розгорнути) вимкнено, а також увімкніть Autoplay (Автовідтворення), якщо це необхідно.

  3. Створіть вузол MeshInstance з ресурсом PlaneMesh або QuadMesh у властивості Mesh. Змініть розмір меша відповідно до співвідношення сторін відео (інакше воно буде виглядати спотвореним).

  4. Створіть новий ресурс SpatialMaterial у властивості Material Override у розділі GeometryInstance.

  5. Увімкніть Local To Scene на SpatialMaterial у розділі Resource (внизу). Це необхідно перед тим, як ви зможете використовувати ViewportTexture у її властивості Albedo Texture.

  6. У SpatialMaterial встановіть для властивості Albedo > Texture значення New ViewportTexture. Відредагуйте новий ресурс, клацнувши його, а потім вкажіть шлях до вузла Viewport у властивості Viewport Path.

  7. Увімкніть Albedo Tex Force sRGB у SpatialMaterial, щоб запобігти розмиванню кольорів.

  8. Якщо білборд має випромінювати власне світло, увімкніть Flags > Unshaded, щоб покращити продуктивність рендерингу.

Дивіться Using Viewports та демонстрацію графічного інтерфейсу у 3D для отримання додаткової інформації про налаштування.

Обмеження відтворення

Існує кілька обмежень у поточній реалізації відтворення відео в Godot:

  • Перегляд відео з певної точки не підтримується.

  • Зміна швидкості відтворення не підтримується. VideoPlayer також не буде виконувати Engine.time_scale.

  • Зациклення не підтримується, але ви можете підключити сигнал вузла VideoPlayer finished до функції, яка буде повторно відтворювати відео. Однак це призведе до появи чорної рамки під час перезапуску відео. Цю проблему можна вирішити, додавши до відеофайлу затухання чорного кольору перед завершенням відео, або приховавши відео на один кадр і показавши TextureRect зі скріншотом першого кадру відео, доки відео не буде перезапущено.

  • Потокове відео з URL-адреси не підтримується.