我目前正在研究Java Multimedia IO Project并且正在测试RIFFInputStream,但是当我测试时遇到了NegativeArraySizeException;以下是调试控制台的输出;
RIFF Stream type: AVI
Chunks contained in this stream:
LIST::hdrl
avih
LIST
LIST
LIST::INFO
ISFT
Exception in thread "main" java.lang.NegativeArraySizeException
at javax.io.RIFFList.<init>(RIFFList.java:25)
at javax.io.RIFFInputStream.next(RIFFInputStream.java:58)
at javax.io.RIFFInputStream.next(RIFFInputStream.java:56)
at Test.main(Test.java:25)
当我第一次收到此例外时,我下载了一个RIFF查看器,该查看器列出了以下块;
RIFF:AVI
LIST:hdrl
avih
LIST:strl
LIST:strl
JUNK
LIST:INFO
ISFT
JUNK
LIST:movi
idx1
所以正在发生的事情似乎是RIFFList构造函数代码在构建movi
列表时遇到了问题。我想知道的是为什么从流中收到负数?
谢谢,利亚姆。
答案 0 :(得分:0)
我找到了问题并修复了它。
重新阅读RIFF标准后发现的问题是,当块数据不均匀时,将添加填充字节,但该字节不会显示在块大小上,所以我在RIFFList init中所做的一切代码是我告诉它如果它正在读取的块不均匀,则在位置编号中添加一个。