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...
MovieWriter
Успадковує: Object
Абстрактний клас для нереальних відеореєстраторів.
Опис
Godot може записувати відео без симуляції в реальному часі. Як і аргумент командного рядка --fixed-fps Використання командного рядка, це змушує повідомлену delta у функціях Node._process() бути ідентичною для всіх кадрів, незалежно від того, скільки часу фактично знадобилося для рендерингу кадру. Це можна використовувати для запису високоякісних відео з ідеальним темпом кадрів незалежно від можливостей вашого обладнання.
Godot має 3 вбудовані MovieWriter:
Контейнер OGV з Theora для відео та Vorbis для аудіо (розширення файлу
.ogv). Стиснення з втратами, середні розміри файлів, швидке кодування. Якість стиснення з втратами можна налаштувати, змінивши ProjectSettings.editor/movie_writer/video_quality та ProjectSettings.editor/movie_writer/ogv/audio_quality. Отриманий файл можна переглянути в Godot за допомогою VideoStreamPlayer та більшості відеоплеєрів, але не у веббраузерах, оскільки вони не підтримують Theora.Контейнер AVI з MJPEG для відео та нестисненого аудіо (розширення файлу
.avi). Стиснення з втратами, середні розміри файлів, швидке кодування. Якість стиснення з втратами можна налаштувати, змінивши ProjectSettings.editor/movie_writer/video_quality. Отриманий файл можна переглянути в більшості відеоплеєрів, але його потрібно конвертувати в інший формат для перегляду в Інтернеті або в Godot за допомогою VideoStreamPlayer. MJPEG не підтримує прозорість. Вихід AVI наразі обмежений файлом розміром не більше 4 ГБ.Послідовність зображень PNG для відео та WAV для аудіо (розширення файлу
.png). Стиснення без втрат, великі розміри файлів, повільне кодування. Розроблено для кодування у відеофайл за допомогою іншого інструменту, такого як FFmpeg після запису. Прозорість наразі не підтримується, навіть якщо кореневий переглядовий екран налаштовано на прозорість.
Якщо вам потрібно кодувати в інший формат або передати потік через стороннє програмне забезпечення, ви можете розширити клас MovieWriter для створення власних програм для запису фільмів. Зазвичай це слід робити за допомогою GDExtension з міркувань продуктивності.
Використання редактора: Шлях до файлу фільму за замовчуванням можна вказати в ProjectSettings.editor/movie_writer/movie_file. Крім того, для запуску окремих сцен до кореневого вузла можна додати метадані movie_file, вказуючи шлях до файлу фільму, який буде використовуватися під час запису цієї сцени. Після встановлення шляху клацніть значок відеоролика у верхньому правому куті редактора, щоб увімкнути режим Movie Maker, а потім запустіть будь-яку сцену як завжди. Двигун почне запис, як тільки завершиться заставка, і зупинить запис лише після завершення роботи движка. Знову клацніть значок відеоролика, щоб вимкнути режим Movie Maker. Зверніть увагу, що перемикання в режим Movie Maker не впливає на екземпляри проекту, які вже запущені.
Примітка: MovieWriter доступний для використання як у редакторі, так і в експортованих проектах, але він не призначений для використання кінцевими користувачами для запису відео під час гри. Гравцям, які бажають записувати ігрові відео, слід встановити такі інструменти, як OBS Studio або SimpleScreenRecorder.
Примітка: Підтримка MJPEG (розширення файлу .avi) залежить від увімкнення модуля jpg під час компіляції (поведінка за замовчуванням).
Примітка: Підтримка OGV (розширення файлу .ogv) залежить від увімкнення модуля theora під час компіляції (поведінка за замовчуванням). Стиснення Theora доступне лише у двійкових файлах редактора.
Методи
_get_audio_mix_rate() virtual required const |
|
_get_audio_speaker_mode() virtual required const |
|
PackedStringArray |
_get_supported_extensions() virtual required const |
_handles_file(path: String) virtual required const |
|
_write_begin(movie_size: Vector2i, fps: int, base_path: String) virtual required |
|
void |
_write_end() virtual required |
_write_frame(frame_image: Image, audio_frame_block: |
|
void |
add_writer(writer: MovieWriter) static |
Описи методів
int _get_audio_mix_rate() virtual required const 🔗
Викликається, коли рівень звуку, що використовується для запису аудіо, запитується двигуном. Повернутий значення необхідно вказати в Гц. За замовчуванням до 48000 Hz, якщо _get_audio_mix_rate() не перейдиден.
SpeakerMode _get_audio_speaker_mode() virtual required const 🔗
Викликається, коли режим аудіодинаміка, який використовується для запису аудіо, запитується двигуном. Це може впливати на кількість вихідних каналів в отриманому аудіо файлі / потоку. За замовчуванням до AudioServer.SPEAKER_MODE_STEREO якщо _get_audio_speaker_mode() не перейдиден.
PackedStringArray _get_supported_extensions() virtual required const 🔗
Returns the list of supported filename extensions for movies written with this MovieWriter.
bool _handles_file(path: String) virtual required const 🔗
Викликається, коли механізм визначає, чи здатний цей MovieWriter обробити файл за path. Має повернути true, якщо цей MovieWriter здатний обробити заданий шлях до файлу, false інакше. Як правило, _handles_file() замінюється таким чином, щоб дозволити користувачеві записувати файл за будь-яким шляхом із заданим розширенням файлу:
func _handles_file(path):
# Дозволяє вказувати вихідний файл із розширенням файлу `.mkv` (незалежно від регістру),
# або в налаштуваннях проекту, або за допомогою аргументу командного рядка `--write-movie <шлях>`.
return path.get_extension().to_lower() == "mkv"
Error _write_begin(movie_size: Vector2i, fps: int, base_path: String) virtual required 🔗
Зателефонуйте, перш ніж почати писати відео та аудіо дані. movie_size - ширина і висота відео, щоб зберегти. fps є число кадрів в секунду, вказаних в налаштуваннях проекту або за допомогою -fixed-fps <fps> command рядок аргумент.
void _write_end() virtual required 🔗
Зателефонуйте, коли двигун завершує написання. Це відбувається, коли двигун кидає, натиснувши кнопку менеджера вікна, або коли називається SceneTree.quit().
Примітка: Пресування Ctrl + C на терміналі, що працює редактор / проект працює not результат _write_end().
Error _write_frame(frame_image: Image, audio_frame_block: const void*) virtual required 🔗
Викликається в кінці кожного рами. frame_image і audio_frame_block аргументи функції повинні бути написані до.
void add_writer(writer: MovieWriter) static 🔗
Додайте письменника, який буде втілено двигуном. Підтримувані розширення файлів можна встановити шляхом перетягування _handles_file().
Примітка: add_parser() повинен бути викликаний рано достатньо в ініціалізації двигуна для роботи, оскільки запис фільму призначений для запуску одночасно, як і решта двигуна.