Сомнения в формулировке кода Java - PullRequest
0 голосов
/ 07 июля 2010

Можете ли вы объяснить следующий код .. пожалуйста?Особенно это утверждение кода

AudioInputStream joinFiles = new AudioInputStream(new SequenceInputStream(
            clip1, clip2), clip1.getFormat(), clip1.getFrameLength()
            + clip2.getFrameLength());

Насколько я понимаю, операция объединения может быть выполнена, только если файлы имеют одинаковую длину, это правильно?

Что меня озадачивает так:

clip1.getFormat(), clip1.getFrameLength()
            + clip2.getFrameLength());

Вот полный код:

AudioInputStream clip1 = AudioSystem.getAudioInputStream(song1);
        AudioInputStream clip2 = AudioSystem.getAudioInputStream(song2);


        AudioInputStream joinFiles = new AudioInputStream(new SequenceInputStream(
            clip1, clip2), clip1.getFormat(), clip1.getFrameLength()
            + clip2.getFrameLength());


        AudioSystem.write(joinFiles, AudioFileFormat.Type.WAVE, outfile);

спасибо, Ульрике

Ответы [ 2 ]

1 голос
/ 07 июля 2010

В этом коде нет ничего странного - я думаю, что вы пропускаете часть SequenceInputStream , которая выполняет следующие действия:

A SequenceInputStream представляет логическое объединение других входных потоков. Он начинается с упорядоченного набора входных потоков и читает из первого потока до достижения конца файла, после чего выполняет чтение из второго и так далее, пока не будет достигнут конец файла в последнем из содержащихся входных потоков.

1 голос
/ 07 июля 2010

AudioInputStream принимает SequenceInputStream, формат и длину в своем конструкторе.

clip1.getFormat() просто берет формат из clip1 и передает его в новый поток. Очевидно, что для работы этих двух файлов должен быть один и тот же формат.

clip1.getFrameLength() + clip2.getFrameLength() просто заявляет, что новый поток должен иметь длину, которая является суммой двух длин клипа.

Я не знаю, что два файла должны быть одинаковыми; Я не понимаю, почему это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...