程序返回“无法从输入文件音频输入流”为特定的.wav文件
问题描述:
我有涉及的.wav文件的分析和输出的程序。它的工作原理与CD或互联网曲目完全正常,但我已经生成的用matlab分析纯正弦波音序列,这是给我的标题所示的错误。 matlab文件在iTunes中运行良好,所以我不确定为什么我的程序遇到问题。程序返回“无法从输入文件音频输入流”为特定的.wav文件
public static void signalToFile(File f) throws IOException, UnsupportedAudioFileException
{
AudioInputStream inputStream = AudioSystem.getAudioInputStream(f);
int numBytes = inputStream.available();
byte[] buffer = new byte[numBytes];
inputStream.read(buffer, 0, numBytes);
String newFile = f.getName().replace(".wav", ".txt");
System.out.println("Beginning file write: " + newFile + " (soundUtilities)");
BufferedWriter fileOut = new BufferedWriter(new FileWriter(new File("src/examples/Media/" + newFile)));
System.out.println("Ending file write: " + newFile + " (soundUtilities)");
System.out.println(buffer.length);
ByteBuffer myBB = ByteBuffer.wrap(buffer);
myBB.order(ByteOrder.LITTLE_ENDIAN);
while(myBB.remaining() > 1)
{
short current = myBB.getShort();
fileOut.write(String.valueOf(current));
fileOut.newLine();
}
fileOut.flush();
fileOut.close();
inputStream.close();
}
此方法的第一行是什么导致错误。该方法将文件的信号信息包含到txt文件中。任何帮助将不胜感激。
下面是MATLAB代码的小部分我用来创建wav文件:
x13 = sin(2*pi*220*t1); % A3 long sample
x13envelope = [1:-1/length(x13):1/length(x13)];
x13full = x13.*x13envelope;
totalSound = [x1full x2full x3full x4full x5full x6full x7full x8full x9full x10full x11full x12full x13full]; % combines the notes
wavwrite(totalSound, fs, 32, 'TestTune');
的“totalSound”阵列中的条目中的每一个代表一个音符
答
我exepriences这个问题 “输出是JBoss的4.2和JBoss 7 的JBoss 4.2不同: 支持WAVE =真
的JBoss 7: 支持WAVE =假” 检查也是这个https://community.jboss.org/message/729654
@ 9000我会加我用来创建wav文件MATLAB代码段,但我假设,如果我没有做的wav文件头那就不是在iTunes中播放? – Joneser 2011-04-23 13:48:56
iTunes可以足够聪明地接受原始PCM。仍然用文件查看器打开一个好的.wav文件(或者在远处或者mc处使用F3),看看它是否以'RIFF'开始。 – 9000 2011-04-23 14:00:07
@Joneser:“我猜想,如果我没有做的wav文件头那就不是在iTunes中播放?”这是一个轻率的假设。大多数玩家花费非常多的时间去分析无效的媒体文件。 – 2011-04-23 14:01:52