在VLC中使用相同选项时使用Webcam与VLCJ无法正常工作:

时间:2014-07-15 14:24:09

标签: java webcam vlc libvlc vlcj

我有点迷失在这里:

我尝试使用VLCJ将我的网络摄像头集成到Java App中。当我打开VLC并使用下面屏幕截图中显示的设置时,一切运行良好。

enter image description here

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

这是我的测试代码:

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

使用引用的代码我得到一个显示蓝色Cyber​​link的JFrame"请启动您的网络摄像头"商标。当我使用虚拟网络摄像头设备("讯连科技网络摄像头分享管理器")时,也会在VLC中发生这种情况。这就是为什么我使用" dshow-vdev = HP HD网络摄像头[固定]"。 这是物理设备的excat名称(见上面的截图)。 所以我完全不知道为什么这在VLC中工作但在VLCJ中没有....

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

需要拆分选项,而不是连接。

你需要转换它:

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测试源中的示例做了类似的事情。