在 Java 中,如何录制发送到扬声器的声音输出? [复制]

Posted

技术标签:

【中文标题】在 Java 中,如何录制发送到扬声器的声音输出? [复制]【英文标题】:In Java, how do I record the sound output that is going to the speakers? [duplicate] 【发布时间】:2012-06-24 19:36:22 【问题描述】:

我有一个 java 应用程序,它从多个来源接收声音,用户的一项能力是将应用程序中发生的事情记录到 AVI 文件中,我想在该视频中包含声音捕获。如何录制用户会听到的声音(例如,所有声音输入混合在一起的结果)?我可以弄清楚如何将实际的声音流输入到视频中,但我不确定从哪里获得该声源。

【问题讨论】:

仅供参考:我没有仔细研究过这个问题,但我已经使用 javasound 进行了相当多的工作,我不确定这是否可行。您可能需要自己进行混音。 刚刚提出的这个密切相关的问题可能与您有关***.com/questions/11168465/… 你还有这个问题吗?或者解决了吗? 你是怎么解决的? 抱歉,很久没有回来查看了。我从来没有最终解决这个问题,它最终被事件所克服。我们决定根本不录制声音,所以我不再需要查看它。 【参考方案1】:

你读过这方面的java教程吗? Accessing Audio System Resources 中有很多与您的问题相关的信息。

它详细介绍了一些推荐使用的类,并提供了它们的实现示例。

【讨论】:

我已经读过了,我遇到的问题是你不知道哪个混音器一定要连接到扬声器。在我的 Linux 机器上,有三个混音器,两个似乎是输出(一个到模拟,一个到数字。在我的 Windows 机器上,似乎有更多的混音器,我可以假设其中两个是扬声器的输出。我是不知道如何“一般”选择要从哪个混音器中抓取。 除非我理解错了,这部分内容不包括吗:直接从 Audiosystem 获取线路假设您没有获得混音器,并且您的程序很简单,实际上只有需要某种线;混音器的细节对你来说并不重要。您可以使用 AudioSystem 方法: static Line getLine(Line.Info info) (下面提供了更多详细信息,在我发布的链接上) 嗯,我看错了那部分。这可能会做我正在寻找的东西。我试试看。 我还没有运气。我正在通过一种格式的 SourceDataLine 播放 MP3 文件,我可以通过扬声器听到该文件。我在相同格式的 TargetDataLine 上捕获音频。当我尝试通过相同格式的 SourceDataLine 播放该音频时,我什么也听不到。我假设它记录了沉默(又名,读错了行),但很难说。 这个答案非常模糊。您能否包含链接教程的摘录,其中涵盖如何从系统的音频输出中录制音频?我在那里看不到与这个问题有关的任何内容——只有关于声音 API 的一般信息。

以上是关于在 Java 中,如何录制发送到扬声器的声音输出? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式录制声音发送到内置输出,Mac OS X

将连续字节[]数据发送到Java中的DatagramSocket,DatagramPacket

捕获整个 Windows 声音输出?

python 录制电脑声音

使用 NAudio 使用 asioout 录制时如何使声音更大?

Windows Phone 8 录制扬声器音频