3

Javaでwavファイルを変換するにはどうすればよいですか?

AudioFormat targetFormat = new AudioFormat(
                                    sourceFormat.getEncoding(),
                                    fTargetFrameRate,
                                    16,
                                    sourceFormat.getChannels(),
                                    sourceFormat.getFrameSize(),
                                    fTargetFrameRate,
                                    false);

結果例外:

java.lang.IllegalArgumentException: Unsupported conversion: 
ULAW 8000.0 Hz, **16 bit**, mono, 1 bytes/frame, **from** ULAW 8000.0 Hz, **8 bit**, mono, 1 bytes/frame

それはJavaで可能ですか?

8から16ビットのwavファイルを取得する必要があります

4

3 に答える 3

2

組み込みの Java メソッドを使用して、uLaw でエンコードされた 8 ビットのバイナリ ファイルを 16 ビットの WAV ファイルに変換するメソッドを次に示します。

public static void convertULawFileToWav(String filename) {
    File file = new File(filename);
    if (!file.exists())
        return;
    try {
        long fileSize = file.length();
        int frameSize = 160;
        long numFrames = fileSize / frameSize;
        AudioFormat audioFormat = new AudioFormat(Encoding.ULAW, 8000, 8, 1, frameSize, 50, true);
        AudioInputStream audioInputStream = new AudioInputStream(new FileInputStream(file), audioFormat, numFrames);
        AudioSystem.write(audioInputStream, Type.WAVE, new File("C:\\file.wav"));
    } catch (IOException e) {
        e.printStackTrace();
    }
}
于 2013-07-18T18:38:01.287 に答える
1

いつでも FFMPEG ( http://ffmpeg.org/ ) を使用して変換を行うことができます。Java プログラムは、FFMPEG を呼び出して変換を行うことができます。
FFMPEG はすべての OS で動作します。

于 2012-09-25T17:11:40.380 に答える
1

これを見てください:オーディオ形式の変換http://docs.oracle.com/javase/6/docs/api/javax/sound/sampled/AudioSystem.htmlを見ることを提案する問題に似ています

于 2012-09-25T17:01:36.700 に答える