在Java中附加现有的WAVE文件

时间:2019-03-13 17:38:47

标签: java file audio recording wave

我需要用Java实现功能,从而多次写入WAVE文件,以实现here中所述的录音机的pauseRecording()功能。不幸的是,评论者在我的用于查询重载AudioSystem.write()方法的初始查询中的建议使我陷入了死胡同,因为唯一的其他重载方法是写入OutputStream(甚至更好的是FileOutputStream)。到目前为止,还不错,但是这导致我遇到一个问题,因为我没有帧长度,所以无法从创建的FileOutputStream中写入所需的文件-如果可以使它工作,this方法将是理想的选择,但是我遇到了错误

stream length not specified
    at com.sun.media.sound.WaveFileWriter.write(Unknown Source)
    at javax.sound.sampled.AudioSystem.write(Unknown Source)

由于上述原因。

是否有另一种方法可以将WAVE文件添加到新记录的文件中?我已经看过一些关于SO的类似问题(例如,here),但是这些问题都不是我在此处描述的特定用例,因此很遗憾没有用。

这是我要做什么的简单说明:

try
    {
        // If output file does not yet exist, write audio input stream to file

        AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, outputFile);

        // If output file already exists, we must append it 

        if (outputFile.exists() && !outputFile.isDirectory())
        {
            FileOutputStream outputStream = new FileOutputStream(outputFile, true);
            AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, outputStream);
        }
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }

但是此代码导致上面的错误。有谁知道解决这个问题的方法吗?例如,是否可以将帧长度指定为任意值,然后再删除帧中未使用的部分?我一直在看的另一件事就是按照here的描述编写两个文件并将它们串联起来,但是事实证明这很杂乱,说实话,对于我的用例来说,这不必要地复杂。

任何帮助将不胜感激。

0 个答案:

没有答案