Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对Java代码语句的质疑_Java - Fatal编程技术网

对Java代码语句的质疑

对Java代码语句的质疑,java,Java,你能解释一下下面的代码吗? 尤其是这个代码语句 AudioInputStream joinFiles = new AudioInputStream(new SequenceInputStream( clip1, clip2), clip1.getFormat(), clip1.getFrameLength() + clip2.getFrameLength()); 我的理解是,只有在文件长度相同的情况下才能执行连接操作, 对吗 让我困惑的是: cl

你能解释一下下面的代码吗? 尤其是这个代码语句

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);

谢谢你,Ulrike

AudioInputStream
在其构造函数中采用
SequenceInputStream
、格式和长度

clip1.getFormat()
只是从clip1获取格式,并将其传递给新流。显然,这两个文件必须具有相同的格式才能工作

clip1.getFrameLength()+clip2.getFrameLength()
只是声明新流的长度应该是两个片段长度之和


我不知道这两个文件需要有相同的内容;我不明白为什么会出现这种情况。

这段代码似乎没有什么奇怪之处-我认为您忽略了该部分,该部分执行以下操作:

SequenceInputStream
表示其他输入流的逻辑连接。它从输入流的有序集合开始,从第一个流开始读取,直到到达文件末尾,然后从第二个流开始读取,依此类推,直到最后一个包含的输入流到达文件末尾


假设您有2个文件(.wav)1.wav(16位,立体声,PCM_签名,持续时间54秒)2.wav(8位,单声道,PCM_无签名,持续时间3分钟02秒)文件在这种情况下连接不会产生好的结果。不幸的是,连接的文件长度不是3分56秒。结果文件有点损坏。。。我不知道。。有没有其他方法可以解决连接两个具有不同功能的wav文件的问题?@ulrike:问题在于这两个文件的格式不同,而不是长度不同。您应该首先考虑进行转换。我在java中进行此类转换方面没有太多经验,但这里的第310行似乎是朝着正确方向迈出的一步: