Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Einfaches Video-Format gesucht

Einfaches Video-Format gesucht

andreas_g
andreas_g02.08.2310:30
Liebe Community,

seit längerer Zeit arbeite ich an einem Emulator. Er kann mittlerweile den Bildschirminhalt der Gastsystems in eine PNG-Datei sichern oder den Sound-Output in eine AIFF-Datei speichern. Nun möchte ich ihm beibringen, ein Video des Bildschirminhaltes aufzuzeichnen.

Dazu wäre es ideal, die PNG-Daten, die bereits gesichert werden können, für das Video zu nutzen. Sie sollen bei jedem VSYNC gesichert und einer Video-Datei angefügt werden. Die Framerate müsste flexibel anpassbar sein beziehungsweise zumindest auf 68 Hz fixiert werden können. Was wäre hier ein geeignetes Dateiformat? Es sollte möglichst einfach sein.

Der Code für PNG- und AIFF-Sicherung ist hier:
0

Kommentare

rmayergfx
rmayergfx02.08.2311:33
Zum Thema Dateiformat. Sinnvoll wäre es wenn dieses Video dann auch auf allen Plattformen abgespielt werden könnte, d.h. es dafür auch Unterstützung gibt. Aus einem PNG ein Video zu erstellen dürfte nicht so ohne weiteres gehen da je nach Codec ja nur noch die einzelnen Unterschiede zwischen den Bildern gespeichert werden und es je nach Einstellung z.B. nur noch alle 25 Bilder ein Vollbild gibt.
68 Hz ist für Video absolut untypisch, 24,25,30,50,60 sind i.A. je nach Videostandard im Einsatz, am TV auch schon mal 120 Hz. Alles was dazwischen ist kann zu seltsamen Erscheinungen wie Mikroruckler etc. führen.
Je nach Bildgröße und Anzahl der Bilder (25 pro Sekunde oder mehr) würde bei einem Video aus Vollbildern die Videodatei unnötig groß und je nach System auch nicht flüssig abspielen.
Schon mal überlegt die Bilder mit ffmepg in ein passendes Format zu konvertieren?
Als Videoformat würde ich H.264 mit Endung mp4 schreiben und darauf achten das es in einem passenden Format 1080p mit 50 oder 60Hz erstellen. Wichtig ist dabei zu prüfen, in welcher Auflösung die Screenshots gemacht werden, damit sie passend skaliert werden.
„Der Computer soll die Arbeit des Menschen erleichtern, nicht umgekehrt !“
0
andreas_g
andreas_g02.08.2312:16
Danke für die ausführliche Rückmeldung!

Ich habe schon befürchtet, dass es schwierig werden könnte. Die Einzelbilder haben eine Größe von 1120 x 832 Pixel. Die resultierenden verlustfrei komprimierten PNG-Dateien haben eine Dateigröße von unter 100 kB.

Die 68 Hz ergeben sich aus dem VSYNC des simulierten Systems. Wenn ich davon abweiche, bekomme ich wahrscheinlich Probleme mit Tearing. Das Ziel wäre, bei jedem VSYNC ein Frame zu speichern.

Mit ffmpeg habe ich keine Erfahrung. Allerdings wäre das dann wohl eine Art Nachbearbeitung? Also es würden die einzelnen Frames gespeichert und dann nachträglich zu einem Video zusammengefügt?
0
mikeboss
mikeboss02.08.2313:51
hi andreas

wie du weisst bin ich ja seit je her planlos was das coden anbelangt... vielleicht findest anregungen im source vom vAmiga, der hat eine eingebaute video-aufzeichnungs- und export-funktion:

https://github.com/dirkwhoffmann/vAmiga
0
andreas_g
andreas_g04.08.2308:52
Danke mikeboss für den Hinweis. Dieses Programm ist allerdings in Swift geschrieben, was wohl so manches vereinfacht. Ich bräuchte eine Lösung in C, die möglichst portabel ist.
0
MetallSnake
MetallSnake04.08.2309:14
Der Atari Emulator Hatari, auf dem Previous basiert, macht ähnliches. Auch da werden PNGs geschrieben. Laut Doku sollen die dann vom Benutzer per ffmpeg konvertiert werden, aber das könntest du in Previous ja automatisieren.
https://www.hatari.tuxfamily.org/doc/video-recording.txt
„Das Schöne an der KI ist, dass wir endlich einen Weg gefunden haben, wie die Wirtschaft weiter wachsen kann, nachdem sie jeden Einzelnen von uns getötet hat.“
0
andreas_g
andreas_g04.08.2310:16
Hatari kann tatsächlich AVI-Dateien mit PNG-Frames erzeugen. Allerdings ist das Format offensichtlich nicht besonders verbreitet. Der QuickTime Player beispielsweise erkennt es nicht. Mit IINA kann ich das Video hingegen abspielen.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.