编程语言
首页 > 编程语言> > 从多个USB摄像头捕获视频,并使用JAVA Java小程序并排显示在UI中

从多个USB摄像头捕获视频,并使用JAVA Java小程序并排显示在UI中

作者:互联网

我必须制作2个小程序,它们将在TOMCAT服务器中运行,当我在客户端访问网页[HTML页面]时,我有2个摄像头连接到该客户端PC,我想要显示来自两个摄像头的视频客户端同时有2个网页.

我尝试过使用JMF.出来就是

>对于大多数机器中的两台摄像机,它不能同时工作.它适用于一次捕获一个摄像头
>它适用于某些机器,但每次打开网页时都必须选择相机.为第一个小程序选择摄像头1,为第二个小程序选择摄像头2.

有没有JMF的方式,我可以在一台客户端PC上打开2个网页,在远程服务器上运行相同的2个小程序,并在每个页面上显示每个USBCAM的视频?

我在与JMF合作时使用过它.

private void StartStreaming()
    {
        String mediaFile = "vfw:Micrsoft WDM Image Capture (Win32):0";
            try
            {
                MediaLocator mlr = new MediaLocator(mediaFile);
                _player = Manager.createRealizedPlayer(mlr);

                if (_player.getVisualComponent() != null)
                {
                    setSize(480, 320);
                    jpnVideoStream.add("South", _player.getVisualComponent());
                }
            }
            catch (Exception e)
            {
                System.err.println("Got exception " + e);
            }
            _player.start();
    }

这是我的两个小程序中的内容.但正如我所说,大多数时候,它启动一个CAM,然后让设备正在使用,无法捕获消息.

请建议任何解决方案.

解决方法:

问题是您尝试在两个小程序中使用相同的网络摄像头.

而是使用:

String mediaFile = "webcam 1"  in applet 1
String mediaFile = "webcam 2"  in applet 2

您的第一个网络摄像头是:vfw:Micrsoft WDM图像捕获(Win32):0

您可以通过以下方式检查第二个网络摄像头:使用JMStudio.
选择File-> Preferences-> Capture Devices,然后单击Detect Capture devices.

这也可以使用代码完成,但上面的代码更简单.我仍然列出代码:

Vector list = CaptureDeviceManager.getDeviceList(null);
int i;
CaptureDeviceInfo tempDevice;

  // List all the devices ...
    if( list!=null)  {

        if( list.size() == 0)
        {
            System.out.println("the device list is zero : ");
            System.exit(1);
        }

        System.out.println("The devices are : ");

        for( i=0;i< list.size() ;i++ ) {
            tempDevice = (CaptureDeviceInfo) list.elementAt(i);
            System.out.println(tempDevice.getName());   
        }   
    }

注意:如果代码有效,请尝试以管理员身份运行代码.

标签:java,webcam,video-capture,japplet
来源: https://codeday.me/bug/20190709/1418381.html