# Bild capturen mit direcShow



## shining (2. Jul 2009)

Hallo,

ich möchte ein Bild capturen von meiner Kamera, dass sollte mit DirectShow funktionieren. Ich habe mir bereits den dsj wrapper besorgt(DirectShow Java Wrapper: humatic - dsj) mit der DSJDemo Klasse hab ich es bereits hinbekommen ein Video aufzu nehmen(da sollte man ja wohl auch ein einzelnes Bild aufnehmen können). Leider ist die DSJDemo sehr lange(unterstützt alle möglichen Funktionen zum abspielen und aufnehmen von Videos) und ich müsste mich ewig einarbeiten. 

Wenn ich die SimpleCapture Klasse start stürzt leider meine JVM(Version 6 Update 14) mit folgendem Fehler ab:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_INT_DIVIDE_BY_ZERO (0xc0000094) at pc=0x61076b3b, pid=2344, tid=768
#
# JRE version: 6.0_14-b08
# Java VM: Java HotSpot(TM) Client VM (14.0-b16 mixed mode, sharing windows-x86 )
# Problematic frame:
# C  [dsj.dll+0x76b3b]

Hat jemand vielleicht einen Tip, Erfahrungen mit DirectShow und Java oder schon ein kleines Programm das mir das Leben erleichtert? 

Oder gibt es eine Möglichkeit dem JMF zu sagen(Plugin usw.) dass er die DirectShow Geräte erkennt?

mfG

Shining


----------



## tuxedo (6. Jul 2009)

Einfach den Fehler dem Entwickler reporten. Hatte die Lib vor über nem Jahr mal getestet und hatte auch hier und da ein paar Probleme. Nach kurzem Mailverkehr war die Sache schnell erledigt.

- Alex


----------



## shining (6. Jul 2009)

Hallo,

ich hab das Problem gelöst. 

wen es interessiert:


Erst mal ein paar Einstellungen vornehmen mit


```
DSFiltergraph dsfg; 
DSFilterInfo[][] dsi;

// hier die Gerät Info holen
dsi = DSCapture.queryDevices(0); 

// hier wählt man das Gerät aus
int[] chosenDevices = showCaptureGraphConfiguration((result & 1) != 0);

// hier holt man sich eine neue Instanz vom Gerät
dsfg = new DSCapture(0, dsi[0][chosenDevices[0]], chosenDevices[2] == 1, dsi[1]  
                 [chosenDevices[1]], this);

// jetzt kann man sich bequem die Bilder holen
BufferedImage img = dsfg.getImage();

//hier kann man sich den Graph als JPanel liefern lassen um  das Bild der Cam zu 
// sehenzu sehen
dsfg.asComponent() 

[\JAVA]

mfG

Shining
```


----------

