我一直在到处寻找解决方案!在本网站和其他网站上。我发现了一些有趣的东西,但它们并没有解决我的问题。我会解释的。
我有一个视频,我用 xuggler 对它的每一帧进行分级。当我得到所有帧时,我会使用颜色算法对它们进行编辑。另外,我将音频存储在 mp3 文件中。
现在我需要从所有帧创建一个视频,这个视频当然应该具有与帧速率 e 持续时间相同的特征。之后我必须合并音频。
我已经完成了第一部分,但我不知道如何创建具有相同特征的视频。我正在关注这段代码:
http://www.javacodegeeks.com/2011/02/xuggler-tutorial-frames-capture-video.html
但它拍摄快照并使用了一个奇怪的循环:
for (int index = 0; index < SECONDS_TO_RUN_FOR * FRAME_RATE; index++)
我不知道如何设置正确的特性。这应该很容易,因为我对视频了如指掌!大小、帧率和帧数。
我的代码:
public static void main(String[] args) throws IOException {
final IMediaWriter writer = ToolFactory.makeWriter(outputFilename);
writer.addVideoStream(0, 0, ICodec.ID.CODEC_ID_MPEG4,
720, 304);
long nextFrameTime = 0;
final long frameRate =25/1000;
long startTime = System.nanoTime();
while (indexVideo<1597) {
BufferedImage videoImage = null;
try {
videoImage = getVideoImage();
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
writer.encodeVideo(0, videoImage,nextFrameTime,
TimeUnit.MILLISECONDS);
nextFrameTime += frameRate;
}
writer.close();
}
private static BufferedImage getVideoImage() throws IOException, AWTException {
File imgLoc = new File("D:/Gianfranco/Sample/"+indexVideo+".png");
BufferedImage img;
img = ImageIO.read(imgLoc);
System.out.println(imgLoc.getName());
indexVideo++;
return img;
}
有人能帮帮我吗?