-4

我正在从 .wav 文件中读取数据,然后将其转换为二进制格式。然后我编写这些二进制文件并创建一个新的 .wav 文件。我希望在获得 .wav 文件的二进制格式后,我应该对其 LSB 进行少量修改,然后从这些修改的位写入文件。

我应该如何实现这个?我没有任何办法。请帮助我,因为我想通过音频文件进行速记。

import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;

    public class FiletoArrayofBytes

    {

        public static void main( String[] args )
        {
            FileInputStream fileInputStream=null;
            FileOutputStream fop = null;

            File file = new File("C:\\file.wav");

            byte[] bFile = new byte[(int) file.length()];

            try {
                File fileo = new File("c:/newfile.wav");
        fop = new FileOutputStream(fileo);
            // if file doesnt exists, then create it
                if (!fileo.exists()) {
                    fileo.createNewFile();
                }
                //convert file into array of bytes
            fileInputStream = new FileInputStream(file);
            fileInputStream.read(bFile);
            fileInputStream.close();

            for (int i = 0; i < bFile.length; i++) {
                System.out.println(Integer.toBinaryString(0x100 + (bFile[i])).substring(1));
                  //String  a =(Integer.toBinaryString(0x100 + (bFile[i])).substring(1));
                  int a=bFile[i];
                  fop.write(a);
                  System.out.println("\t i am a: " +a);
                }
                fop.flush();
                fop.close();
            System.out.println("Done");

            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }
4

1 回答 1

1

WAV 文件至少有一个header。您不能只是逐字节地读取/修改/写入它。

我会使用某种 Java-WAV 库。比如这个:Java File IO

WavFile课真的很好用。他们确实有很好的读/修改/写示例。

使用它您可以实现 LSB (...google 帮我找到了这个链接...)

于 2013-02-05T14:11:38.003 回答