0

我目前正在从事Java 多媒体 IO 项目并正在测试 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列表时遇到了麻烦。我想知道的是为什么它从流中接收到负数?

谢谢,利亚姆。

4

1 回答 1

0

我发现了问题并已解决。

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

于 2012-11-10T03:48:56.723 回答