-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 ファイルには少なくともヘッダーがあります。バイト単位で読み取り/変更/書き込みすることはできません。

ある種の Java-WAV ライブラリを使用します。たとえば、これは次のとおりです。Java File IO

WavFileクラスは本当に素晴らしくて便利です。彼らは素晴らしい読み取り/変更/書き込みの例を持っています。

それを使用して、LSB を実装できます(...Google はこのリンクを見つけるのに役立ちました...)

于 2013-02-05T14:11:38.003 に答える