Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Video Codec für Screencast

Video Codec für Screencast

andreas_g
andreas_g14.11.2318:53
Liebe Community,

ich suche einen lossless Codec, um bei meinem Emulator den Bildschirminhalt als Video aufzunehmen. Dabei sollten Container und Codec möglichst einfach und gut dokumentiert sein, damit ich eine eigene Routine zum enkodieren aus den Bildschirmdaten schreiben kann. Ich bin auf QuickTime Animation (RLE) gestoßen. Das Format scheint zwar von den Anforderungen her geeignet, aber nicht mehr sehr populär zu sein und wird dementsprechend wenig unterstützt.

Beim Bildschirminhalt handelt es sich meist um relativ große Farbflächen, bei denen sich zwischen den Frames in den meisten Fällen wenig ändert.

Hat jemand eine Idee?
0

Kommentare

Krypton14.11.2319:28
Wenn es um die Mac-Verfügbarkeit geht, bietet sich ProRes 4444 anbieten (mit 444 Farb-subsampling, d.h. kein Farb-Downsampling) und bei Bedarf auch Alpha-Kanal Unterstützung. Der Codec selbst ist zwar nur «visually lossless» was bedeutet, dass es zwar rechnerisch einen Verlust gibt, aber nicht visuell. Und der rechnerische ist selbst über Generationen (mehrfaches speichern) extrem gering. Dafür kleinere Dateigröße und Frame-Genau schneidbar.

Ansonsten könntest du noch hier beim Entwickler von Screenium (Mendel Kucharzeck) nachfragen, welchen Codec die Software verwendet.

Völlig verlustfrei (aber riesige Dateien) ist HuffYUV der aber eher unter Windows verwendung fand. Es gibt in der freien libavcodec Bibliothek (wird etwa von VLC oder ffMPEG verwendet) aber eine verbesserte Implementierung. In der Bibliothek selbst gibt es noch weitere Codecs, welche evtl. infrage kämen, da müsstest du aber testen . Eventuell der FM Screen Capture Codec oder Mandsoft Screen Capture Codec, Screenpresso, Screen Recorder Gold Codec, VMware Screen Codec.
-1
Krypton14.11.2319:36
Kleine Korrektur. Sehe gerade, dass einige der genannten Codecs nur Decodierung unterstützen, aber in der Bibliothek nicht das codieren. Nimmt man nur die mit Codieroption, bleiben wohl nur FFmpeg Video Codec (lossless), Flash Screen Video, HuffYUV, HUFFYUV FFmpeg variant, Brooktree uncompressed, MagicYUV, etc.
QuickTime Animation wird von der Bibliothek auch unterstützt, du könntest es also weiterhin einsetzen, selbst wenn Apple den Support streicht.
Weit verbreitet und mit aktuellen Schnittprogrammen kompatibel dürfte aber das zuerst genannte ProRes 4444 sein.
0
andreas_g
andreas_g15.11.2319:23
Vielen Dank für den Tipp! Vielleicht habe ich noch ein wichtiges Detail vergessen: Mein Programm sollte möglichst plattformunabhängig sein. Derzeit läuft es unter macOS, NetBSD, Linux und Windows. Es dürfte auch unter diversen anderen UNIX-Derivaten funktionieren. Derzeit erforderlich ist lediglich SDL2. libpng und libpcap sind optional für bestimmte Netzwerk- und Druckausgabe-Funktionen.

Idealerweise sollte daher der Codec plattformunabhängig verfügbar sein oder ich schreibe meinen eigenen Encoder beziehungsweise übernehme einen quelloffenen Encoder.
0
Krypton15.11.2323:55
Der angesprochene und verlinkte libavcodec bzw. ffmpeg ist ja quelloffen und neben fertigen builds für diverse Betriebssysteme gibt auch den Sourcecode, der für andere Systeme compiliert werden kann. Darüberhinaus wird es von vielen Entwicklern unterstützt und treibt seit über 20 Jahren erfolgreich sein Unwesen (die älteste VLC-Version in meinem Archiv ist etwa die 0.4 von 2002). Ich weiß aber nicht, ob dir die Bibliothek evtl zu groß ist oder du mehr nach Spezifikationen für das Schreiben eines eigenen CoDecs suchst oder ob du sehr spezielle Anforderungen hast, die mitbedacht werden müssen (etwa Bildauflösung nicht durch 4 oder 8 teilbar, was manche Codecs verlangen, bestimmte Frame-Raten, Intra-Frames, Schnittkompatibilität, möglichst einfach zu handeln oder möglichst effektiv in der Komprimierung, Farbtiefe, Alpha-Unterstütung)...
+1
DasFaultier16.11.2305:49
Ich würde die Daten in einen MKV-Container packen. Der Vorteil ist, dass der Codec später nochmal geändert werden kann. Da der Container nicht den Codec bestimmt. Du kannst quasi jeden Codec in diesen Container verpacken.

Ich würde keinen Lossless-Codec verwenden. Da mittlerweile H265 und AV1 so effizient kodieren, dass man bei entsprechender Datenrate keinen Unterschied erkennen kann. Besonders bei eher statischen Inhalten.

Der Vorteil bei AV1 ist, dass bei AV1 dieser OpenSource. Bei H265 sieht das anders aus. Jedoch bietet letzteres mittlerweile in jeder Grafikkarte selbst bei Intel iGPUs HW-Beschleunigung bietet, welches die kodierungszeit enorm reduziert.
0
andreas_g
andreas_g16.11.2319:25
Nochmals danke für die Tipps! Ich schaue mir das im Detail an und hoffe, dass ich über die Feiertage im Dezember etwas daraus basteln kann.
0
DasFaultier16.11.2319:32
Veröffentlichst du deine Software irgendwo..? Würde mich interessieren was du so baust.
0
andreas_g
andreas_g16.11.2319:58
Ja, den Code des Programms gibt es hier zu sehen:
Ein Forums-Beitrag mit Binaries ist hier zu finden:

Die Download-Links der aktuellen Version sind im Beitrag vom 9.7.2023.
0

Kommentieren

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