Java 在VLC中使用相同选项时,VLCJ网络摄像头无法正常工作:

Java 在VLC中使用相同选项时,VLCJ网络摄像头无法正常工作:,java,webcam,vlc,libvlc,vlcj,Java,Webcam,Vlc,Libvlc,Vlcj,我在这里有些迷茫: 我尝试使用VLCJ将我的网络摄像头集成到Java应用程序中。当我打开VLC并使用下面屏幕截图中显示的设置时,一切正常 但是,当我尝试在我的VLCJ应用程序中使用完全相同的设置时,我得到了错误的图像,就像VLCJ使用了错误的网络摄像头设备一样(系统默认为虚拟摄像头,因此不是正确的摄像头!) 这是我的测试代码: public class Camera_Demo { private final EmbeddedMediaPlayerComponent mediaPl

我在这里有些迷茫:

我尝试使用VLCJ将我的网络摄像头集成到Java应用程序中。当我打开VLC并使用下面屏幕截图中显示的设置时,一切正常

但是,当我尝试在我的VLCJ应用程序中使用完全相同的设置时,我得到了错误的图像,就像VLCJ使用了错误的网络摄像头设备一样(系统默认为虚拟摄像头,因此不是正确的摄像头!)

这是我的测试代码:

public class Camera_Demo {

      private final EmbeddedMediaPlayerComponent mediaPlayerComponent;

      public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {      
          public void run() {
            new Camera_Demo();
          }
        });
       }

      private Camera_Demo() {

         NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:/Program Files (x86)/VideoLAN/VLC");
         Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);       

         JFrame frame = new JFrame("vlcj Tutorial");
         mediaPlayerComponent = new EmbeddedMediaPlayerComponent();    
         frame.setContentPane(mediaPlayerComponent);    
         frame.setLocation(100, 100);       
         frame.setSize(1280, 720);
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setVisible(true);

         String [] options =  {" :dshow-vdev=HP HD Webcam [Fixed]"
                             + " :dshow-adev=none"
                             + " :dshow-size=1280x720"
                             + " :dshow-aspect-ratio=16\\:9"
                             + " :live-caching=200"};
         mediaPlayerComponent.getMediaPlayer().startMedia("dshow://", options);
      }
    }
使用引用的代码,我得到一个JFrame,显示一个蓝色的Cyberlink“请启动您的网络摄像头”徽标。当我使用虚拟网络摄像头设备(“CyberLink网络摄像头共享管理器”)时,VLC中也会发生这种情况。这就是为什么我使用“dshow vdev=HP HD网络摄像头[Fixed]”。 这是物理设备的excat名称(参见上面的屏幕截图)。 所以我完全不知道为什么这在VLC中有效,但在VLCJ中却不起作用


有什么想法吗?

选项需要拆分,而不是串联

您需要将其转换为:

String [] options =  {" :dshow-vdev=HP HD Webcam [Fixed]"
                         + " :dshow-adev=none"
                         + " :dshow-size=1280x720"
                         + " :dshow-aspect-ratio=16\\:9"
                         + " :live-caching=200"};
到一个实际的字符串数组中,如下所示:

String[] options =  {":dshow-vdev=HP HD Webcam [Fixed]",
                     ":dshow-adev=none",
                     ":dshow-size=1280x720",
                     ":dshow-aspect-ratio=16\\:9",
                     ":live-caching=200"};

vlcj测试源中的示例做了类似的事情。

wow。。。我看了几个小时我的代码和例子,没有注意到这一点。。。多谢各位!这就解决了问题。愚蠢的我…顺便说一句,当与捕获设备一起使用时,我已经成功地将实时缓存降低到30毫秒。