2010-09-20 110 views
6

我想获取我的Macbook(集成iSight网络摄像头)的网络摄像头流。在Java中获取网络摄像头流Mac Os X中

我使用Java,并且我对Objective-C一无所知,所以我正在寻找一种“全Java”解决方案。我找到了一些类的例子,但它们是在2005年制作的,它们不适用于我的系统。

回答

5

我现在自己也遇到了同样的事情。我正在为我的项目使用VLCJ,它在Windows,Linux Mint,Linux Ubuntu和Mac OSX Lion上完美运行。正如你可能读过的,VLCJ是一个围绕libvlc的java包装器,VLC播放器也使用它。

问题是,当您打开VLC播放器的捕捉选项时,它会使用可用摄像头(USB连接)填充组合框。但这是VLC播放器本身所做的事情,它不会为您提供API。如果您不使用VLCJ将某个相机的ID传递给它,VLC将使用系统的默认相机。我使用VLCJ从USB连接的摄像机或桌面传输文件。

我必须找到一种方法来“扫描”我的系统上的USB摄像头,这是特定于操作系统的东西。

在窗口上我使用DirectShowJava

在Linux上,你只需要读的/ dev /视频*可用的相机,如果你想显示给用户一些“友好用户名”,你可以使用video4linux4java

和第3和一个你最有兴趣我还没有尝试过,但我会尝试这个:stack,example

如果libvlc可以做到这一点,它会更好,因为它不需要使用3个API(用于3个OS),并且它们每个都可以做VLCJ可以做的(只在该平台上),而我使用它们只是为了读取设备。

编辑:目前的官方VLC版本是1.1.x,并且它在Mac上对相机的支持有限。您只能通过Mac的默认相机(iSight,FaceTime Built In)进行流式处理,无音频。 VLC 1.2.0将很快推出,它将有更好的Mac支持(了解其他连接的相机,桌面流,音频)。你可以在VideoLAN论坛上看到我的thread。我为Mac下载了1.2.0-git版本的VLC,它看起来非常酷,并且具有真正的“Mac感觉”。您可以从here下载。但请注意,这是开发版,它崩溃了很多。

+0

谢谢你,太棒了! – 2011-12-08 12:29:24

+0

@Matthieu我刚刚编辑我的答案与一些Mac OS X的具体细节,希望它会省下你一些时间:) – vale4674 2011-12-08 14:52:04

0

试过JMF?你可以开始here

+1

它似乎是Windows或Solaris的摄像头。没有提及OS X或Mac – 2010-09-20 10:51:45

+2

JMF已过时 – 2011-01-25 05:17:16

1
+0

我读过“新版本还忽略提供组件以显示Quicktime的捕捉设备(如网络摄像头或摄像机)的输入视频预览”。看起来Java并不是苹果真正关心的......另请参见:http://onjava.com/pub/a/onjava/2003/10/29/qtj-returns.html?page=last(在“其他变化“)。至于VideoLAN,它似乎无法从网络摄像头捕捉。 – 2010-09-20 14:21:20

+0

是的,我不知道QTJava已被弃用,对不起:http://lists.apple.com/archives/quicktime-java/2008/Jun/msg00018.html – trashgod 2010-09-20 20:42:04

+0

VLC应该能够从网络摄像头捕获.. .file - >打开捕获设备 – rogerdpack 2011-08-11 13:45:24

0

我发现OpenIMAJ核心视频采集库,它适用于我的MacBook,Windows PC和Linux服务器。缺点是它有很多依赖关系。

因此,我修改了OpenIMAJ代码,并制作了另一个不需要那些疯狂功能的软件包。您可以从我的网站获得我的代码和演示应用程序(开放源代码bsd许可证):http://www.sleepingdumpling.com/blog/download/jvideoinput/

功劳归功于OpenIMAJ和贡献者。

所以这不是不可能的。