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の初期化コードで行ったのは読み取っていたチャンクが不均一な場合は、位置番号に 1 を追加するように指示しました。

于 2012-11-10T03:48:56.723 に答える