解码.webm格式不会返回任何BufferedImages

时间:2014-11-26 14:01:15

标签: java arraylist decode javax.imageio webm

我的代码在这里正确编译,但我遇到的问题是我的BufferedImages的ArrayList总是空的。老实说,我不了解有关ImageIO或类似内容的任何知识!

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import javax.imageio.IIOException;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;

import net.sf.javavp8decoder.imageio.WebPImageReader;
import net.sf.javavp8decoder.imageio.WebPImageReaderSpi;

class MyProj{

    public static void main(String[] args) throws IOException{
        System.out.println("Main"); 

        ArrayList<BufferedImage> collectedImg=getFrames();
    }

    static ArrayList<BufferedImage> getFrames() throws IIOException{
        File MyWebM= new File("/users/case3/mcclusm4/workspace/LineTech/src/goal.webm");
        ArrayList<BufferedImage> frames = new ArrayList<BufferedImage>();
        try{
            ImageReader ir = new WebPImageReader(new WebPImageReaderSpi());
            ir.setInput(ImageIO.createImageInputStream(MyWebM));


            for(int i = 0; i < ir.getNumImages(true); i++)
                frames.add(ir.read(i));

        }catch(IOException e){}
        return frames;
    }

}

2 个答案:

答案 0 :(得分:0)

首先不要抓住Exception并且什么都不做:

catch (Exception e) {}

现在当捕获到异常时,它会在没有任何信息的情况下无声地失败。

更改catch以打印stacktrace:e.printStackTrace()并发布。

答案 1 :(得分:0)

免责声明:我自己从未测试过相关代码。但...

通过查看net.sf.javavp8decoder.imageio.WebPImageReader的源代码,它无法解码WebM个文件。它是only supports single frame WebP个文件。

如果您停止吞咽异常并忽略它,正如@robocoder所建议的那样,您应该获得IIOException with the message "Bad WEBP signature!"