Java Webcam GUI Приложение - PullRequest
       30

Java Webcam GUI Приложение

0 голосов
/ 09 февраля 2012

Я надеялся, что кто-нибудь сможет мне помочь с проблемой, с которой я сталкиваюсь в разрабатываемом приложении, которое использует веб-камеру в Java с медиа-библиотекой JMF.

У меня проблема в том, что я могу запустить веб-камеру в отдельном приложении с этим классом здесь

import java.awt.BorderLayout;
import java.util.Vector;

import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.control.FormatControl;
import javax.swing.JFrame;
import javax.swing.JButton;

public class WebcamClass{

CaptureDeviceInfo cam;
MediaLocator locator;
Player player;
FormatControl formatControl;
public WebcamClass(){

    try{
                    // List out available Devices to Capture Video.
        Vector<CaptureDeviceInfo> list = CaptureDeviceManager.getDeviceList ( null );
                    System.out.println(list);
        // Iterating list
        for(CaptureDeviceInfo temp : list){
            // Checking whether the current device supports VfW
            // VfW = Video for Windows
                        if(temp.getName().startsWith("vfw:"))
                        {
            System.out.println("Found : "+temp.getName().substring(4));
            // Selecting the very first device that supports VfW
            cam = temp;
            System.out.println("Selected : "+cam.getName().substring(4));
            break;
                        }
        }

        System.out.println("Put it on work!...");
        // Getting the MediaLocator for Selected device.
        // MediaLocator describes the location of media content
        locator = cam.getLocator();

        if(locator != null){

            // Create a Player for Media Located by MediaLocator
            player = Manager.createRealizedPlayer(locator);

            if(player != null){

                // Starting the player
                player.start();

                // Creating a Frame to display Video
                                    JFrame f = new JFrame();
                f.setTitle("Test Webcam");

                f.setLayout(new BorderLayout());
                // Adding the Visual Component to display Video captured by Player
                // from URL provided by MediaLocator
                f.add(player.getVisualComponent(), BorderLayout.CENTER);
                f.pack();
                f.setVisible(true);
            }

        }

    }catch(Exception e){
        System.out.println(e);
    }
}

}

Однако, когда я помещаю его в свое приложение с графическим интерфейсом, откуда я хочу его запустить, я получаю «Исключение в потоке» AWT-EventQueue-0 »java.lang.NullPointerException», когда я нажимаю кнопку, чтобы включить камеру .

Я знаю, что это не захватывает устройство веб-камеры, но я не могу понять почему, как это происходит, когда я не пытаюсь встроить его в мой графический интерфейс.

У меня также есть JMF.jar в папке с библиотеками.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Без дополнительной информации о вашем NullPointerException невозможно сказать, что является причиной проблемы.В трассировке стека для исключения вы должны идентифицировать строку в написанном вами коде, которая вызывает исключение.Без дополнительной информации моя догадка - у вас нет ActionListener зарегистрированного для JButton, который должен запустить камеру

0 голосов
/ 07 июля 2012

cam.getLocator(); вызывает исключение. Ваш список не заполнен никакими устройствами.

...