如何使用Java将wav文件分割成更小的块?

如何使用Java将wav文件分割成更小的块?,java,audio,wav,Java,Audio,Wav,我有一个非常大的WAV文件,大约100MB大小。我想用Java来读取这个wav文件,并将它分成更小的块,每2秒播放一次音频 在Java中可以做到这一点吗?你能给我推荐一个API吗 提前感谢,, Snehal您可以使用和它的成员(包含一个实例)来知道要写什么(格式、采样率),您可以使用来写它 根据该格式的采样率,您可以找出2秒钟内音频的字节数,然后循环从AudioInputStream读取这些字节数,并将它们写入新文件。如果您不关心代码的寿命,那么Quicktime For Java是媒体的好选择

我有一个非常大的WAV文件,大约100MB大小。我想用Java来读取这个wav文件,并将它分成更小的块,每2秒播放一次音频

在Java中可以做到这一点吗?你能给我推荐一个API吗

提前感谢,, Snehal

您可以使用和它的成员(包含一个实例)来知道要写什么(格式、采样率),您可以使用来写它


根据该格式的采样率,您可以找出2秒钟内音频的字节数,然后循环从AudioInputStream读取这些字节数,并将它们写入新文件。

如果您不关心代码的寿命,那么Quicktime For Java是媒体的好选择。它在Windows和Mac上运行,可以读写几乎任何音频(和视频)格式。缺点是苹果已经多年不支持它了,所以尽管它仍然有效,但你正在投资一项即将消亡的技术。

你也可以查阅一些非常基本和简单的技术。 然后二进制读取文件,并以较小的位再次保存


我认为这样做比总是依赖图书馆更好。

通过AudioFileFormat,我可以发现样本率是8000。采样率与其占用的字节数之间有什么关系?我在音频处理方面完全是个新手,很抱歉我的疏忽。除了采样率(f),您还需要每个采样的位数(bps)和通道数(n),这也是AudioFormat提供的。对于一秒钟的音频,您需要bps*n*f/8字节。谢谢Elijenso。我可以找出2秒音频所需的字节数。现在,我正在尝试使用AudioSystem的写入方法写入读取的字节。但是,输入参数之一是AudioInputStream。我无法根据读取的字节创建该对象。任何指示都会非常有用。谢谢对于WAV(PCM)音频大小的快速参考:大小=采样率*通道数*(每采样位/8)*时间(秒)(从),您还需要知道如何格式化较小块的标题,给定较大块的格式。这不是一项“简单”的任务,但也不是一项过于困难的任务。当然,我们需要看看规格。嗨。我正在读一个.wav文件,我还想把它分割成更小的块并传递下去,以便找出每个块中的频率。我对Java声音很陌生,所以你能帮我解决这个问题吗。我将在下一个注释中附加代码的一部分。提前感谢final float[]floatBuffer=DTMF.generateDTMFTone(字符);String read=“D:/RecordAudio31.wav”;InputStream in=新文件InputStream(读取);//从inputstream audiostream创建audiostream=新的audiostream(in);最终音频格式=新的音频格式(44100,16,1,真,假);final AudioInputStream inputStream=新的AudioInputStream(audioStream,格式,floatBuffer.length);最终音频调度器=新的音频调度器(inputStream,步长,0);dispatcher.addAudioProcessor(goertzelAudioProcessor);新线程(dispatcher.start();我想出来了。谢谢你。