Windows Graphics Capture API (WinRT) Fullscreen Capturing Test

  • Könnt ihr bitte testen, ob das Fullscreen Capturing auf dem primären Monitor funktioniert? Das Ergebnis sollte ein WebP Animation sein, die im gleichen Verzeichnis angelegt wird. Die Frames von der WGC API werden an die WebP API übergeben, da dann die Animation erstellt.

    In der CMD Console gibt es ein paar Infos. Könnt ihr bitte den Output in der CMD Box auch posten?

    Aus welchen Gründen auch immer kann ich diese Funktion nicht aus Autoit aufrufen!

    Läuft nur ab Win10+, da die Windows Graphics Capture API (WinRT) genutzt wird.

    Danke.

    Parameter:

    Code
    config.lossless = 0
    config.quality = 50
    config.method = 0
    config.thread_level = 1
    config.segments = 1
    config.sns_strength = 1
    config.filter_strength = 0
    config.pass = 1
  • Ja klappt super! :love:

    30s 1920x1080@30FPS ergibt .webp-Datei mit 1,3 MB Dateigröße!

    Danke fürs Testen! 30s? Sollten eigentlich 20s sein. ;)


    Screencapture hat funktioniert, aber die Animation besteht nur aus einem kurzen Flackern

    Hmm, benötige mehr Infos. Welches OS? Hast du was mit DRM aufgenommen? Ist die Aufnahme komplett durchgelaufen? Hast du nur dein Desktop aufgenommen? Wie viele Monitore?


    Ich habe zum Testen YouTube im Fullscreen Modus genommen -> z.B. https://youtu.be/9E0NQ2_aPfY?si=AoH69ZZzPLRRgySx

    Das gibt einen guten Eindruck, ob das Capturing gut funktioniert.


    Könnt ihr bitte den Output in der CMD Box posten?

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Capture_3440x1440.webp, 6.946 KB

    Läuft mit Win10, jedoch ein wenig ruckelig bei mir.

    Mal schauen ob dir das hilft UEZ 🤞 .

    Viele Grüße
    Sven

  • Von meinem 4k Bildschirm. Da wurde dann der rechte+untere Rand abgeschnitten. (Hab aber auch bei manchen Spielen,... das Problem, dass manchmal die geringere Auflösung genommen wird und ich die richtige Auflösung manuell wählen muss oder "borderless" statt vollbild nehme.

  • Vielen Dank.

    Was ich sagen kann, ist, dass die Aufnahmegeschwindigkeit anscheinend WebP bei großen Auflösungen überfordert und anscheinend nicht mit dem Encodieren der Frames in Echtzeit nachkommt.

    GetCapturedFrame() aus der DLL scheint nicht der Flaschenhals zu sein. Die Aufnahme im Speicher erst aufzunehmen und dann zu encoden könnte funktionieren, aber könnte der Speicheroverkill werden.

    Muss mal überlegen, welche Alternativen noch WebP bietet...


    Kanashius ist denn 2560 x 1440 nicht die tatsächliche Auflösung deines primären Monitors?


    Bei 3440x1440 -> das sind ~5 Mio. Pixel pro Frame -> bei 30 FPS ≈ 150 Mio. Pixel/s, die kodiert werden müssen!

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    Einmal editiert, zuletzt von UEZ (27. August 2025 um 15:47)

  • Kanashius ist denn 2560 x 1440 nicht die tatsächliche Auflösung deines primären Monitors?

    Nope, 3840x2160 ist die eigentliche Auflösung, die aber von manchen Anwendungen (mit Fullscreen) falsch ?angenommen wird. Witzigerweise war der gelbe Rahmen um den ganzen (4k-)Bildschirmbereich, auch wenn der Aufnahmebereich mit 2560x1440 kleiner war :).

    Im moment hab ich 2xFHD und 1x4k (primary).

  • Komisch, der Code sucht die Monitore mit EnumDisplayMonitors() und gibt den Wert für den primären Monitor zurück.

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Die aufgenommene Datei sieht gut aus, wenn sie abgespielt wird.
    Keine Filmqualität, aber gut für Screenshots.
    Es erkannte problemlos den Hauptmonitor zwischen den beiden.

  • Danke argumentum .

    Hast einen schneller PC, denn 21 FPS sind ordentlich, falls du Bewegung auf dem Schirm hattest.

    WebP Anim ist kein Codec für Realtime Aufnahmen, da zu langsam. WebP Anim spielt in der gleichen Liga wie GIF und PNG Anim, d.h. WebP Anim ist eher für Animationen geeignet, wo man die Frames parat hat und nicht Realtime generierte Frames encodieren muss.

    Ich denke, das reicht, um mal schnell den Desktop aufzunehmen, um z.B. was mit anderen zu teilen.

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Hmm, benötige mehr Infos. Welches OS? Hast du was mit DRM aufgenommen? Ist die Aufnahme komplett durchgelaufen? Hast du nur dein Desktop aufgenommen? Wie viele Monitore?

    Win 11 auf einem Lenovo Laptop - daher nur 1 Monitor und ich habe den Desktop aufgenommen

  • Hi,

    1 Monitor, Win11, 1440p Desktop mit Fensterinhalt ohne Bewegung (KEINE Mausbewegung) FPS 3, Index 15, Dateigröße 185kB

    Target fps: 30
    Recording time: 20 seconds
    Recording screen dim: 2560 x 1440

    Starting fullscreen capturing in 3 seconds...
    kmin: 24
    kmax: 38
    ellapsed: 20.08690979999938 seconds
    frames captured: 66 3.28572192821825 fps
    frame index: 305 15.18401800161464 fps
    delta : 239 0.2163934426229508 %
    total frames: 600 target fps 30 delta: 0.5083333333333333 %
    File size: 184766 bytes

    Done


    Gleicher Desktopinhalt, während der "Aufnahme" aber exzessive Mausbewegung...Von 3 auf über 30FPS (s. unten)...Die API nimmt nur geänderte Bildschirme auf, wenn sich nichts ändert, wird auch nichts gerendert, es entsteht kein Frame und somit auch keine FPS, das hatte ich schon bei der Duplication-API angesprochen, das ist kein Bug, sondern ein Feature! Die letztendliche Bewertung kann nur über die Qualität/Größe der resultierenden webp-Datei erfolgen.

    Target fps: 30
    Recording time: 20 seconds
    Recording screen dim: 2560 x 1440

    Starting fullscreen capturing in 3 seconds...
    kmin: 24
    kmax: 38
    ellapsed: 20.02609329999996 seconds
    frames captured: 607 30.31045501021416 fps
    frame index: 607 30.31045501021416 fps
    delta : 0 0 %
    total frames: 600 target fps 30 delta: 1.011666666666667 %
    File size: 385894 bytes

    Done


    Bei actionreichem Video im Fullscreen komme ich auf ca. 15 FPS, Dateigröße um die 60MB

    Wenn der Bildschirminhalt größtenteils "geblured" ist und sich bewegt, entstehen massive Artefakte in der *.webp-Datei

    Ich denke, das reicht, um mal schnell den Desktop aufzunehmen, um z.B. was mit anderen zu teilen.

    :thumbup:...wenn man einen Codec für die Anzeige hat...

  • Andy

    Danke fürs Testen. Ja genau, nur wenn sich was verändert, wird aufgenommen. Je höher die Qualität, umso länger dauert das Encoden in WebP. Daher sind die Settings auf "Speed" eingestellt.

    Ich habe mal die Zeit für das Capturen und Encoden gemessen und bei mir sind es ca. 70 ms. Bei 30 FPS sollte es nicht mehr als 33.33 ms sein. Für Fullscreen Aufnahmen ist WebP einfach zu schwach.

    Wie gesagt, reicht das für rudimentäre Zwecke. Moderne Browser unterstützen WebP und du kannst das WebP File im Browser darstellen. MS Edge kann das zum Beispiel...


    Ich habe die Exe aktualisiert (siehe Post#1)!

    Meine Ergebnis:

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    3 Mal editiert, zuletzt von UEZ (29. August 2025 um 11:22)