ウェブカメラのみを検出するgetDeviceList(Format)
には、(null の代わりに) メソッドに引数を渡す必要があります。
Vector<Object> devices = CaptureDeviceManager.getDeviceList(new Format("RGB"));
Iterator<Object> di = devices.iterator();
while (di.hasNext()) {
CaptureDeviceInfo info = (CaptureDeviceInfo) di.next();
System.out.println(info);
}
これにより、すべての Web カメラ (内蔵および USB に接続されているもの) が印刷されます。私はこのコードをテストしましたが、うまくいきました。
これが役に立たない場合 (JMF は非常に古く、コードの一部が古くなっている可能性があるため)、私のWebcam Captureプロジェクトの一部を使用してみてください。ほとんどのプラットフォーム (Windows x86 および x64、Linux x86 および x64、Mac OS など) で正しく動作します。試してみる場合は、次のように記述してすべての Web カメラ デバイスを一覧表示する必要があります。
List<Webcam> webcams = Webcam.getDevices();
JMF 上でも動作することに注意してください。デフォルトの組み込みドライバーを JMF ドライバーに置き換えるには、JMF ドライバーJAR をクラスパスに追加し、Web カメラを一覧表示する前にこれを呼び出す必要があります。
Webcam.setDriver(new JmfDriver());
この助けを願っています。