4

TOMCAT のようなサーバーで実行される2 つのアプレットを作成する必要があり、クライアント側で Web ページ [HTML ページ] にアクセスすると、そのクライアント PCに2 台のカメラが接続されており、両方のカメラからのビデオをクライアント側で同時に2 つの Web ページ

JMFを使ってみました。出力は

  1. ほとんどのマシンでは、両方のカメラで同時に機能しません。一度に 1 つのカメラ キャプチャで機能します。

  2. 一部のマシンでは機能しますが、Web ページを開くたびにカメラを選択する必要があります。最初のアプレットにはカメラ 1 を選択し、2 番目のアプレットにはカメラ 2 を選択します。

JMF の有無にかかわらず、1 台のクライアント PC で 2 つの Web ページを開き、リモート サーバーで同じ 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();
    }

これは、私の両方のアプレットに存在するものです。しかし、私が言ったように、ほとんどの場合、1 つの CAM を開始してから、デバイスが使用中であり、メッセージをキャプチャできません。

解決策を提案してください。

4

3 に答える 3

1

問題は、両方のアプレットで同じ Web カメラを使用しようとしていることです。

代わりに次を使用します。

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

あなたの最初のウェブカメラは: vfw:Micrsoft WDM Image Capture (Win32):0

JMStudio を使用して、2 番目の Web カメラを確認できます。[ファイル] -> [設定] -> [キャプチャ デバイス] を選択し、[キャプチャ デバイスの検出] をクリックします。

これはコードを使用して行うこともできますが、上記の方が簡単です。それでも私はコードをリストしています:

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

注:うまくいかない場合は、コードを管理者として実行してみてください。

于 2012-07-12T06:09:22.510 に答える
0

私が正しく思い出せば、あなたのコード (JMF 実装) には、Java がデータ (Webcam ストリーム) を読み取ろうとしているデバイス (リソース) のリスト/配列があるはずです。私の推測では、リソース 1 がビジーの場合にリソース 2 から読み取るようにコードを変更する必要があると思います。基本的に、利用可能なリソースをすべて読み取ろうとして、リソースのリスト全体を調べます。

それが役立つことを願っています。

于 2011-10-02T04:45:23.557 に答える
0

JavaCV http://code.google.com/p/javacv/で動作する可能性があります

于 2011-10-02T06:45:54.630 に答える