问题标签 [javax.sound.sampled]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
91 浏览

animation - 在 JavaFx 中更新应用程序线程以绘制节点

我正在开发一个程序,该程序将能够使用来自麦克风或线路输入的流式幅度数据来绘制音频波形。我想这样做的方法是以等于采样率的速率从样本数据中绘制每个点,在绘制每个点时在 x 方向上移动 1 步。因此,我需要每秒更新大约 44100 次 JavaFx 应用程序线程来绘制每个点。在我开始这样做之前,我想通过画一条直线并且每半秒更新一次每个点来测试我的想法。我正在使用 Timeline 类来执行此操作。我的代码如下所示:

但是,每次我这样做时,我的程序都会变得无响应,我必须强制关闭它。我注意到,如果我做同样的事情,而是让 Text 闪烁,它工作得非常好。是否有原因无法使用 Timeline 类绘制线条?它会给线程带来太多负担吗?如果是这样,我可以通过什么方式解决我的想法。我只想能够实时绘制波形,以每秒 44,100 次左右的速度更新。

0 投票
1 回答
177 浏览

java - 计算两个通道的音频电平/幅度/db

我已经阅读了两篇关于从 AudioInputStream 中提取样本并将它们转换为 dB 的文章。

https://stackoverflow.com/a/26576548/8428414

https://stackoverflow.com/a/26824664/8428414

据我了解byte[] bytes;有这样的结构:

在第一篇文章中,它展示了如何从一个通道(单声道)获取样本。

所以,我的问题是我想分别为右声道和左声道分别获取样本,以便计算右声道和左声道的 dB。

这是代码。如何更改以分别获取右声道和左声道?我无法理解索引如何i变化...

希望你能帮助我。先感谢您。

0 投票
1 回答
99 浏览

java - How do I avoid a NullPointerException when stopping and starting a Clip in Java?

I'm making a game in Java and I want a theme song to play in the background, but every time the user presses minus the volume decreases. No matter what I try, I can't do this from another method besides the one where I initialized the Clip because the cli.

This is the code for my GameAudio class:

In my Player class I put:

and then further down

When in debug mode the null pointer exception seems to come from gameAudio.stopSound() calling clip.stop(); and clip.close(); How can I avoid this?

0 投票
1 回答
199 浏览

java - 在Java中将mp3转换为wav

我正在编写一个用于将音频文件转换为 WAV 的通用实用程序。WAV 到 WAV 的工作正常(我也在更改一些属性),但我无法转换 MP3 文件。我的类路径中有 mp3spi,所以它似乎能够读取 MP3,但写入的 WAV 文件似乎不起作用。

在此示例中,我不尝试更改任何属性。只需读取 MP3 并写入 WAV 文件

我的代码看起来像这样

这是输出。如您所见,它似乎在写入输出文件,但是当我尝试检索输出文件的格式时,它无法处理。如果我尝试播放输出文件,播放器将无法识别它。

我还需要别的什么来让它工作吗?

0 投票
1 回答
67 浏览

java - 从 SourceDataLine 创建 WAVE 文件时出现 Java UnsupportedAudioFileException

我对我的英语感到抱歉。

我正在尝试创建一个程序来记录我的扬声器音频并将其保存到文件中。从我的 SourceDataLine 创建一个 WAVE 文件我按照这个问题中的步骤 [https://stackoverflow.com/questions/9573920/how-can-i-write-the-contents-of-a-sourcedataline-to-a-文件]

并制作了以下代码

代码的输出是:

javax.sound.sampled.UnsupportedAudioFileException:在 Main.main(Main.java:34) 的 java.desktop/javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1014) 的格式不受支持的流