问题标签 [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.
java - Java 采样 - 播放原始 PCM Wav 数据
我现在正在处理声音。
我通过读取 wav 文件并跳过前 44 个字节(根据 WAV 规范,数据从第 44 个字节开始)来获得我的字节 []。我使用 22500Hz 并通过 Audacity 将其导出到 16 位 PCM。
我的方法看起来像这样
我的 SoundClass 看起来像这样
我做错了什么,我没有收到 LineUnavailableException 并且我什么也没听到。
java - 重新启动 Clip 对象 - flush() 方法
DataLine.flush()的Javadoc状态
从线路中刷新排队的数据。刷新的数据被丢弃。在某些情况下,并非所有排队的数据都可以丢弃。例如,混音器可以从缓冲区中刷新特定输入行的数据,但仍然会播放输出缓冲区中已经存在的任何未播放数据(混合的结果)。如果您想在重新开始播放或捕获时跳过“陈旧”数据,您可以在暂停一行(正常情况)后调用此方法。(刷新未停止的行是合法的,但在活动行上这样做可能会导致数据不连续,从而导致可察觉的点击。)
这到底是什么意思?
此外,对于重新启动Clip
对象,该站点上的许多人建议使用以下方法:
使用上面的代码时,我注意到一个示例剪辑(如果重要的话,大约 15 秒长)不会从一开始就重新启动,并且它的“重新启动位置”不一致。但是,当我尝试
剪辑工作完美,并在声音开始时重新开始。我的问题是,flush() 方法做了什么来解决我之前的问题?另外,为什么我首先遇到了这个问题?
java - 如何在播放新剪辑之前停止所有当前在 Java 中播放的剪辑?
我正在使用 Swing 为我的大学项目制作智能 ATM 应用程序,视力障碍者也可以使用它。
我已将鼠标悬停在每个按钮的侦听器上,以便程序播放一段讲述该按钮操作的剪辑。
问题是当用户在很短的时间内将鼠标悬停在多个按钮上时,当一个关于前一个按钮的剪辑已经播放时,两个剪辑同时播放,这不是我想要的。
到目前为止,我当前帧的代码是:
java - 剪辑有时不播放
我有一个 Sound 类,其中包含一个方法,当调用该方法时,该方法使用 Clip 对象(在本例中为clip
)播放声音。
Clip 对象的实例化发生在一个单独的静态方法中,该方法在此方法之前调用,这就是上述方法可以声明为静态的原因。
另一个实现的类KeyListener
包含以下代码:
因此,我的代码应该播放与clip
每次按下键相关的声音。但是,如果我快速反复按下某个键,声音有时会不播放。这在一段时间后尤其明显(似乎每次按键后问题都会变得更糟)。
为什么会发生这种情况,我该如何规避这个问题?
java - AudioInputStream java上的随机访问
是否有随机访问 AudioInputStream 的示例?就像任何普通的音频播放器一样——当你把酒吧带到你想要的任何地方并从你想要的任何地方播放时,我怎样才能以这种方式访问音频流中的字节?
像这样简单的东西:read(byte[] buffer, long startingFrom)
startFrom 可以是音频流中我想要的任何位置
java - Java 布尔播放按钮问题(每次点击都反复播放)
当单击播放按钮(显然)触发时,我需要 playsound 功能来播放 .wav 文件;但是我只需要在播放音频时这样做一次;然后当音频停止时,它会再次点击再次播放。
它不会那样做...每次单击按钮时它都会播放文件,从而导致繁荣。
暂时忽略 pausesound() 方法,我稍后再说。现在我只希望按钮按上述方式执行。
编辑:更新了代码;仍然有同样的问题。
java - 如何选择混音器和线路来获取/设置音量输出?
在我的应用程序中,我想要获取和设置输出音量。我在互联网上看到了例子。基本问题是找到合适的混合器和线路。我使用 AudioSystem.getMixerInfo() 和 mixerInfo.getName()。我来自波兰,拥有波兰语 Windows,因此名称是波兰语,例如带有字符“?”的“Podstawowy sterownik d?wi?k”。描述和名称都没有用,我找不到区分和找到合适的线路来控制它的方法。是否可以获取一段代码来获取当前音量并进行更改?
java - 通过 AudioSystem.getAudioInputStream(file) 读取 MP3 文件时出现异常
我正在尝试通过类 javax.sound.sampled.AudioSystem 读取 MP3 文件,但我得到一个UnsupportedAudioFileException
. 我试图读取音频文件的代码如下所示:-
我收到以下异常:-
AudioSystem 类不支持 mp3 格式吗?如果不是,那么它支持哪些格式?或者我在这里做错了什么?
java - 如何在 javax.sound.sampled.Line 上/从 javax.sound.sampled.Line 播放/录制声音
我有一个数组,里面填充了所有当前连接的麦克风的 javax.sound.sampled.Line.Info 对象
使用它们我可以得到所有麦克风的线路
扬声器也是如此
现在我只需要弄清楚如何在线路上播放声音以及如何从线路上录制声音。这就是我陷入困境并且找不到解决方案的地方。
所以只是说,问题是,我怎样才能读/写一行?
谢谢巴施迪
_
java - 在每个 RTP 数据包中捕获 4 帧 20 毫秒音频的 8kHz、16 位线性样本
我需要编写简单的 Java 客户端程序来捕获实时音频流。
要求
- RTP 音频数据包。
- 8kHz,16 位线性采样(线性 PCM)。
- 每个 RTP 数据包将发送 4 帧 20ms 的音频。
经过一番搜索,我在互联网上找到了捕获音频的示例代码,但它会发出哔哔声。
代码
我想我无法找到正确的格式来捕获以给定格式发送的数据包?
任何人都可以帮助我找到合适的AudioFormat来捕获此音频流或指向相同的任何链接对我有帮助...谢谢... :)
回答
UDP + RTP 数据包格式
同时缓冲数据中的负 12 个字节,因为它包含 RTP 标头信息。
希望这对您将来有所帮助,或者如果错误,请随时纠正谢谢..