AWT Screenshots machen ist langsam?

lumo

Top Contributor
hallo,

ich hab mir ein kleines testprogramm geschrieben mit dem ich screenshots mache und schaue wieviele ich in einer sec auslesen kann... (hab hier ne auflösung von 1280x1024)

(im endeffekt soll ein kleines programm entstehen, das auf zb youtube ein video grabbt und einen filter drüber laufen lässt und selbiges dann in einem fenster darstellt - funktioniert so weit so gut... aber nur mit 4 bilder/sec)

komme auf 7 scans/s, was meines erachtens etwas wenig ist (hoffte eher auf etwas zwischen 30 und 60)

a) kann man das irgendwie beschleunigen?
b) mache ich das zu umständlich?

nur... wenn ich schon mal mit 7 sps anfange dann komm ich da recht weit nach unten (ich schätze mal dass nach meiner verarbeitung grad mal noch 3-4 übrigbleiben)

Java:
import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;

public class Benchmark {
	public static void main(String[] args) {
		Dimension screenSize = Toolkit.getDefaultToolkit()
				.getScreenSize();
		System.out.println(screenSize);
		Robot r = null;
		try {
			r = new Robot();
		} catch (AWTException e) {
			e.printStackTrace();
			System.exit(-1);
		}
		Rectangle screen = new Rectangle((int) screenSize.getWidth(), (int) screenSize
				.getHeight());
		long start = System.currentTimeMillis();
		long passed = 0;
		int sps = 0;
		while (true) {
			while (passed < 1000) {
				BufferedImage window = r.createScreenCapture(screen);
				passed += System.currentTimeMillis() - start;
				sps++;
			}
			System.out.println(String.format("scans/s: " + sps));
			passed = 0;
			sps = 0;
			start = System.currentTimeMillis();
		}
	}
}
 
Zuletzt bearbeitet:
G

Gast2

Gast
Ein Screenshot mit Robot zu machen dauert je nach Auflösung sehr lange. 6 oder 7 pro Sekunde sind schon viel, bei mir hat ein Screenshot damals knapp 200-250ms gedauert. Das kannst du so ohne weiteres auch nicht beschleunigen. Wenns schneller werden soll müsstest du auf OS Mittel zurückgreifen.
 

Evil-Devil

Top Contributor
Für YT Grabber gibt es schon gute kostenlose Programme und wie schnell so ein Screenshot gemacht werden kann hängt u.a. auch von der Geschwindigkeit der Festplatte und ob das Bild komprimiert ist. Nicht grundlos machen Screengrabber bei größeren Auflösungen nur BMP Dateien. Wenn du wirklich einen neuen YT Grabber willst, dann greif die Daten direkt vom Browser via Plugin ab.
 
N

nillehammer

Gast
Nichts wirklich neues, aber es hat mich einfach interessiert. Ich habe das Testprogramm mal erweitert, um die Möglichkeit Screenshots in separaten Threads zu machen, die jeweils ihren eigenen Robot benutzen. Bei einem Thread hab ich 16 fps geschafft, bei zwei Threads in Summe 20 fps und dann gings wieder runter.

Wirklich was gebracht hat's also auch mit mehreren Threads nix. Der Robot ist hier wohl einfach ein Flaschenhals. Ein weiterer negativer Nebeneffekt bei mehreren Threads war auch, dass der Bildschirm praktisch einfror (konnte nichts mehr anklicken oder anderes Fenster auswählen) und der Mausanzeiger wild an zu Zittern fing.

Ergo: Screengrabbing mit Robot ist zu langsam für Videos, "friert" den Bildschirm ein und bringt den Mauszeiger zum Zittern. Dann doch besser Browser-Plugins, die den Videostream direkt mitschneiden und auf Platte schreiben.
 

lumo

Top Contributor
Ich will den Stream ja nicht mitschneiden sondern Filter darauf anwenden/bilddaten analysieren... Also hat das mit der hdd mal nix zu tun.
YOuTube war ein Bsp soll bei jedem Bereich am Screen funktionieren...
Direkter Zugriff auf graphikspeicher ist in Java also so nicht möglich... Schade eigentlich
 

lumo

Top Contributor
hab jetzt das selbe mit swt versucht und komme auf 13-15fps...

dafür verliere ich den vorteil beim schreiben der daten wieder. (also lesen doppelt so schnell, weil ich den selben handle verwenden kann, aber beim schreiben muss ich einen neuen handle fürs image erstellen was im endeffekt das gleiche resultat wie bei awt hat...)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Automatische Screenshots + Analyse des Bildes AWT, Swing, JavaFX & SWT 5
M JavaFX TableView nur erste Zeile editable machen und gelb markieren AWT, Swing, JavaFX & SWT 0
I Libraries für AWT für andere Grafik-Frameworks tauglich machen AWT, Swing, JavaFX & SWT 6
B Java Projekt mit JavaFX und jfoenix ausführbar machen AWT, Swing, JavaFX & SWT 46
FrittenFritze Text in Flying Saucer selectierbar machen AWT, Swing, JavaFX & SWT 0
L TextArea Zeichenabstand gleich machen AWT, Swing, JavaFX & SWT 8
DonBronson Java Graphics bewegbar machen (Drag&Drop) AWT, Swing, JavaFX & SWT 3
N JavaFX Javafx intelij Projekt zu ausführbaren jar Datei Machen AWT, Swing, JavaFX & SWT 1
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
CptK Ordentlicher Code & Panel ab bestimmter Komponentenzahl scrollbar machen AWT, Swing, JavaFX & SWT 12
N JavaFX Projekt nachträglich zu JavaFX Application machen? AWT, Swing, JavaFX & SWT 1
O Swing JOptionPane.showOptionDialog - Wie kann ich Buttons größer machen AWT, Swing, JavaFX & SWT 10
L AWT .gif image transparent machen AWT, Swing, JavaFX & SWT 3
VPChief Ein JFrame ohne setUndecorated(true); nicht verschiebbar machen. AWT, Swing, JavaFX & SWT 6
T Java: Zwei abhängige JSlider machen nicht das, was sie sollen AWT, Swing, JavaFX & SWT 4
L JavaFX JavaFX Screenshot Machen AWT, Swing, JavaFX & SWT 6
M JavaFX Ein Labeltext eine zeitlang anzeigen dann weiter machen AWT, Swing, JavaFX & SWT 3
MaxG. JavaFX JavaFX Stage nicht minimierbar machen AWT, Swing, JavaFX & SWT 2
L JavaFX TableView background transparent machen AWT, Swing, JavaFX & SWT 7
K JButton nicht sichtbar machen für User 2 AWT, Swing, JavaFX & SWT 4
V JavaFX Teile eines Images Transparent machen AWT, Swing, JavaFX & SWT 4
I JavaFX TreeView Pfeil nicht mehr Klickbar machen AWT, Swing, JavaFX & SWT 1
M JavaFX ImageView lichtundurchlässig machen ? AWT, Swing, JavaFX & SWT 0
P JTextField unsichtbar machen AWT, Swing, JavaFX & SWT 2
Y Kann man Buttons in einem JFrame rund machen ? AWT, Swing, JavaFX & SWT 2
D JavaFX Interface Initializable - Was machen die Parameter in der Methode inizializeable() ? AWT, Swing, JavaFX & SWT 4
J Swing JTable Zeile nicht auswählbar machen AWT, Swing, JavaFX & SWT 0
F Fullscreen rückgänig machen !!! AWT, Swing, JavaFX & SWT 4
F Swing JTextField (unbeschriebbar machen) AWT, Swing, JavaFX & SWT 12
J Swing Graphic anpassbar/resizeable machen AWT, Swing, JavaFX & SWT 10
N Swing Filechooser zweifarbig machen AWT, Swing, JavaFX & SWT 33
T Aus JAVA.Jar GUI eine Flash-Datei machen AWT, Swing, JavaFX & SWT 3
N LookAndFeel Wie kann ich mein eigenes LookAndFeel machen? AWT, Swing, JavaFX & SWT 6
P JScrollBar designen oder unsichtbar machen AWT, Swing, JavaFX & SWT 10
N Swing teilstring in textarea fett machen AWT, Swing, JavaFX & SWT 13
T Jframe Transparent machen AWT, Swing, JavaFX & SWT 3
S Canvas durch transparentes JPanel sichtbar machen AWT, Swing, JavaFX & SWT 2
P jframe setVisible(false) wieder sichtbar machen? AWT, Swing, JavaFX & SWT 4
J Gibt es brauchbare GUI-Builder, oder doch besser alles per Hand machen? AWT, Swing, JavaFX & SWT 6
P Pfeilpolygon per Maus rotierbar machen - Kleine Schwierigkeiten AWT, Swing, JavaFX & SWT 29
S View-Komponenten im Controller bekannt machen AWT, Swing, JavaFX & SWT 7
Java-Insel AWT RadioButtons unauswählbar machen AWT, Swing, JavaFX & SWT 11
P JPanel scrollable machen AWT, Swing, JavaFX & SWT 19
A jformattedtextfield unsichtbar und wieder sichtbar machen AWT, Swing, JavaFX & SWT 13
R AWT TextArea schreibunfähig machen AWT, Swing, JavaFX & SWT 5
T Swing JScrollBar fetter machen? AWT, Swing, JavaFX & SWT 2
C Etwas durchsichtig machen über einem Panel AWT, Swing, JavaFX & SWT 7
C SWT CTabItem wieder sichtbar machen AWT, Swing, JavaFX & SWT 3
A Swing JCheckbox transparent machen AWT, Swing, JavaFX & SWT 7
A Swing JPanel in JScrollBar scrollbar machen AWT, Swing, JavaFX & SWT 4
A AWT Beim (mehrmaligen) Screenshot machen läuft der Speicher voll AWT, Swing, JavaFX & SWT 2
B RootPane bzw CardLayout Transparent machen AWT, Swing, JavaFX & SWT 7
T JPopup modal machen AWT, Swing, JavaFX & SWT 2
C JTextPane / JEditorPane ohne Keywords farbig machen AWT, Swing, JavaFX & SWT 4
P SWT Viewpart undisposable machen? AWT, Swing, JavaFX & SWT 5
F Swing JFileChooser - Dateinamen nicht editierbar machen AWT, Swing, JavaFX & SWT 8
O JTree/TreeModel/DefaultMutableTreeNodes thread safe machen AWT, Swing, JavaFX & SWT 3
M SWT Tabllenspalte editierbar machen AWT, Swing, JavaFX & SWT 2
S SWT GridLayout scrollbar machen? AWT, Swing, JavaFX & SWT 7
P Swing JList hübscher machen AWT, Swing, JavaFX & SWT 3
D JList Scrollbar machen geht nicht AWT, Swing, JavaFX & SWT 4
B bin am verzweifeln, will auf knopfdruck durch ne überprüfung die labels unsichtbar machen AWT, Swing, JavaFX & SWT 2
S ButtonCelleditor explizit sichtbar machen AWT, Swing, JavaFX & SWT 6
N screenshot machen ohne Robots? AWT, Swing, JavaFX & SWT 9
F Einzelne TreeNode an einem JTree editierbar machen AWT, Swing, JavaFX & SWT 3
E Alles unsichtbar machen AWT, Swing, JavaFX & SWT 12
C Vom User angelegte Spaltenanordung rückgängig machen AWT, Swing, JavaFX & SWT 2
C Swing JTable: Spaltenverschiebung rückgängig machen AWT, Swing, JavaFX & SWT 4
M Swing Docking Widgets selber machen? AWT, Swing, JavaFX & SWT 14
S Spielfeld mit unförmigen Objekten anklickbar machen? AWT, Swing, JavaFX & SWT 4
R WindowClosing Event - Schließen rückgängig machen? AWT, Swing, JavaFX & SWT 2
woezelmann JComboBox Item nicht auswählbar machen AWT, Swing, JavaFX & SWT 4
D JTable während edit kein update machen lassen AWT, Swing, JavaFX & SWT 2
Developer_X Swing Graphics2D.zoom, wie rückgängig machen? AWT, Swing, JavaFX & SWT 6
F Screenshot vom Desktop machen? AWT, Swing, JavaFX & SWT 2
F AWT Wie Bild unscharf machen? AWT, Swing, JavaFX & SWT 5
C Swing Mit jTree ein Ordneröffnen Dialog machen? Und Ordner Inhalt auslesen? AWT, Swing, JavaFX & SWT 4
Developer_X Swing Was gegen Flimmern machen? AWT, Swing, JavaFX & SWT 8
E Swing JButton nur pressed machen und Gruppe bilden AWT, Swing, JavaFX & SWT 2
A Swing JTree Editable einzelne Nodes editierbar machen! AWT, Swing, JavaFX & SWT 2
D JWindow rund machen AWT, Swing, JavaFX & SWT 11
J JTable - Spaltenzellen nicht fokusierbar machen AWT, Swing, JavaFX & SWT 15
D JTextArea nicht editierbar machen AWT, Swing, JavaFX & SWT 1
slawaweis JXTreeTable, jede Spalte einzeln scrollbar machen? AWT, Swing, JavaFX & SWT 2
K CheckboxTreeViewer - Ebenen nicht unselektierbar machen AWT, Swing, JavaFX & SWT 2
G Tabelle Spalten unsichtbar machen AWT, Swing, JavaFX & SWT 5
M MVC: Grundidee verstanden aber was machen mit mehreren Model AWT, Swing, JavaFX & SWT 2
J in JTable ganze Spalte editierbar machen AWT, Swing, JavaFX & SWT 17
X in JTable nur einige Zellen editierbar machen AWT, Swing, JavaFX & SWT 2
V JComboBox Eintrag nicht anwählbar machen? AWT, Swing, JavaFX & SWT 3
P JDialog Close-Button inaktiv machen AWT, Swing, JavaFX & SWT 1
K JCheckBox in einer JTable auswählbar machen AWT, Swing, JavaFX & SWT 2
S Wieso Fenster im EDT sichtbar machen? AWT, Swing, JavaFX & SWT 43
D Einzelnen Worte eines Strings farbig machen AWT, Swing, JavaFX & SWT 11
G JList eintrag "nicht anklickbar" machen AWT, Swing, JavaFX & SWT 3
J Eine Spezielle (JTable) Liste, wie kann ich das machen? AWT, Swing, JavaFX & SWT 3
C Wie würdet ihr das machen? JPanel beim Klicken austauschen! AWT, Swing, JavaFX & SWT 4
J Undecorated JXDialog Resizable machen AWT, Swing, JavaFX & SWT 6
S Choice editierbar machen? AWT, Swing, JavaFX & SWT 6
N eine Zeichnung scrollbar machen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben