如何提高Xuggler制作的视频质量

时间:2013-06-13 13:00:53

标签: java video xuggler

我正在使用一堆png文件来创建一个视频。我的问题是,虽然png文件的质量很好,但视频帧的质量不够好。你知道我怎么做解决这样的事情?这是我写的关于此事的代码:

    private void createVideo() throws IOException{


    IMediaWriter writer = ToolFactory.makeWriter(outputFilename);
    Dimension screenBounds = Toolkit.getDefaultToolkit().getScreenSize();

    writer.addVideoStream(0, 0, ICodec.ID.CODEC_ID_MPEG4,screenBounds.width/2, screenBounds.height/2);

    long startTime = System.nanoTime();

    File directory = new File(sourceFolder);
    ArrayList<File> filenames = new ArrayList<File> ();

    File[] list= directory.listFiles();
    for(int i=0;i<list.length;i++){
        filenames.add(list[i]);
    }

    for (int index = 0; index < filenames.size(); index++) {
        if(filenames.get(index).toString().contains("png")){

            BufferedImage screen = ImageIO.read(filenames.get(index));

            // convert to the right image type
            BufferedImage bgrScreen = convertToType(screen,BufferedImage.TYPE_3BYTE_BGR);


            int i=0;
            while(i<FRAME_RATE){
                writer.encodeVideo(0, bgrScreen, System.nanoTime() - startTime, 
                   TimeUnit.NANOSECONDS);
                ++i;
            }

            // sleep for frame rate milliseconds
            try {
                Thread.sleep((long) (1000 / FRAME_RATE));
            } 
            catch (InterruptedException e) {
            }
        }

    }

    writer.close();     

}

解决方案:问题在于这一行

writer.addVideoStream(0, 0, ICodec.ID.CODEC_ID_MPEG4,screenBounds.width/2, screenBounds.height/2);

我删除它之后不应该将宽度和高度除以2,质量就像它自己一样。

1 个答案:

答案 0 :(得分:0)

我不知道in a good quality你的意思,但假设你的意思看起来很模糊,那可能是那个

与您想要编码的尺寸相比,PNG图片尺寸较小。

这意味着要编码到视频流中的像素越少。这将导致像素分散,从而导致质量差。