public class TestCapture {
public void capture() {
Vector v = CaptureDeviceManager.getDeviceList();
Iterator it = v.listIterator();
CaptureDeviceInfo cdi = null;
MediaLocator ml = null;
Player p = null;
while(it.hasNext()) {
cdi = (CaptureDeviceInfo)it.next();
if(cdi.getName().startsWith("vfw:")) {
ml = cdi.getLocator();
try {
DataSource ds = Manager.createDataSource(ml);//这里出错
try {
p = Manager.createPlayer(ds);
JFrame jf = new JFrame();
jf.add(p.getVisualComponent());
jf.setVisible(true);
} catch (NoPlayerException e) {
e.printStackTrace();
}
p.start();
} catch (NoDataSourceException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String args[]) {
new TestCapture().capture();
}
}代码如上,报了下面的错:java.io.IOException: Could not connect to capture device
javax.media.NoDataSourceException: Error instantiating class: com.sun.media.protocol.vfw.DataSource : java.io.IOException: Could not connect to capture device
at javax.media.Manager.createDataSource(Manager.java:1012)
at TestCapture.capture(TestCapture.java:29)
at TestCapture.main(TestCapture.java:63)相关的包都已经引进,局部变量Player p 用Manager.createPalyer(ml);创建就完全没问题,能看到图像,但为什么就是创建不了DataSource呢?网上关于jmf的资料少,找了半天都没找到原因,求教高手!!!

解决方案 »

  1.   

    我也遇到同样的问题,能捕获摄像头并显示,但想要得到DataSource就出错,暂时也未找到解决办法
    java.io.IOException: Could not connect to capture device
    java.io.IOException: Capture device in use
    javax.media.NoDataSourceException: Error instantiating class: com.sun.media.protocol.vfw.DataSource : java.io.IOException: Capture device in use
    at javax.media.Manager.createDataSource(Manager.java:1012)
    at com.media.Client.<init>(Client.java:69)
    at com.media.Client.main(Client.java:124)
      

  2.   

    我在windowsXP系统下面不会出现上述异常,这个异常是在win7下才会出现,由此猜测可能是不支持最新的USBVideo驱动