将三个字节数组相互附加

时间:2014-02-24 16:05:16

标签: java audio bytearray wav overwrite

我正在使用它来进行音频录制中的wav音频覆盖,当用户在GUI上将JSlider(进度)更新到特定点并点击记录时我们应该在用户点击停止后执行覆盖这是我的工作方式它:

if (progress.getValue() < progress.getMaximum()) {
     System.out.println("middle overwrite");
     byte[] firstdata = Arrays.copyOfRange(wavdata, 0, pos);
     byte[] remaindata = Arrays.copyOfRange(wavdata, firstdata.length + newwavdata.length, wavdata.length);
     wavdata = ByteArrayAppender(firstdata, newwavdata, remaindata);
     //System.out.println(remaindata.length);
     //System.out.println(firstdata.length);
     //wavdata=remaindata;
     }
InputStream input = new ByteArrayInputStream(wavdata);
AudioInputStream ais1 = new AudioInputStream(input, WAVFormat(),wavdata.length/ WAVFormat().getFrameSize());

initiateAudioFunctions(ais1);

(...)

public byte[] ByteArrayAppender(byte[] firstData, byte[] newData, byte[] remainData) {

    byte[] editedByteArray = new byte[firstData.length + newData.length + remainData.length];
    System.arraycopy(firstData, 0, editedByteArray, 0, firstData.length);
    System.arraycopy(newData, 0, editedByteArray, firstData.length, newData.length);
    System.arraycopy(remainData, 0, editedByteArray, firstData.length + newData.length, remainData.length);

   return editedByteArray;

}

问题有时是有效的,有时却不行。 通过不工作我的意思是我只得到噪音,副本工作正常,但新数据有时被复制为纯噪音,我想知道我可能做错什么?

0 个答案:

没有答案