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