Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Створення фільмів
Godot може записувати не в реальному часі відео та аудіо з будь-якого 2D або 3D проекту. Цей тип запису також називається автономним рендерингом. Є багато сценаріїв, коли це корисно:
Запис трейлерів ігор для рекламного використання.
Запис роликів, які displayed as pre-recorded videos у фінальній грі. Це дозволяє використовувати параметри вищої якості (ціною розміру файлу), незалежно від апаратного забезпечення програвача.
Запис процедурно створеної анімації або дизайну руху. Взаємодія з користувачем залишається можливою під час запису відео, а також можна включити аудіо (хоча ви не зможете його почути під час запису відео).
Порівняння візуального результату налаштувань графіки, шейдерів або методів візуалізації в анімованій сцені.
Завдяки анімаційним функціям Godot, таким як вузол AnimationPlayer, Tweeners, частинки та шейдери, його можна ефективно використовувати для створення будь-яких типів 2D та 3D анімацій (і нерухомих зображень).
Якщо ви вже звикли до робочого процесу Godot, ви можете виявити, що ви зможете працювати продуктивніше, використовуючи Godot для рендерингу відео порівняно з Blender. Тим не менш, рендерери, призначені для використання не в реальному часі, такі як Cycles і Eevee, можуть призвести до кращих візуальних ефектів (ціною довшого часу рендерингу).
Порівняно із записом відео в реальному часі деякі переваги запису не в реальному часі включають:
Використовуйте будь-які налаштування графіки (включаючи надзвичайно вимогливі налаштування) незалежно від можливостей вашого обладнання. Вихідне відео завжди матиме ідеальну частоту кадрів; він ніколи не демонструватиме випадання кадрів або заїкання. Швидше апаратне забезпечення дозволить вам відтворити певну анімацію за менший час, але візуальний результат залишиться ідентичним.
Візуалізація з роздільною здатністю, вищою за роздільну здатність екрана, без необхідності покладатися на спеціальні інструменти драйвера, такі як Dynamic Super Resolution від NVIDIA або Virtual Super Resolution від AMD.
Візуалізація з вищою частотою кадрів, ніж цільова частота кадрів відео, а потім post-process to generate high-quality motion blur. Завдяки цьому ефекти, які збігаються в кількох кадрах (наприклад, тимчасове згладжування, SDFGI та об’ємний туман), виглядають краще.
Попередження
Ця функція не призначена для зйомки кадрів у реальному часі під час гри.
Гравцям слід використовувати щось на зразок OBS Studio або SimpleScreenRecorder для запису ігрового відео, оскільки вони роблять набагато краще роботу з перехоплення композитора, ніж Godot може виконати за допомогою Vulkan або OpenGL.
Тим не менш, якщо під час зйомки ваша гра працює зі швидкістю, наближеною до реального часу, ви все одно можете використовувати цю функцію (але вона не відтворюватиме звук, оскільки звук зберігається безпосередньо у відеофайлі).
Увімкнення режиму Movie Maker
Щоб увімкнути режим Movie Maker, клацніть кнопку «мультфільм» у верхньому правому куті редактора перед запуском проекту:
Режим Movie Maker вимкнено, клацніть піктограму «кінороліка», щоб увімкнути
З’явиться меню з опціями для ввімкнення режиму Кіностудії та переходу до налаштувань. Коли режим Кіностудії ввімкнено, значок отримує фоновий колір, що відповідає акцентному кольору:
Режим Movie Maker увімкнено, ще раз клацніть піктограму «кінороліка», щоб вимкнути його
Статус Movie Maker не зберігається під час виходу з редактора, тому за потреби потрібно повторно ввімкнути режим Movie Maker після перезапуску редактора.
Примітка
Перемикання режиму Movie Maker під час виконання проекту не матиме ефекту, доки проект не буде перезапущено.
Перш ніж ви зможете записувати відео, запускаючи проект, вам все одно потрібно налаштувати вихідний шлях до файлу. Цей шлях можна встановити для всіх сцен у налаштуваннях проекту:
Налаштування проекту Movie Maker (з увімкненим перемикачем Advanced)
Крім того, ви можете встановити шлях вихідного файлу для кожної сцени, додавши метадані рядка з назвою movie_file до кореневого вузла сцени. Це використовується лише тоді, коли для основної сцени встановлено відповідну сцену або під час запуску сцени безпосередньо натисканням F6 (Cmd + R на macOS).
Перегляд інспектора після створення метаданих movie_file типу String
Шлях, указаний у налаштуваннях або метаданих проекту, може бути або абсолютним, або відносним до кореня проекту.
Коли ви налаштуєте та ввімкнете режим Movie Maker, він автоматично використовуватиметься під час запуску проекту з редактора.
Використання командного рядка
Movie Maker також можна ввімкнути з command line:
godot --path /path/to/your_project --write-movie output.avi
Якщо вихідний шлях є відносним, то він відносно теки проекту, а не поточного робочого каталогу. У наведеному вище прикладі файл буде записано в /path/to/your_project/output.avi. Ця поведінка подібна до аргументу командного рядка --export-release.
Оскільки вихідна роздільна здатність Movie Maker встановлюється розміром вікна перегляду, ви можете змінити розмір вікна під час запуску, щоб змінити його, якщо проект використовує disabled або canvas_items stretch mode:
godot --path /path/to/your_project --write-movie output.avi --resolution 1280x720
Зауважте, що розмір вікна обмежується роздільною здатністю вашого дисплея. Перегляньте Візуалізація з роздільною здатністю, вищою за роздільну здатність екрана, якщо вам потрібно записати відео з роздільною здатністю, вищою за роздільну здатність екрана.
FPS запису також можна змінити в командному рядку без необхідності редагувати параметри проекту:
godot --path /path/to/your_project --write-movie output.avi --fixed-fps 30
Примітка
Аргументи командного рядка --write-movie і --fixed-fps доступні в експортованих проектах. Режим Movie Maker не можна перемикати під час роботи проекту, але ви можете використовувати метод OS.execute() для запуску другого екземпляра експортованого проекту, який записуватиме відеофайл.
Вибір вихідного формату
Формати виводу надаються класом MovieWriter. Godot має 3 вбудовані класи MovieWriters, а інші можна реалізувати за допомогою розширень:
OGV (рекомендовано)
Контейнер OGV з Theora для відео та Vorbis для аудіо. Має втратне стиснення відео та аудіо з хорошим балансом розміру файлу та швидкості кодування, з кращою якістю зображення, ніж MJPEG. Має 4 рівні швидкості, які можна налаштувати, змінивши Редактор > Movie Writer > Швидкість кодування, найшвидший з яких приблизно такий же швидкий, як AVI, з кращим стисненням. На нижчих рівнях швидкості він може стискати ще краще, зберігаючи ту саму якість зображення. Якість стиснення з втратами можна налаштувати, змінивши Editor > Movie Writer > Video Quality для відео та Editor > Movie Writer > Audio Quality для аудіо.
Інтервал ключових кадрів можна налаштувати, змінивши налаштування Редактор > Автор фільму > Інтервал ключових кадрів. У деяких випадках збільшення цього параметра може покращити ефективність стиснення без негативних наслідків.
Отриманий файл можна переглянути в Godot за допомогою VideoStreamPlayer та більшості відеоплеєрів, але не веббраузерів. OGV не підтримує прозорість.
Щоб використовувати OGV, вкажіть шлях до файлу .ogv, який потрібно створити, у налаштуваннях проєкту Редактор > Автор фільму > Файл фільму.
Примітка
OGV можна записувати лише у збірках редактора. З іншого боку, OGV playback можливе як у збірках редактора, так і в шаблонах експорту.
AVI
Контейнер AVI з MJPEG для відео та нестисненого аудіо. Має стиснення відео з втратами, що забезпечує середній розмір файлів і швидке кодування. Якість стиснення з втратами можна налаштувати, змінивши Редактор > Movie Writer > Якість відео.
Отриманий файл можна переглядати в більшості відеопрогравачів, але його потрібно конвертувати в інший формат для перегляду в Інтернеті або Godot за допомогою вузла VideoStreamPlayer. MJPEG не підтримує прозорість. Вихід AVI наразі обмежений розміром файлу не більше 4 ГБ.
Щоб використовувати AVI, вкажіть шлях до файлу .avi, який потрібно створити, у налаштуваннях проекту Редактор > Автор фільму > Файл фільму.
PNG
Послідовність зображень PNG для відео та WAV для аудіо. Функції стиснення відео без втрат за рахунок великих розмірів файлів і повільного кодування. Це призначено для encoded to a video file with an external tool after recording.
Прозорість підтримується, але для властивості transparent_bg у кореневому вікні перегляду має встановлено значення true, щоб прозорість була видимою на вихідному зображенні. Цього можна досягти, увімкнувши розширене налаштування проекту Відтворення > Прозорий фон. Дисплей > Вікно > Розмір > Прозорий і Дисплей > Вікно > Прозорість на піксель > Увімкнено можна додатково ввімкнути, щоб дозволити прозорість для попереднього перегляду під час запису відео, але їх не обов’язково вмикати для вихідне зображення містить прозорість.
Щоб використовувати PNG, укажіть файл .png, який потрібно створити, у параметрах проекту Редактор > Сценарист фільму > Файл фільму. Згенерований файл .wav матиме таку саму назву, що й файл .png (без розширення).
Кастом
Якщо вам потрібно закодувати безпосередньо в інший формат або передати потік через стороннє програмне забезпечення, ви можете розширити клас MovieWriter, щоб створити власні автори фільмів. Зазвичай це слід робити за допомогою GDExtension з міркувань продуктивності.
Налаштування
У розділі Редактор > Сценарист фільму у параметрах проекту є кілька параметрів, які можна налаштувати. Деякі з них відображаються лише після ввімкнення перемикача Додатково у верхньому правому куті діалогового вікна налаштувань проекту.
Швидкість змішування, Гц: Швидкість змішування аудіо для використання в записаному аудіо під час написання фільму. Це може відрізнятися від швидкості змішування проекту, але це значення має ділитися на записану частоту кадрів в секунду, щоб запобігти десинхронізації звуку з часом.
Режим динаміка: Режим динаміка для використання в записаному аудіо під час написання фільму (стерео, об’ємний звук 5.1 або об’ємний звук 7.1).
Якість відео: Якість зображення, яка використовується при запису відео у файл OGV або AVI, від
0.01до1.0(включно). Вищі значення якості забезпечують кращий вигляд вихідного файлу, але збільшують його розмір. Рекомендовані значення якості знаходяться в діапазоні від0,75до0,9. Навіть при якості1,0стиснення залишається з втратами. Це налаштування не впливає на якість звуку і ігнорується при запису в послідовність зображень PNG.Файл фільму: вихідний шлях для фільму. Це може бути абсолютним або відносним до кореня проекту.
Вимкнути V-Sync: якщо ввімкнено, під час написання фільму вимагається вимкнути V-Sync. Це може пришвидшити запис відео, якщо апаратне забезпечення достатньо швидке для рендерингу, кодування та збереження відео з частотою кадрів, вищою за частоту оновлення монітора. Цей параметр не діє, якщо операційна система або графічний драйвер примусово вмикає V-Sync, але програми не можуть вимкнути його.
FPS: Відтворені кадри за секунду у вихідному відео. Вищі значення забезпечують плавнішу анімацію за рахунок довшого часу візуалізації та більшого розміру вихідного файлу. Більшість платформ відеохостингу не підтримують значення FPS, вищі за 60, але ви можете використовувати вище значення та використовувати його для створення розмиття руху.
Якість звуку: Якість звуку, яка використовується при запису відео в файл OGV, в діапазоні від
-0.1до1.0(включно). Більш високі значення якості забезпечують кращу якість звуку за рахунок незначного збільшення розміру файлу. Рекомендовані значення якості знаходяться в діапазоні від0.3до0.5. Навіть при якості1.0стиснення залишається з втратами.Швидкість кодування: Рівень швидкості, який слід використовувати під час запису відео у файл OGV. Вищі рівні швидкості мають меншу ефективність стиснення. Якість зображення залишається майже незмінною.
Інтервал ключових кадрів: також відомий як GOP (Group Of Pictures), максимальна кількість кадрів, що використовуються при записі в файл OGV. Більш високі значення можуть покращити ефективність стиснення без втрати якості, але за рахунок уповільнення пошуку відео.
Примітка
Під час використання режимів disabled або 2d stretch, роздільна здатність вихідного файлу встановлюється розміром вікна. Обов’язково змініть розмір вікна до завершення заставки. Для цього рекомендується налаштувати додаткові параметри проекту Дисплей > Вікно > Розмір > Перевизначення ширини вікна та Перевизначення висоти вікна.
Дивіться також Візуалізація з роздільною здатністю, вищою за роздільну здатність екрана.
Вихід із режиму Movie Maker
Щоб безпечно вийти з проекту, який використовує режим Movie Maker, скористайтеся кнопкою X у верхній частині вікна або викличте get_tree().quit() у сценарії. Ви також можете використовувати аргумент командного рядка --quit-after N, де N — це кількість кадрів, які потрібно відобразити перед виходом.
Натискання F8 (Cmd + . на macOS) або натискання Ctrl + C у терміналі, де працює Godot, не рекомендується, оскільки це призведе до створення неправильно відформатованого файлу AVI без інформації про тривалість. Для послідовностей зображень PNG, зображення PNG не будуть змінені, але пов'язаний файл WAV все одно не матиме інформації про тривалість. Файли OGV можуть мати дещо різну тривалість відео- та аудіодоріжок, але все одно залишатимуться дійсними.
Деякі відеопрогравачі все ще можуть відтворювати файли AVI або WAV із робочим відео та аудіо. Проте програмне забезпечення, яке використовує файли AVI або WAV, наприклад відеоредактори, може не відкрити файл. Using a video converter program може допомогти в таких випадках.
Якщо ви використовуєте AnimationPlayer для керування «основною дією» в сцені (наприклад, рухом камери), ви можете ввімкнути властивість Відео завершити після закінчення у відповідному вузлі AnimationPlayer. Якщо ввімкнено, ця властивість змусить Godot завершити роботу самостійно, коли відтворення анімації закінчено і система працює в режимі Movie Maker. Зауважте, що ця властивість не впливає на циклічні анімації. Тому вам потрібно переконатися, що анімація встановлена як незациклена.
Використання якісних графічних налаштувань
movie feature tag можна використовувати для перевизначення певних налаштувань проекту. Це корисно для ввімкнення високоякісних графічних налаштувань, які не будуть достатньо швидкими для роботи в режимі реального часу на вашому обладнанні. Пам’ятайте, що встановлення максимального значення кожного параметра все одно може сповільнити швидкість збереження відео, особливо під час запису з вищою роздільною здатністю. Тому все одно рекомендується збільшувати параметри графіки лише в тому випадку, якщо вони істотно впливають на вихідне зображення.
Цей тег функції також можна запитувати в сценарії, щоб збільшити параметри якості, встановлені в ресурсі середовища. Наприклад, для подальшого вдосконалення деталей SDFGI та зменшення витоку світла:
extends Node3D
func _ready():
if OS.has_feature("movie"):
# When recording a movie, improve SDFGI cell density
# without decreasing its maximum distance.
get_viewport().world_3d.environment.sdfgi_min_cell_size *= 0.25
get_viewport().world_3d.environment.sdfgi_cascades = 8
using Godot;
public partial class MyNode3D : Node3D
{
public override void _Ready()
{
if (OS.HasFeature("movie"))
{
// When recording a movie, improve SDFGI cell density
// without decreasing its maximum distance.
GetViewport().World3D.Environment.SdfgiMinCellSize *= 0.25f;
GetViewport().World3D.Environment.SdfgiCascades = 8;
}
}
}
Візуалізація з роздільною здатністю, вищою за роздільну здатність екрана
Загальну якість візуалізації можна значно покращити за допомогою візуалізації у високій роздільній здатності, наприклад 4K або 8K.
Примітка
Для 3D-рендерінгу Godot надає розширені параметри проекту Відтворення > Масштабування 3D > Масштаб, які можна встановити вище 1.0, щоб отримати згладжування супервибірки. Тоді 3D-візуалізація зменшується, коли вона малюється у вікні перегляду. Це забезпечує дорогу, але високоякісну форму згладжування без збільшення кінцевої роздільної здатності.
Спершу скористайтеся цим параметром проекту, оскільки він дозволяє уникнути уповільнення швидкості запису фільму та збільшення розміру вихідного файлу порівняно зі збільшенням вихідної роздільної здатності.
Якщо ви бажаєте відтворити 2D із вищою роздільною здатністю або якщо вам справді потрібна більша вихідна кількість необроблених пікселів для 3D-відтворення, ви можете збільшити роздільну здатність вище, ніж дозволяє екран.
За замовчуванням Godot використовує в проектах вимкнені stretch modes. Якщо використовується режим розтягування disabled або canvas_items, розмір вікна визначає роздільну здатність вихідного відео.
З іншого боку, якщо проект налаштовано на використання режиму розтягування viewport, роздільна здатність вікна перегляду визначає роздільну здатність вихідного відео. Роздільна здатність вікна перегляду встановлюється за допомогою параметрів проекту Дисплей > Вікно > Розмір > Ширина вікна перегляду і Висота вікна перегляду. Це можна використовувати для відтворення відео з роздільною здатністю, вищою за роздільну здатність екрана.
Щоб зменшити вікно під час запису, не впливаючи на роздільну здатність вихідного відео, ви можете встановити Дисплей > Вікно > Розмір > Заміна ширини вікна і Window Height Override розширені параметри проекту на значення, що перевищують 0.
Щоб застосувати заміну роздільної здатності лише під час запису фільму, ви можете змінити ці параметри за допомогою movie feature tag.
Етапи постобробки
Нижче наведено кілька типових етапів постобробки.
Примітка
У разі використання кількох етапів постобробки спробуйте виконати їх усі в одній команді FFmpeg. Це заощадить час кодування та покращить якість завдяки уникненню кількох кроків кодування з втратами.
Конвертування відео OGV/AVI в MP4
Хоча деякі платформи, такі як YouTube, підтримують пряме завантаження файлу AVI, багато інших потребують попереднього перетворення. HandBrake (GUI) і FFmpeg (CLI) є популярними інструментами з відкритим кодом для цієї мети. FFmpeg має крутішу криву навчання, але він потужніший.
Наведена нижче команда перетворює відео OGV/AVI у відео MP4 (H.264) із постійним коефіцієнтом швидкості (CRF) 15. У результаті отримується відносно великий файл, але він добре підходить для платформ, які перекодують ваші відео для зменшення їх розміру (наприклад, більшість веб-сайтів для обміну відео):
ffmpeg -i input.avi -crf 15 output.mp4
Щоб отримати менший файл ціною якості, збільште значення CRF у наведеній вище команді.
Щоб отримати файл із кращим співвідношенням розмір/якість (ціною меншого часу кодування), додайте -preset veryslow перед -crf 15 у наведеній вище команді. Навпаки, -preset veryfast можна використовувати для досягнення швидшого кодування ціною гіршого співвідношення розмір/якість.
Перетворення послідовності зображень PNG + аудіо WAV у відео
Якщо ви вирішите записати послідовність зображень у форматі PNG із файлом WAV поруч, вам потрібно перетворити його на відео, перш ніж ви зможете використовувати його в іншому місці.
Ім’я файлу для послідовності зображень у форматі PNG, згенероване Godot, завжди містить 8 цифр, починаючи з 0 із доповненням до нуля. Якщо ви вкажете вихідний шлях folder/example.png, Godot запише folder/example00000000.png, folder/example00000001.png і так далі в цій папці. Аудіо буде збережено в folder/example.wav.
FPS вказується за допомогою аргументу -r. Він повинен відповідати FPS, указаному під час запису. Інакше відео виглядатиме сповільненим або прискореним, а звук не буде синхронізований із відео.
ffmpeg -r 60 -i input%08d.png -i input.wav -crf 15 output.mp4
Якщо ви записали послідовність зображень PNG із увімкненою прозорістю, вам потрібно використовувати відеоформат, який підтримує збереження прозорості. MP4/H.264 не підтримує збереження прозорості, тому ви можете використовувати WebM/VP9 як альтернативу:
ffmpeg -r 60 -i input%08d.png -i input.wav -c:v libvpx-vp9 -crf 15 -pix_fmt yuva420p output.webm
Нарізка відео
Ви можете обрізати частини відео, які не хочете зберігати після запису відео. Наприклад, щоб відкинути все до 12,1 секунди та залишити лише 5,2 секунди відео після цієї точки:
ffmpeg -i input.avi -ss 00:00:12.10 -t 00:00:05.20 -crf 15 output.mp4
Cutting videos can also be done with the GUI tool LosslessCut.
Зміна розміру відео
Наступна команда змінює розмір відео до 1080 пікселів у висоту (1080p), зберігаючи існуюче співвідношення сторін:
ffmpeg -i input.avi -vf "scale=-1:1080" -crf 15 output.mp4
Зменшення частоти кадрів
Наступна команда змінює частоту кадрів відео до 30 FPS, відкидаючи деякі вихідні кадри, якщо їх більше у вхідному відео:
ffmpeg -i input.avi -r 30 -crf 15 output.mp4
Створення накопичувального розмиття в русі за допомогою FFmpeg
Godot не має вбудованої підтримки розмиття руху, але його все одно можна створити у записаних відео.
Якщо ви записуєте відео з частотою кадрів, кратною вихідній частоті кадрів, ви можете змішати кадри разом, а потім зменшити частоту кадрів, щоб отримати відео з розмиттям у русі. Це розмиття в русі може виглядати дуже добре, але для його створення може знадобитися багато часу, оскільки вам потрібно візуалізувати набагато більше кадрів на секунду (додатково до часу, витраченого на постобробку).
Приклад із вихідним відео з частотою 240 кадрів/с, яке створює 4-кратне розмиття в русі та зменшує вихідну частоту кадрів до 60 кадрів/с:
ffmpeg -i input.avi -vf "tmix=frames=4, fps=60" -crf 15 output.mp4
Це також робить ефекти, які збігаються в кількох кадрах (наприклад, часове згладжування, SDFGI та об’ємний туман), збігаються швидше і, отже, виглядають краще, оскільки вони зможуть працювати з більшою кількістю даних у певний момент часу. Перегляньте Зменшення частоти кадрів, якщо ви хочете отримати цю перевагу без додавання розмиття руху.