我正在使用一堆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,质量就像它自己一样。
答案 0 :(得分:0)
我不知道in a good quality
你的意思,但假设你的意思看起来很模糊,那可能是那个
与您想要编码的尺寸相比,PNG图片尺寸较小。
这意味着要编码到视频流中的像素越少。这将导致像素分散,从而导致质量差。