Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何提高用Xuggler制作的视频的质量_Java_Video_Xuggler - Fatal编程技术网

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

Java 如何提高用Xuggler制作的视频的质量,java,video,xuggler,Java,Video,Xuggler,我正在使用一堆png文件来创建视频。我的问题是,虽然png文件质量正常,但视频帧的渲染质量却不够好。你知道我如何修复这种问题吗?以下是我就此事编写的代码: private void createVideo() throws IOException{ IMediaWriter writer = ToolFactory.makeWriter(outputFilename); Dimension screenBounds = Toolkit.getDefaultToolki

我正在使用一堆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();     

}

我不应该在移除后将宽度和高度除以2,质量与png本身一样。

我不知道你所说的质量好的
是什么意思,但假设你的意思是它看起来模糊,可能是这样的

PNG图像的大小比您想要编码的图像小。


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

质量好的
是什么意思?
这些png文件包含图形。创建视频时,每个顶点附近的标签不会清晰显示。通常每个帧看起来都很模糊。相反,用于创建此视频的每个png看起来都有大小问题。图像小于视频大小。尝试一组非常大的图像。也许是从单反相机上点击的东西你需要更大的图像。更高的分辨率:)呵呵,我没有忘记我只是在检查。顺便说一下,我不认为这是它。我已经修复了它,我会发布正确的代码,以防万一……我刚刚发布了它!:)我确实接受了你的回答,因为它帮助我找到了答案
writer.addVideoStream(0, 0, ICodec.ID.CODEC_ID_MPEG4,screenBounds.width/2, screenBounds.height/2);