繁体   English   中英

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

[英]How to improve the quality of a video made with 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,其质量就像是png本身一样。

我不知道您所说的in a good quality是什么意思,但是假设您的意思是模糊的,那可能就是

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

这意味着更少的像素可以编码到视频流中。 这将导致像素散开,因此看起来质量较差。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM