【发布时间】:2011-02-01 06:55:26
【问题描述】:
如何使用 Java(以跨平台方式)从网络摄像头获取视频和音频流?
例如,我们有一台带有 3-4 个 USB 网络摄像头的计算机;我们想要获取他们的流并让它们在用户界面中可见。我们怎么能做这样的事情呢?我需要一个简单应用程序的代码,它可以在计算机上找到所有摄像头,让我们选择要观看的摄像头。有哪位可以分享一下吗?
【问题讨论】:
标签: java video audio stream webcam
如何使用 Java(以跨平台方式)从网络摄像头获取视频和音频流?
例如,我们有一台带有 3-4 个 USB 网络摄像头的计算机;我们想要获取他们的流并让它们在用户界面中可见。我们怎么能做这样的事情呢?我需要一个简单应用程序的代码,它可以在计算机上找到所有摄像头,让我们选择要观看的摄像头。有哪位可以分享一下吗?
【问题讨论】:
标签: java video audio stream webcam
使用java media framework JMF 或FMJ
Here 是 JVM 的示例
【讨论】:
我看到您对解决方案需要“纯”java 的评论,但这真的“几乎”不可能。您将需要使用某种本机库来访问设备,并说明这一点;我建议您将 Xuggler 视为您的解决方案。 Xuggler 支持 Windows、Mac 和 Linux,它们还提供用于处理音频和视频的示例代码。最后图书馆是免费的。 网络摄像头捕获示例:http://xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler/src/com/xuggle/xuggler/demos/DisplayWebcamVideo.java
虽然 Xuggle 没有麦克风捕获的示例,但您可以在邮件列表中找到示例,或者您可以使用由 packet-mulitbroadcaster 项目编写的代码,该项目位于此处:https://code.google.com/p/packet-multibroadcaster/
【讨论】:
你可以试试my solution。它使用 OpenCV 捕获图像并使用码头服务器通过 WebSocket 传输图像。该示例具有三个类,并且很容易理解。 现在我只能发送视频,但我也在处理音频。
【讨论】:
GetBase64Image();。这种技术是否不会引入不必要的延迟,因为 WebSocket 需要等待来自客户端的消息才能捕获下一帧,而客户端也需要等待来自 WebSocket 的数据才能向 WebSocket 发送另一条消息?为什么不直接在带有Thread.sleep() 的while 循环中调用这个方法,让客户端在ws.onopen() 函数中只发送一次消息?
我会使用弹性。它可以相对容易地与java后端集成。
更新:
需要纯 Java
那么您应该考虑 JavaFX 解决方案。我不是 javafx 方面的专家,我只编写了一些基本的测试应用程序,但我确信这是用 pure java 解决所描述问题的现代方法。
【讨论】: