Захват видео с нескольких USB-камер и отображение в пользовательском интерфейсе бок о бок с помощью JAVA + Java-апплета

Мне нужно сделать 2 апплета, которые будут работать на сервере, подобном TOMCAT, и когда я получаю доступ к веб-странице [HTML-страница] на стороне клиента, у меня есть 2 камеры, прикрепленные к этому клиентский компьютер, и я хочу показывать видео с обеих камер на 2 веб-страницах на стороне клиента одновременно.

Я пробовал использовать JMF. Выход

  1. На большинстве машин он не работает одновременно с обеими камерами. Он работает для захвата одной камеры за раз

  2. Это работает на некоторых машинах, но вам нужно выбирать камеры каждый раз, когда вы открываете веб-страницы. Выберите камеру 1 для первого апплета и камеру 2 для второго апплета.

Есть ли способ с / без JMF, чтобы я мог открывать 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, а затем сообщает, что устройство используется, и не может захватить сообщение.

Пожалуйста, предложите любое решение.


person Tattu    schedule 14.09.2011    source источник


Ответы (3)


Проблема в том, что вы пытаетесь использовать одну и ту же веб-камеру в обоих апплетах.

Вместо этого используйте:

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

Ваша первая веб-камера: vfw: Micrsoft WDM Image Capture (Win32): 0

Вы можете проверить свою вторую веб-камеру: используя JMStudio. выберите Файл-> Настройки-> Устройства захвата, а затем щелкните Обнаружить устройства захвата.

Это также можно сделать с помощью кода, но приведенный выше проще. Тем не менее я перечисляю код:

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

ПРИМЕЧАНИЕ. Попробуйте запустить код от имени администратора, если он не работает.

person Nishant    schedule 12.07.2012

Если я правильно помню, то в вашем коде (реализация JMF) должен быть список / массив устройств (ресурсов), из которых java пытается прочитать данные (поток веб-камеры). Я предполагаю, что вам нужно изменить код таким образом, чтобы, если ресурс один занят, пытаться читать с ресурса два. По сути, вы просматриваете весь список ресурсов, пытаясь прочитать все, что вам доступно.

Надеюсь, это поможет.

person MeIr    schedule 02.10.2011

Он может работать с JavaCV http://code.google.com/p/javacv/

person Samuel Audet    schedule 02.10.2011