在Java Applet中捕获用户的声卡输出

时间:2011-04-06 17:14:05

标签: java applet audio-streaming java-web-start javasound

我正在寻找一种方法来捕获用户的声卡输出,并通过RTMP实时将其传输到red5服务器。

使用音频重定向,例如使用Windows Stereo Mix不是一个选项,因为它很难配置,并且在配置和Windows版本中不能一致地工作。

我愿意接受这方面的各种解决方案 - 甚至可能是JNI / JNA?

感谢您的建议!

4 个答案:

答案 0 :(得分:0)

如果您愿意使用JNI / JNA,为什么不通过C ++或C访问声音驱动程序,这将更容易,因为无论如何您将用Java编写接口,但它们的实现将使用C ++或C. / p>

答案 1 :(得分:0)

请参阅Java教程中的Capturing Audio

最终用户需要对applet进行数字签名和信任,然后才能拦截声音线中的数据。

如果未启用任何软件或硬件“音频回送”,则可能会完全失败(即使在完全受信任的小程序中)。

答案 2 :(得分:0)

这并不像看起来那么微不足道。

您需要做什么[第1部分 - 创建存储信息的地方]:

  • 描述服务器,存储文件的位置。 (例如:Google App Engine)
  • 描述了您希望如何存储文件。 (例如:数据存储区)
  • 描述了数据完整性的重要性。 (例如:上传文件更容易,使用现有的上传API,然后流式传输数据。示例Apache FileUpload)

假设您有最大大小为1 MB的文件(例如.ogg)音频文件,您要将其上传到服务器数据库。如果您要创建自动上传器,您可以创建一个可以手动使用的网页前端。

如果你想回答你的问题,那么形成一个明确的问题,人们可以回答。如果你没有指定限制,那么IMO是非专业的,至少我永远不会写一个复杂的解决方案。


抱歉,我的初步答案对你没用。我试图简化问题,但我简化了它。 "Everything should be made as simple as possible, but not simpler." A. Einstein.

作为解决问题的潜在解决方案,我建议:

  • Screener - 一个Java程序,不仅可以传输音频,还包括截屏视频。 enter image description here

如果它无法解决您的问题,那么我希望它至少对您有用。

答案 3 :(得分:0)

好的 - 在Java中肯定没有本地方法可以从浏览器中捕获声卡输出。可以使用Java Native Interface编写特定于平台的代码来拦截该行并将原始音频数据传递给applet以进一步处理它。