问题标签 [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 回答
751 浏览

java - 不支持的控制类型:采样率

因此,我试图让 Java 在这方面以一定的速度播放声音,我尝试为 SourceDataLine 获得一个用于采样率的控件:

}`

但在运行时我得到:

大家有遇到过这样的事情吗?我试图为此找到答案,但找不到答案。我正在使用 Java 8。 在此处输入图像描述 感谢您的帮助。

0 投票
0 回答
67 浏览

java - 从 JRE 7u51 升级到 JRE 7u55 后,Java Sound 调用占用过多 CPU

使用 jstack 来分析 CPU 最密集的线程,我发现 AudioSystem.getMixer() 调用占用了我所有的 CPU。我没有更改代码中的任何内容,只更改了 java 的版本(从 7u51 到 7u55)。此调用在线程中处于紧密循环中,暂停仅持续 20 毫秒。关于如何开始找到解决方案的任何想法?

我正在运行 Ubuntu 14.04 x86_64 和 JRE 7u55 64 位。这发生在所有较新版本的 java 中。

0 投票
0 回答
354 浏览

java - Java - 声音偶尔会以非常响亮且不规则的音量播放

因此,我正在用 Java 制作游戏并使用以下代码来播放音效(枪声、爆炸等)。但是,有时,声音效果会以非常不规则的音量播放,比我预期的要响亮,即使它通常以标准音量播放。

当我同时播放很多声音时,这种情况更常见,有时一个声音片段的音量会比其他声音高得多,而且差异非常明显。

我已经录制了该问题的简短音频片段:Youtube 链接

任何帮助弄清楚为什么会发生这种情况将不胜感激。

这是我的声音类中使用的代码:

我使用这段代码播放声音,每次武器射出子弹时我都会播放它:

0 投票
0 回答
514 浏览

java - Java 合成器编程

我正在尝试学习使用 Java 从头开始​​创建合成器我尝试将一些教程和代码串在一起以尝试从基本的工作产品中学习,但我没有得到任何声音。我只想能够使用正弦波、锯齿波和方波产生声音。当我运行程序时,我没有声音。我认为我的问题出在 Main.java 类和 SamplePlayer.java 类中。我将在最后发布的 SamplePlayer.java 类中遇到错误。有谁知道我做错了什么或者需要改变什么才能创造出基本的声音?

我有 6 节课:

  • Envelope.java(设置 ADSR 包络生成器)

  • Main.java(包含主函数)

    /li>
  • SamplePlayer.java(负责采样波形和播放声音)

    /li>
  • SampleProviderIntfc.java(有一个 getSamples() 方法存根)

SamplePlayer.java 中产生的错误:

这些错误在以下行中生成:

0 投票
2 回答
2494 浏览

java - 在 Java 中播放音频文件

我正在尝试播放一个简单的音频文件,该文件位于类文件附近的同一目录中。我尝试了许多来自互联网的示例,但所有其他示例都给了我我什至无法理解的错误。

然后我找到了这个,我现在正在使用它。

既没有编译错误,也没有运行时错误。但问题是我听不到任何噪音。

截屏

请注意,我的系统音量为 80%,音频文件在 VLC 媒体播放器中播放。

0 投票
1 回答
31 浏览

java - 循环 Java 音频

我已经Clip装好了。

我可以开始Clip使用该方法clip.start()

但是,一旦歌曲结束,剪辑就会停止播放(duh)。

如何让它不断循环,直到我打电话clip.stop()

0 投票
0 回答
420 浏览

java - Java Sound,将音量百分比转换为分贝

我有以下代码。

获取以分贝为单位的最小修改值(例如 -80)

获取以分贝为单位的最大修改值(例如 6)

我有一个floatcall volume,范围从 -1f(声音完全关闭)到 +1f(200% 音量)。

如何转换volume为分贝数来修改volumeControlby?

0 投票
1 回答
2687 浏览

java - Java中的多个混音器输出

我正在尝试让 Java 在两个输出(前后音频插孔)中播放不同的立体声音频。

我的声卡配置为独立处理两个输出,在 Windows 混音器中我可以让它们分别发出测试声音,所以这不是卡问题。

我尝试了Change Mixer上的方法,通过使用不同的混音器获取两个剪辑,使用不同的输出在 java 中输出声音AudioSystem.getClip(AudioSystem.getMixerInfo()[i]);。但是,这行代码仅适用于 Java Sound Audio Engine ( AudioSystem.getMixerInfo()[0]),它以 Windows 的默认音频输出方式输出。其他任何东西都会抛出

以下示例代码生成 5 秒长的白噪声并播放 1 秒然后结束。它打印混音器信息,如我如何在 java 中获取混音器通道布局所见。它当前输出到“Java Sound Audio Engine”混音器,尝试更改为任何其他混音器会引发上述异常。

这是混音器信息。此代码在连接两个输出插孔的情况下运行,Windows 将其识别为两个不同的输出设备(扬声器和耳机)。看起来只有 Java 的音频引擎可以播放声音。

由于其他限制,我正在使用 Java 6。此外,一些名称可能因为我在日语环境中而被破坏,并且 Eclipse 不会以正确的编码获取名称(我尝试将所有内容更改为 UTF-8 和 Shift_JIS,但没有任何改变,但我猜它不相关到这个问题)。

换句话说,它看起来无法在来自不同混音器的剪辑中输出,因为 Java 只能输出到 Windows 默认音频设备的“Java 声音音频引擎”。有什么方法可以让其他混音器工作吗?是否有使用多个音频输出的替代方法?

更新:似乎这个问题已经解决了,但我仍然无法让它工作。我禁用了“立体声混音”录音设备并运行了该链接中给出的示例代码,并得到了以下输出:

所以看起来只有 Java Sound Audio Engine 可以输出声音,因为前后音频插孔的混音器都被视为输入线。通过 Windows 默认播放设备中的 Clip 或 SourceDataLine 输出播放音频。

此外,看起来他们通过使用 DirectAudio解决了问题,但我仍然不知道如何使用它们。

0 投票
1 回答
499 浏览

java - 防止 Java 7/8 采样声音在播放时点击(适用于 6)

以下代码在 OSX 上的 Java 6 中运行时按预期工作(它不会发出声音 - 它会多次播放静音样本),但在 Java 7 和 8 中运行时,在每个样本播放结束时,会出现一个点击。无法理解为什么;在 6 和 7 之间看不到任何明显的 API 变化。(这是摩尔斯电码训练程序的一部分,它也播放 dits 和 dahs.. 在每个静音间隙或样本末尾单击显然是不可接受的)

提前感谢您的建议....

0 投票
1 回答
548 浏览

java - 致命异常:主要 java.lang.NoClassDefFoundError:外部 library.jar.class Android Studio

我正在开发一个处理语音的 android 应用程序,并且我在 JAVA 上准备好了语音基本项目(android 项目的依赖项),所以我在 JAVA 7 编译器中的 Eclipse 中编译了 JAVA 项目,并将该 java 项目导出为可运行的 jar。我将这个 jar 放入我的 android studio 项目的 libs 文件夹中,并通过右键单击选定的 AS A 库,我得到了构建成功的消息。但是当我尝试运行 android 项目时,它给了我错误消息,

但是上述类在jar文件中,唯一值得怀疑的是所提到的类文件看起来像这样

它指的是 javax.sound.sampled,因此可能会导致问题。

我尝试在谷歌上搜索问题,但没有找到可以解决问题的解决方案。我什么都试过了。我在 android studio 中使用 JRE 7 并在 Compiler & 本身中导出 java 项目。

如何解决此错误?提前致谢。