【问题标题】:How to write to the microphone input using Java?如何使用 Java 写入麦克风输入?
【发布时间】:2012-12-04 02:44:19
【问题描述】:

我知道这听起来很奇怪,但是有什么方法可以让系统认为麦克风正在接收输入?我想给麦克风我自己的音频作为输入,但我看不到这样做的方法。帮忙?

【问题讨论】:

  • “我想给麦克风我自己的音频作为输入,”嗯,麦克风是“语音控制”的,所以说。 ;) 您打算通过编程方式向麦克风提供声音来提供的最终用户功能是什么?
  • 不仅不可能,而且没有意义:板上没有电路来驱动麦克风内部的线圈产生声音(不保证会有线圈根本就在那里)。这大致与尝试从打印机读取数据一样“有用”。如果您将麦克风插入耳机插孔,当您将音频发送到耳机时,它可能会发出声音。同时,它可能会损坏你的麦克风和主板,所以不要在家里尝试;-)
  • 在现代机器上的硬件和操作系统之间注入数据通常需要对计算机进行 rootkitting,这不是 java 的任务,也不是让用户满意的活动 :)
  • 我正在尝试做的是从线路输入获取音频输入并将其与麦克风输入混合并将组合数据发送到另一个应用程序,在这种情况下是 Skype。跨度>

标签: java microphone javasound


【解决方案1】:

第一步是打开您的 AudioSystem 并检查各种通道/混音器并找到相关线路。你做过吗?涵盖此内容的教程在这里: http://docs.oracle.com/javase/tutorial/sound/accessing.html

我刚刚制作了一个音频混音器,但它只混合 wav 文件和剪辑,直至单个输出 SourceDataLine。我自己没有尝试阅读多个麦克输入。但是,如果您可以从源中打开两个 TargetDataLine,从每个缓冲区加载中读取相同数量的样本,将字节转换为可以添加的值,那么混合并不是那么糟糕(可以缩放每个的体积,以便它们不会加起来超过位编码限制)然后将它们转换回 PCM 字节。

【讨论】:

  • 我确实有办法获得 TargetLines,而且我想我知道如何混合它们,但我怎样才能让 Skype 获取这些数据?
  • 我认为,(不确定)您只需要查看 Skype 并查看您配置的音频线路。我不知道有没有办法告诉一行(从操作系统的角度来看)最终被用于这个应用程序或那个应用程序。也许其他人知道。
  • 我可以使用我的内置线路或麦克风,就是这样。
猜你喜欢
  • 1970-01-01
  • 2014-02-07
  • 2011-08-09
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多