Java 在VLC中使用相同选项时,VLCJ网络摄像头无法正常工作:
我在这里有些迷茫: 我尝试使用VLCJ将我的网络摄像头集成到Java应用程序中。当我打开VLC并使用下面屏幕截图中显示的设置时,一切正常 但是,当我尝试在我的VLCJ应用程序中使用完全相同的设置时,我得到了错误的图像,就像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
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毫秒。