我有点迷失在这里:
我尝试使用VLCJ将我的网络摄像头集成到Java App中。当我打开VLC并使用下面屏幕截图中显示的设置时,一切运行良好。
但是当我尝试在我的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);
}
}
使用引用的代码我得到一个显示蓝色Cyberlink的JFrame"请启动您的网络摄像头"商标。当我使用虚拟网络摄像头设备("讯连科技网络摄像头分享管理器")时,也会在VLC中发生这种情况。这就是为什么我使用" dshow-vdev = HP HD网络摄像头[固定]"。 这是物理设备的excat名称(见上面的截图)。 所以我完全不知道为什么这在VLC中工作但在VLCJ中没有....
有什么想法吗?
答案 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测试源中的示例做了类似的事情。