Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Filme erstellen

Godot kann Nicht-Echtzeit Video und Audio von jedem 2D- oder 3D-Projekt aufzeichnen. Diese Art der Aufzeichnung wird auch als Offline-Rendering bezeichnet. Es gibt viele Szenarien, in denen dies nützlich ist:

  • Aufnahme von Spieltrailern für Werbezwecke.

  • Aufzeichnen von Zwischensequenzen, die im fertigen Spiel als voraufgezeichnete Videos angezeigt werden. Dies ermöglicht die Verwendung höherer Qualitätseinstellungen (auf Kosten der Dateigröße), unabhängig von der Hardware des Spielers.

  • Aufzeichnung von prozedural generierten Animationen oder Motion Design. Während der Videoaufzeichnung ist eine Benutzerinteraktion weiterhin möglich, und auch Audio kann aufgenommen werden (obwohl Sie es während der Videoaufzeichnung nicht hören können).

  • Vergleich der visuellen Ausgabe von Grafikeinstellungen, Shadern oder Rendering-Methoden in einer animierten Szene.

Mit den Godot-Animationsfunktionen wie dem AnimationPlayer-Node, Tweenern, Partikeln und Shadern können Sie jede Art von 2D- und 3D-Animationen (und Standbildern) effektiv erstellen.

Wenn Sie sich bereits an den Arbeitsablauf von Godot gewöhnt haben, können Sie mit Godot für das Rendering von Videos produktiver sein als mit Blender. Abgesehen davon können Renderer, die für die Nicht-Echtzeit-Nutzung entwickelt wurden, wie Cycles und Eevee, zu besseren Bildern führen (auf Kosten längerer Rendering-Zeiten).

Im Vergleich zur Videoaufzeichnung in Echtzeit bietet die Aufzeichnung in Nicht-Echtzeit einige Vorteile:

  • Verwenden Sie alle Grafikeinstellungen (einschließlich extrem anspruchsvoller Einstellungen), unabhängig von den Möglichkeiten Ihrer Hardware. Das ausgegebene Video hat immer einen perfekten Bildrhythmus; es wird niemals unterbrochene Bilder oder Stutter aufweisen. Mit schnellerer Hardware können Sie eine bestimmte Animation in kürzerer Zeit rendern, aber die visuelle Ausgabe bleibt identisch.

  • Rendern Sie mit einer höheren Auflösung als der Bildschirmauflösung, ohne auf treiberspezifische Tools wie NVIDIAs Dynamic Super Resolution oder AMDs Virtual Super Resolution zurückgreifen zu müssen.

  • Rendern Sie mit einer höheren Framerate als der Ziel-Framerate des Videos und erzeugen Sie dann durch Nachbearbeitung eine qualitativ hochwertige Bewegungsunschärfe. Dies lässt auch Effekte, die über mehrere Frames konvergieren (wie temporales Antialiasing, SDFGI und volumetrischer Nebel) besser aussehen.

Warnung

Dieses Feature ist nicht für die Aufnahme von Echtzeit-Filmmaterial während des Spiels gedacht.

Spieler sollten etwas wie OBS Studio oder SimpleScreenRecorder verwenden, um Gameplay-Videos aufzunehmen, da sie den Compositor viel besser abfangen, als Godot es mit Vulkan oder OpenGL nativ kann.

Wenn Ihr Spiel bei der Aufnahme nahezu in Echtzeit läuft, können Sie dieses Feature dennoch nutzen (allerdings fehlt dann die Tonwiedergabe, da der Ton direkt in der Videodatei gespeichert wird).

Aktivieren des Movie Maker-Modus

Um den Movie Maker-Modus zu aktivieren, klicken Sie auf den Button mit der Filmspule in der oberen rechten Ecke des Editors, bevor Sie das Projekt starten:

Wenn der Movie Maker-Modus deaktiviert ist, klicken Sie auf das Filmspulen-Icon, um ihn zu aktivieren

Wenn der Movie Maker-Modus deaktiviert ist, klicken Sie auf das Filmspulen-Icon, um ihn zu aktivieren

Das Icon erhält einen Hintergrund in der Akzentfarbe, wenn der Movie Maker-Modus aktiviert ist:

Wenn der Movie Maker-Modus aktiviert ist, klicken Sie erneut auf das Filmspulen-Icon, um ihn zu deaktivieren

Wenn der Movie Maker-Modus aktiviert ist, klicken Sie erneut auf das Filmspulen-Icon, um ihn zu deaktivieren

Der Movie Maker-Status wird nicht beibehalten, wenn der Editor beendet wird, so dass Sie den Movie Maker-Modus bei Bedarf nach dem Neustart des Editors erneut aktivieren müssen.

Bemerkung

Wenn Sie den Movie Maker-Modus ein- oder ausschalten, während das Projekt läuft, hat dies keine Auswirkungen, bis das Projekt neu gestartet wird.

Bevor Sie ein Video aufnehmen können, indem Sie das Projekt ausführen, müssen Sie noch den Pfad der Ausgabedatei konfigurieren. Dieser Pfad kann für alle Szenen in den Projekteinstellungen festgelegt werden:

Movie Maker-Projekteinstellungen (mit aktivierter Option "Erweitert")

Movie Maker-Projekteinstellungen (mit aktivierter Option "Erweitert")

Alternativ können Sie den Pfad der Ausgabedatei für jede Szene festlegen, indem Sie String-Metadaten mit dem Namen movie_file zum Root-Node der Szene hinzufügen. Dies wird nur verwendet, wenn die Hauptszene auf die betreffende Szene eingestellt ist, oder wenn die Szene direkt durch Drücken von F6 (Cmd + R unter macOS) gestartet wird.

Inspektor-Ansicht nach dem Erstellen von ``movie_file``-Metadaten vom Typ String

Inspektor-Ansicht nach dem Erstellen von movie_file-Metadaten vom Typ String

Der in den Projekteinstellungen oder Metadaten angegebene Pfad kann entweder absolut oder relativ zum Root des Projekts sein.

Sobald Sie den Movie Maker-Modus konfiguriert und aktiviert haben, wird er automatisch verwendet, wenn Sie das Projekt im Editor ausführen.

Nutzung der Kommandozeile

Movie Maker kann auch über die Kommandozeile aktiviert werden:

godot --path /path/to/your_project --write-movie output.avi

Wenn der Ausgabepfad relativ ist, dann ist er relativ zum Projektordner, nicht zum aktuellen Arbeitsverzeichnis. Im obigen Beispiel wird die Datei nach /pfad/zu/ihrem_projekt/output.avi geschrieben. Dieses Verhalten ist vergleichbar mit dem Kommandozeilenargument --export.

Da die Ausgabeauflösung von Movie Maker durch die Größe des Viewports bestimmt wird, können Sie die Fenstergröße beim Start anpassen, um sie zu überschreiben, wenn das Projekt den Modus disabled oder canvas_items Stretch-Mode verwendet:

godot --path /path/to/your_project --write-movie output.avi --resolution 1280x720

Beachten Sie, dass die Fenstergröße von der Auflösung Ihres Bildschirms abhängt. Siehe Rendering mit einer höheren Auflösung als der Bildschirmauflösung, wenn Sie ein Video mit einer höheren Auflösung als der Bildschirmauflösung aufnehmen möchten.

Die Aufnahme-FPS können auch über die Befehlszeile überschrieben werden, ohne dass die Projekteinstellungen bearbeitet werden müssen:

godot --path /path/to/your_project --write-movie output.avi --fixed-fps 30

Bemerkung

Die Kommandozeilenargumente --write-movie und --fixed-fps sind beide in exportierten Projekten verfügbar. Der Movie Maker-Modus kann nicht ein- oder ausgeschaltet werden, während das Projekt läuft, aber Sie können die Methode OS.execute() verwenden, um eine zweite Instanz des exportierten Projekts zu starten, die eine Videodatei aufnimmt.

Auswahl eines Ausgabeformats

Die Ausgabeformate werden von der Klasse MovieWriter bereitgestellt. Godot hat 2 Built-in-MovieWriters, und weitere können durch Extensions implementiert werden:

PNG

PNG-Bildsequenz für Video und WAV für Audio. Verfügt über eine verlustfreie Videokomprimierung, allerdings zum Preis einer großen Dateigröße und einer langsamen Kodierung. Dies ist für die Codierung in eine Videodatei mit einem externen Tool nach der Aufnahme von gedacht.

Transparenz wird unterstützt, aber der Root-Viewport muss seine Property transparent_bg auf true gesetzt haben, damit die Transparenz im Ausgabebild sichtbar wird. Dies kann erreicht werden, indem die erweiterte Projekteinstellung Rendern > Transparenter Hintergrund aktiviert wird. Anzeige > Fenster > Größe > Transparent und Anzeige > Fenster > Transparenz pro Pixel > Aktiviert können optional aktiviert werden, damit die Transparenz während der Videoaufzeichnung in der Vorschau angezeigt werden kann.

Um PNG zu verwenden, geben Sie in der Projekteinstellung Editor > Movie Writer > Movie-Datei eine zu erstellende .png-Datei an. Die erzeugte .wav-Datei hat den gleichen Namen wie die .png-Datei (ohne die Erweiterung).

Benutzerdefiniert

Wenn Sie direkt in ein anderes Format kodieren oder einen Stream durch Software von Drittanbietern leiten müssen, können Sie die MovieWriter-Klasse erweitern, um Ihre eigenen Movie Writer zu erstellen. Dies sollte aus Gründen der Performance in der Regel mit GDExtension geschehen.

Konfiguration

Im Abschnitt Editor > Movie Writer der Projekteinstellungen können Sie verschiedene Optionen konfigurieren. Einige davon sind nur sichtbar, wenn Sie den Schalter Erweitert in der oberen rechten Ecke des Dialogfelds Projekteinstellungen aktivieren.

  • Mix-Rate Hz: Die Audio-Mix-Rate, die beim Schreiben eines Films für das aufgenommene Audio verwendet wird. Dieser Wert kann sich von der Mix-Rate des Projekts unterscheiden, muss aber durch die aufgezeichneten FPS teilbar sein, um zu verhindern, dass das Audio im Laufe der Zeit desynchronisiert wird.

  • Lautsprechermodus: Der Lautsprechermodus, der beim Schreiben eines Films für die Tonaufnahme verwendet werden soll (Stereo, 5.1 Surround oder 7.1 Surround).

  • MJPEG-Qualität: Die JPEG-Qualität, die beim Schreiben eines Videos in eine AVI-Datei verwendet werden soll, liegt zwischen 0.01 und 1.0 (inklusive). Höhere Qualitätswerte führen zu einer besser aussehenden Ausgabe zum Preis einer größeren Dateigröße. Empfohlene Qualitätswerte liegen zwischen 0.75 und 0.9. Selbst bei der Qualität 1.0 bleibt die JPEG-Kompression verlustbehaftet. Diese Einstellung hat keinen Einfluss auf die Audioqualität und wird beim Schreiben in eine PNG-Bildsequenz ignoriert.

  • Movie-Datei: Der Ausgabepfad für den Film. Dieser kann absolut oder relativ zum Root des Projekts sein.

  • V-Sync deaktivieren: Wenn aktiviert, wird V-Sync beim Schreiben eines Films deaktiviert. Dies kann das Schreiben von Videos beschleunigen, wenn die Hardware schnell genug ist, um das Video mit einer höheren Framerate als die Bildwiederholfrequenz des Monitors zu rendern, zu kodieren und zu speichern. Diese Einstellung hat keine Auswirkung, wenn das Betriebssystem oder der Grafiktreiber V-Sync erzwingt, ohne den Anwendungen die Möglichkeit zu geben, es zu deaktivieren.

  • FPS: Die gerenderten Bilder pro Sekunde im Ausgabefilm. Höhere Werte führen zu einer flüssigeren Animation, allerdings zum Preis längerer Rendering-Zeiten und größerer Ausgabedateigrößen. Die meisten Video-Hosting-Plattformen unterstützen keine höheren FPS-Werte als 60, aber Sie können einen höheren Wert verwenden und damit Bewegungsunschärfe erzeugen.

Bemerkung

Wenn Sie die disabled oder 2d-Stretch-Modi verwenden, wird die Auflösung der Ausgabedatei durch die Fenstergröße bestimmt. Stellen Sie sicher, dass Sie die Größe des Fensters vor dem Ende des Splash-Screens ändern. Zu diesem Zweck empfiehlt es sich, die erweiterten Projekteinstellungen Anzeige > Fenster > Größe > Fensterbreite überschreiben und Fensterhöhe überschreiben anzupassen.

Siehe auch Rendering mit einer höheren Auflösung als der Bildschirmauflösung.

Beenden des Movie Maker-Modus

Um ein Projekt im Movie Maker-Modus sicher zu beenden, benutzen Sie den X-Button am oberen Rand des Fensters, oder rufen Sie get_tree().quit() in einem Skript auf. Sie können auch das Kommandozeilenargument --quit-after N verwenden, wobei N die Anzahl der zu rendernden Bilder vor dem Beenden ist.

Das Drücken von F8 (Cmd + . unter macOS) oder das Drücken von Strg + C im Terminal, in dem Godot läuft, ist nicht empfehlenswert, da es zu einer nicht korrekt formatierten AVI-Datei ohne Laufzeitinformationen führen wird. Bei PNG-Bildsequenzen werden die PNG-Bilder nicht zum Schlechteren verändert, aber die zugehörige WAV-Datei enthält keine Angaben zur Laufzeit.

Einige Videoplayer können die AVI- oder WAV-Datei möglicherweise noch mit funktionierendem Video und Audio abspielen. Software, die mit der AVI- oder WAV-Datei arbeitet, wie z. B. Video-Editoren, kann die Datei jedoch möglicherweise nicht öffnen. Die Verwendung eines Videokonvertierungsprogramms kann in diesen Fällen helfen.

Wenn Sie einen AnimationPlayer verwenden, um eine "Hauptaktion" in der Szene zu steuern (z. B. eine Kamerabewegung), können Sie die Property Beenden bei Filmende auf dem betreffenden AnimationPlayer-Node aktivieren. Wenn diese Property aktiviert ist, wird Godot von selbst beendet, wenn eine Animation fertig abgespielt ist und die Engine im Movie Maker-Modus läuft. Beachten Sie, dass diese Property keine Auswirkungen auf Looping-Animationen hat. Daher müssen Sie sicherstellen, dass die Animation als nicht-Looping eingestellt ist.

Verwendung von hohen Grafikeinstellungen

Das Movie Feature-Tag kann verwendet werden, um bestimmte Projekteinstellungen außer Kraft zu setzen. Dies ist nützlich, um hohe Grafikeinstellungen zu aktivieren, die auf Ihrer Hardware nicht schnell genug wären, um in Echtzeit zu laufen. Denken Sie daran, dass das Setzen aller Einstellungen auf den Maximalwert immer noch die Speichergeschwindigkeit des Films verlangsamen kann, insbesondere bei der Aufnahme mit höheren Auflösungen. Daher ist es immer noch empfehlenswert, die Grafikeinstellungen nur dann zu erhöhen, wenn sie einen bedeutenden Unterschied im Ausgabebild machen.

Dieses Feature-Tag kann auch in einem Skript abgefragt werden, um die Qualitätseinstellungen zu erhöhen, die in der Environment-Ressource festgelegt sind. Zum Beispiel, um die SDFGI-Details weiter zu verbessern und Lichtlecks zu reduzieren:

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

Rendering mit einer höheren Auflösung als der Bildschirmauflösung

Die Gesamtqualität des Renderings kann durch Rendering mit hohen Auflösungen wie 4K oder 8K erheblich verbessert werden.

Bemerkung

Für das 3D-Rendering bietet Godot die erweiterte Projekteinstellung Rendern > 3D-Skalierung > Skalierung, die auf einen Wert über 1.0 gesetzt werden kann, um Supersample-Antialiasing zu erhalten. Das 3D-Rendering wird dann unterabgetastet, wenn es auf dem Viewport gezeichnet wird. Dies bietet eine teure, aber qualitativ hochwertige Form des Antialiasing, ohne die endgültige Ausgabeauflösung zu erhöhen.

Erwägen Sie, diese Projekteinstellung zuerst zu verwenden, da sie eine Verlangsamung der Schreibgeschwindigkeit von Filmen und eine Vergrößerung der Ausgabedatei im Vergleich zur tatsächlichen Erhöhung der Ausgabeauflösung vermeidet.

Wenn Sie 2D mit einer höheren Auflösung rendern möchten oder wenn Sie die höhere Rohpixelausgabe für 3D-Rendering benötigen, können Sie die Auflösung über das hinaus erhöhen, was der Bildschirm zulässt.

Standardmäßig verwendet Godot den Stretch-Modus deaktiviert in Projekten. Wenn Sie den Stretch-Modus deaktiviert oder canvas_items verwenden, bestimmt die Fenstergröße die Ausgabeauflösung.

Ist das Projekt hingegen so konfiguriert, dass es den Viewport-Stretch-Modus verwendet, bestimmt die Viewport-Auflösung die Ausgabeauflösung. Die Viewport-Auflösung wird über die Projekteinstellungen Anzeige > Fenster > Größe > Viewport-Breite und Viewport-Höhe festgelegt. Dies kann verwendet werden, um ein Video mit einer höheren Auflösung als der Bildschirmauflösung zu rendern.

Um das Fenster während der Aufnahme zu verkleinern, ohne die Auflösung des Ausgabevideos zu beeinflussen, können Sie die erweiterten Projekteinstellungen Anzeige > Fenster > Größe > Fensterbreite überschreiben und Fensterhöhe überschreiben auf Werte größer als 0 setzen.

Um die Auflösung nur bei der Aufnahme eines Films zu überschreiben, können Sie diese Einstellungen mit dem Movie-feature tag überschreiben.

Nachbearbeitungsschritte

Im Folgenden sind einige gängige Nachbearbeitungsschritte aufgeführt.

Bemerkung

Wenn Sie mehrere Nachbearbeitungsschritte verwenden, sollten Sie versuchen, sie alle in einem einzigen FFmpeg-Befehl auszuführen. Das spart Kodierungszeit und verbessert die Qualität, da mehrere verlustbehaftete Kodierungsschritte vermieden werden.

AVI-Video in MP4 umwandeln

Während einige Plattformen wie YouTube das direkte Hochladen der AVI-Datei unterstützen, ist bei vielen anderen ein vorheriger Konvertierungsschritt erforderlich. HandBrake (GUI) und FFmpeg (CLI) sind beliebte Open Source Tools für diesen Zweck. FFmpeg hat eine steilere Lernkurve, aber es ist leistungsfähiger.

Der folgende Befehl konvertiert ein AVI-Video in ein MP4 (H.264)-Video mit einem Constant Rate Factor (CRF) von 15. Dies führt zu einer relativ großen Datei, eignet sich aber gut für Plattformen, die Ihre Videos neu kodieren, um ihre Größe zu verringern (wie die meisten Video-Sharing-Websites):

ffmpeg -i input.avi -crf 15 output.mp4

Um eine kleinere Datei auf Kosten der Qualität zu erhalten, erhöhen Sie den CRF-Wert im obigen Befehl.

Um eine Datei mit einem besseren Verhältnis zwischen Größe und Qualität zu erhalten (auf Kosten einer langsameren Kodierungszeit), fügen Sie -preset veryslow vor -crf 15 im obigen Befehl ein. Im Gegensatz dazu kann -preset veryfast verwendet werden, um eine schnellere Kodierung auf Kosten eines schlechteren Verhältnisses von Größe und Qualität zu erreichen.

PNG-Bildsequenz + WAV-Audio in ein Video umwandeln

Wenn Sie eine PNG-Bildsequenz mit einer WAV-Datei daneben aufgenommen haben, müssen Sie sie in ein Video umwandeln, bevor Sie sie anderweitig verwenden können.

Der Dateiname für die von Godot erzeugte PNG-Bildsequenz enthält immer 8 Ziffern, beginnend mit 0 und mit Zero-Padding. Wenn Sie einen Ausgabepfad Ordner/Beispiel.png angeben, wird Godot Ordner/Beispiel00000000.png, Ordner/Beispiel00000001.png, usw. in diesen Ordner schreiben. Der Sound wird unter ordner/beispiel.wav gespeichert.

Die FPS werden mit dem Argument -r angegeben. Sie sollte mit den FPS übereinstimmen, die während der Aufnahme angegeben wurden. Andernfalls erscheint das Video verlangsamt oder beschleunigt, und der Ton ist nicht mit dem Video synchronisiert.

ffmpeg -r 60 -i input%08d.png -i input.wav -crf 15 output.mp4

Wenn Sie eine PNG-Bildsequenz mit aktivierter Transparenz aufgenommen haben, müssen Sie ein Videoformat verwenden, das die Speicherung von Transparenz unterstützt. MP4/H.264 unterstützt die Speicherung von Transparenz nicht, daher können Sie WebM/VP9 als Alternative verwenden:

ffmpeg -r 60 -i input%08d.png -i input.wav -c:v libvpx-vp9 -crf 15 -pix_fmt yuva420p output.webm

Video schneiden

Sie können Teile des Videos, die Sie nicht behalten möchten, nach der Aufnahme des Videos zuschneiden. Zum Beispiel, um alles vor 12,1 Sekunden zu verwerfen und nur 5,2 Sekunden des Videos nach diesem Punkt zu behalten:

ffmpeg -i input.avi -ss 00:00:12.10 -t 00:00:05.20 -crf 15 output.mp4

Das Schneiden von Videos kann auch mit dem GUI Tool LosslessCut durchgeführt werden.

Größenänderung des Videos

Mit dem folgenden Befehl wird die Größe eines Videos auf eine Höhe von 1080 Pixeln (1080p) geändert, wobei das bestehende Seitenverhältnis beibehalten wird:

ffmpeg -i input.avi -vf "scale=-1:1080" -crf 15 output.mp4

Reduzierung der Framerate

Der folgende Befehl ändert die Bildrate eines Videos auf 30 FPS, wobei einige der ursprünglichen Bilder weggelassen werden, wenn das Eingangsvideo mehr Bilder enthält:

ffmpeg -i input.avi -r 30 -crf 15 output.mp4

Erzeugen von kumulativen Bewegungsunschärfen mit FFmpeg

Godot verfügt nicht über eine integrierte Unterstützung für Bewegungsunschärfe, aber sie kann in aufgezeichneten Videos dennoch erzeugt werden.

Wenn Sie das Video mit einem Vielfachen der ursprünglichen Bildrate aufnehmen, können Sie die Bilder überblenden und dann die Bildrate reduzieren, um ein Video mit Kumulierungsbewegungsunschärfe zu erzeugen. Diese Bewegungsunschärfe kann sehr gut aussehen, aber es kann lange dauern, sie zu erzeugen, da Sie viele weitere Bilder pro Sekunde rendern müssen (zusätzlich zu der Zeit, die Sie für die Nachbearbeitung benötigen).

Beispiel mit einem Quellvideo mit 240 FPS, das eine 4fache Bewegungsunschärfe erzeugt und die Ausgangsbildrate auf 60 FPS reduziert:

ffmpeg -i input.avi -vf "tmix=frames=4, fps=60" -crf 15 output.mp4

Dies führt auch dazu, dass Effekte, die über mehrere Frames konvergieren (wie z.B. temporales Antialiasing, SDFGI und volumetrischer Nebel) schneller konvergieren und daher besser aussehen, da sie mit mehr Daten in pro Zeit arbeiten können. Siehe Reduzierung der Framerate, wenn Sie diesen Vorteil nutzen wollen, ohne Bewegungsunschärfe hinzuzufügen.