Understanding Wav File Combination in Java

Asked 2 years ago, Updated 2 years ago, 34 views

try{
        FileInputStream fis=new FileInputStream(file1);
        BufferedInputStream bis=new BufferedInputStream(fis);
        bis.read (binaryData1);
        bis.close();
        fis.close();
        fis=newFileInputStream(file2);
        bis = new BufferedInputStream(fis);
        bis.read (binaryData2);
        bis.close();
        fis.close();

        byte [ ] outputBinary = new byte [(int) (binaryData1.length+binaryData2.length-44)];
        System.arraycopy(binaryData1,0,outputBinary,0,binaryData1.length);
        System.arraycopy (binaryData2,44, outputBinary, binaryData1.length, binaryData2.length-44);

        int fileSize = outputBinary.length-8;
        outputBinary[4] = (byte) (fileSize & 0xff);
        outputBinary[5]=(byte)(fileSize>>8)&0xff);
        outputBinary[6]=(byte)(fileSize>>16)&0xff);
        outputBinary[7]=(byte)(fileSize>>24)&0xff);

        int fileData=outputBinary.length-44;
        outputBinary[4] = (byte) (fileData&0xff);
        outputBinary[5]=(byte)(fileData<8)&0xff);
        outputBinary[6]=(byte)(fileData<<16)&0xff);
        outputBinary[7]=(byte)(fileData<24)&0xff);

I am creating a program to combine the two wav files, but when I finish playing the first audio file, it stops playing.I noticed that there was no file data update. How can I fix it?

java

2022-09-30 19:21

1 Answers

As for fileData, the shift direction is the opposite and the write position is wrong.

outputBinary[40]=(byte) (fileData&0xff);
    outputBinary[41]=(byte)(fileData>8)&0xff);
    outputBinary[42] = (byte) (fileData>>16)&0xff);
    outputBinary [43] = (byte) (fileData>>24)&0xff);


2022-09-30 19:21

If you have any answers or tips


© 2024 OneMinuteCode. All rights reserved.