1

AudioInputStream を使用して .wav オーディオを 22050 から 8000 にダウンサンプリングしようとしていますが、変換によって 0 データ バイトが返されます。コードは次のとおりです。

AudioInputStream ais;
AudioInputStream eightKhzInputStream = null;
ais = AudioSystem.getAudioInputStream(file);
if (ais.getFormat().getSampleRate() == 22050f) {
    AudioFileFormat sourceFileFormat = AudioSystem.getAudioFileFormat(file);
    AudioFileFormat.Type targetFileType = sourceFileFormat.getType();
    AudioFormat sourceFormat = ais.getFormat();
    AudioFormat targetFormat = new AudioFormat(
        sourceFormat.getEncoding(),
        8000f,
        sourceFormat.getSampleSizeInBits(),
        sourceFormat.getChannels(),
        sourceFormat.getFrameSize(),
        8000f,
        sourceFormat.isBigEndian());
    eightKhzInputStream = AudioSystem.getAudioInputStream(targetFormat, ais);
    int nWrittenBytes = 0;
    nWrittenBytes = AudioSystem.write(eightKhzInputStream, targetFileType, file);

私はすでにチェックAudioSystem.isConversionSupported(targetFormat, sourceFormat)しており、trueを返します。何か案が?

4

1 に答える 1