我目前正在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列表时遇到了问题。我想知道的是,为什么它会从流中接收到负数?
谢谢,利亚姆。
发布于 2012-11-10 11:48:57
我已经找到了问题并解决了它。
在重新阅读RIFF标准后,我发现问题是,当块数据不均匀时,将添加一个填充字节,但该字节不会显示在块大小上,因此我在RIFFList初始化代码中所做的就是告诉它,如果读取的块不均匀,则将位置号加1。
https://stackoverflow.com/questions/13266240
复制相似问题