Java网络摄像头GUI应用程序



我希望有人能帮助我解决我正在开发的应用程序中遇到的问题,该应用程序使用带有JMF媒体库的java网络摄像头。

我遇到的问题是,我可以用这个类在应用程序中运行网络摄像头

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);
    }
}

}

然而,当我把它放在我想运行它的GUI应用程序中时,当我按下按钮打开相机时,我不断得到"线程中的异常"AWT-EventQueue-0"java.lang.NullPointerException"。

我知道它没有拿起网络摄像头设备,但我不明白为什么,因为当我不想把它嵌入我的GUI时。

我的库文件夹中也有JMF.jar。

如有任何帮助,我们将不胜感激。

如果没有关于NullPointerException的更多信息,就不可能说出问题的原因。在异常的堆栈跟踪中,您应该识别您编写的代码中触发异常的行。如果没有更多信息,我的猜测是您没有将ActionListener注册到应该启动相机的JButton

cam.getLocator();正在抛出异常。您的列表中没有任何设备。

相关内容

  • 没有找到相关文章

最新更新