Захват видео с нескольких usb-камер и демонстрация в пользовательском интерфейсе рядом с помощью Java-апплета - PullRequest
4 голосов
/ 14 сентября 2011

Мне нужно сделать 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, а затем выдает устройство в эксплуатацию и не может перехватить сообщение.

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

Ответы [ 3 ]

1 голос
/ 12 июля 2012

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

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

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

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

0 голосов
/ 02 октября 2011

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

0 голосов
/ 02 октября 2011

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

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

...