java - 使用带有 VLCJ 的网络摄像头无法正常工作,而在 VLC 中使用相同的选项却可以工作 :

标签 java webcam vlc libvlc vlcj

我在这里有点迷路:

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

enter image description here

但是当我尝试在我的 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);
      }
    }

使用引用的代码,我得到一个显示蓝色 Cyber​​link“请启动您的网络摄像头” Logo 的 JFrame。当我使用虚拟网络摄像头设备(“讯连科技网络摄像头共享管理器”)时,这也发生在 VLC 中。这就是我使用“dshow-vdev=HP HD Webcam [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 测试源中的示例做类似的事情。

关于java - 使用带有 VLCJ 的网络摄像头无法正常工作,而在 VLC 中使用相同的选项却可以工作 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24760759/

相关文章:

java - LineLength 和 JavadocMethod 的 Checkstyle 错误

google-chrome - 如何正确地向 Chrome 提供模拟网络摄像头视频?

c# - .NET 选项将视频文件流式传输为网络摄像头图像

javafx - 使用vlcj-javafx-demo开发一个播放器,但看起来有些组件UI在设置全屏时无法正确更新

node.js - nodejs exec 让 shell 保持事件状态?

java - Gradle - 从任务附加到系统路径

java - oracle中使用java的性能开销

java - 如何更改 slf4j 日志记录级别

java - 在 Java 应用程序中使用网络摄像头

C# Vlc Player鼠标双击事件