gpt4 book ai didi

java - 如何录制 javasound 应用程序当前正在播放的声音?

转载 作者:太空宇宙 更新时间:2023-11-04 07:31:51 26 4
gpt4 key购买 nike

我有两个 wav 文件,我想模拟在 3D 空间中的不同点生成的声音,就像从矩形 4 channel 麦克风阵列中听到的那样。也就是说,理想的输出是单个 4 channel wav 文件或已知同步的 4 个单 channel wav 文件。

我目前的方法并不是那么好,但原则上是可行的。我在 jReality 模拟中从它们的位置播放了这两种声音(选择它只是因为我已经方便地使用了 jReality 模拟)。这有两个问题:A) jReality 仅支持单个麦克风位置,B) 它直接从 jReality 到 javasound,然后从那里传出我的扬声器。为了解决 A,我应该能够定位麦克风、进行录音、移动麦克风并重复。不幸的是,我不知道如何解决 B,我确实知道记录必须来 self 的 java 代码,因为这是同步它的唯一方法。

所以问题是双重的,首先,有没有更好的方法来模拟音频混合和衰减?其次,有没有办法拦截已发送到javasound的东西并将它们存储到文件中?

最佳答案

完全可以从四个源(音频输入行)读取并在“每帧”级别处理它们。通常编码器有一个 while 循环来读取传入的音频数据。对于每个缓冲区读取(对于四个源,您将有四个缓冲区),您可以将传入的字节解码为声音数据,应用混合算法,然后根据您的音频格式将结果重新转换回字节。

如果将以上内容包装在TargetDataLine中,就可以记录它。

Java 声音教程以某种“大局”的方式介绍了这一点,但如果您之前没有接触过主要概念(使用 javax.sound.sampled 库),那么值得一看。

关于java - 如何录制 javasound 应用程序当前正在播放的声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17557269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com