我尝试使用 VLCj 来访问网络摄像头。我正在使用这段代码:
public static void main(String[] args) {
// Create player.
MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();
DirectMediaPlayer mediaPlayer = mediaPlayerFactory.newDirectMediaPlayer(
320, 240,
new RenderCallback() {
@Override
public void display(Memory arg0) {
// Do nothing.
}
});
// Options setup.
String[] options = new String[]{};
String mrl = "v4l2:///dev/video0"; // Linux
// Start preocessing.
mediaPlayer.startMedia(mrl, options);
BufferedImage bufImg;
for (int i = 0; i < 1000; ++i) {
bufImg = mediaPlayer.getSnapshot();
// Do something with BufferedImage...
// ...
}
// Stop precessing.
mediaPlayer.stop();
mediaPlayer = null;
System.out.println("Finish!");
}
这段代码部分有效——我可以获得并使用BufferedImage
,但是:
- 我在输出时出错:
[0x7f0a4c001268] main vout display error: Failed to set on top
- 当主循环完成并且相机被禁用时,程序没有完成!我看到
Finish!
消息,但程序没有将控制权返回到 IDE 或控制台。
UPD: 我正在使用 openSUSE 12.2 x64,已安装 VLC 2.0.3,并且所有视频文件、库 VLCj 2.1.0 都可以正常工作。