Tag: audio

剪辑在Java中播放带有坏滞后的WAV文件

我编写了一个代码来读取WAV文件(大小约为80 MB)并播放它。 问题是声音播放严重(极端滞后)。 你能告诉我这是什么问题吗? 这是我的代码:(我在Jframe构造函数中调用doPlay函数) private void doPlay(final String path) { try { stopPlay(); InputStream is = new FileInputStream(path); InputStream bufferedIn = new BufferedInputStream(is); AudioInputStream ais = AudioSystem.getAudioInputStream(bufferedIn); AudioFormat format = ais.getFormat(); // this is the value of format. // PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian DataLine.Info info = new DataLine.Info(Clip.class, format); […]

用Java打开/关闭计算机音量?

我想用一个命令上下调整计算机的主音量(100%/ 0%)。 我看到我可以使用FloatControl ,但我不知道如何使用它。

如何规范化混合WAV文件

我想混合两个WAV文件。 WAV文件可以作为字节数组使用,我使用下面的代码将两者混合使用。 byte[] byte1 , byte[] byte2 // 44 is header of wav file for( int i = 44 ; i < byte1.length ; i++){ byte1[i] = byte1[i] + byte2[i]; } 上面的代码大多有效。 但是当结果超过最大波(16位音频文件)时,它会产生噪音。 如何标准化混合声音?

Java检测音频文件(mp3)

我有这个代码读取一个mp3文件 import java.io.File; import java.io.IOException; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.UnsupportedAudioFileException; public class Sound { public static void main(String[] args) { File sampleFile = new File(“test.mp3”); try { AudioSystem.getAudioFileFormat(sampleFile); } catch (UnsupportedAudioFileException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 这里的问题是它返回文件不支持exception,这里的文件是一个mp3文件。 Java不支持mp3文件? 如果是这样,其他人validation音频文件是什么?(如ogg,wav)

如何将SourceDataLine的内容写入文件?

我正在修改播放音频数据的应用程序,以便将数据写入文件。 当前实现时,动态填充字节数组,每次填充时,此缓冲区的内容都写入SourceDataLine。 我基本上想要将缓冲区写入指定格式的文件中。 我已经阅读了这个官方教程,并且发现这段代码已被剪切,用于将音频数据写入文件: File fileOut = new File(someNewPathName); AudioFileFormat.Type fileType = fileFormat.getType(); if (AudioSystem.isFileTypeSupported(fileType, audioInputStream)) { AudioSystem.write(audioInputStream, fileType, fileOut); } 我从API文档中看到我可以使用TargetDataLine构造一个AudioInputStream,但在我的例子中我有一个SourceDataLine。 我不知道如何将我的字节数组中的数据导入TargetDataLine,因为它实现了read()方法而不是write()。 AudioInputStream的其他用途以及其他文档将其视为从文件中读取的一种方式,因此我对它与AudioSystem.write()的使用感到有些困惑。 那么,如何将数据从SourceDataLine或直接从缓冲区获取到TargetDataLine或AudioInputStream中,以便将其写入文件?

帧率与采样率

采样率和帧率之间有什么区别? 我尝试检查一首歌,并使用java找到了采样率和帧率。它们具有相同的值,这让我感到困惑。 框架由多个样本组成? 谢谢

音频:更改字节数组中的样本量

我正在使用这种方法将wav文件读取到字节数组(如下所示) 。 现在我把它存储在我的字节数组中,我想改变音量。 private byte[] getAudioFileData(final String filePath) { byte[] data = null; try { final ByteArrayOutputStream baout = new ByteArrayOutputStream(); final File file = new File(filePath); final AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file); byte[] buffer = new byte[4096]; int c; while ((c = audioInputStream.read(buffer, 0, buffer.length)) != -1) { baout.write(buffer, 0, c); } audioInputStream.close(); baout.close(); data […]

如何在java中编写FLAC文件

我需要在java中编写FLAC文件。 之前我将音频输入写入WAV文件,然后使用外部转换器将其转换为FLAC文件 我正在研究JFlac以找到可以通过其编写FLAC文件的任何API。 我发现java中的AudioFileFormat.TYPE仅支持以下文件格式 – AIFC,AIFF,SND,AU,WAVE。 我想有一种方法可以从麦克风中捕获音频,并使用Audiosystem.write等API将其写入FLAC文件而不是WAV文件。 请建议可以解决我的问题的方法或API。

MP3不会与JMF流式传输

基本思想是访问.mp3文件并通过RTP流将其发送给其他想要播放该歌曲的客户端。 这是RTPServer.java,我在网上找到并根据自己的喜好对其进行了修改。 package server; import java.net.InetAddress; import javax.media.rtp.*; import javax.media.rtp.rtcp.*; import javax.media.*; import javax.media.protocol.*; import javax.media.control.*; public class RTPServer implements ControllerListener, Runnable { private boolean realized = false; private boolean configured = false; private String ipAddress; Processor p; MediaLocator src; public static void main (String[] args) { RTPServer rtp = new RTPServer(“192.168.1.101”, “04 – Blue.mp3”); […]

Java sound api – 扫描midi设备

我正在开发一个java项目,它使用javax.sound.midi库从midi硬件接收midi事件。 在文档中,它说MidiSystem.getMidiDeviceInfo()返回所有连接的midi硬件的列表。 它适用于我,但问题是,它只能工作一次。 第一次实际扫描设备需要花费一些时间,但每次之后,即使已连接新设备,它也会立即返回相同的列表。 有没有办法强迫它重新扫描? 如果重新启动应用程序,它将重新扫描,但我不希望我的用户在连接新的midi设备时必须重新启动。 顺便说一下,我正在使用Mac OS X ……有人指出,不同操作系统的行为可能会有所不同。