读取RIFF文件时出现NegativeArraySizeException

时间:2012-11-07 08:58:28

标签: java io riff

我目前正在研究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列表时遇到了问题。我想知道的是为什么从流中收到负数?

谢谢,利亚姆。

1 个答案:

答案 0 :(得分:0)

我找到了问题并修复了它。

重新阅读RIFF标准后发现的问题是,当块数据不均匀时,将添加填充字节,但该字节不会显示在块大小上,所以我在RIFFList init中所做的一切代码是我告诉它如果它正在读取的块不均匀,则在位置编号中添加一个。