gpt4 book ai didi

java - 使用 xuggler 从一组图像创建视频

转载 作者:行者123 更新时间:2023-11-30 04:53:55 25 4
gpt4 key购买 nike

我一直在到处寻找解决方案!在本网站和其他网站上。我发现了一些有趣的事情,但它们并没有解决我的问题。我会解释一下。

我有一个视频,我用 xuggler 对它的每一帧进行分级。当我获得所有帧时,我使用颜色算法编辑所有帧。另外,我将音频存储在 mp3 文件中。

现在我需要从所有帧创建一个视频,该视频当然应该具有与帧速率和持续时间相同的特征。之后我必须合并音频。

我已经完成了第一部分,但我不知道如何创建具有相同特征的视频。我正在遵循这段代码:

http://www.javacodegeeks.com/2011/02/xuggler-tutorial-frames-capture-video.html

Can't encode video with Xuggler

但它拍摄快照并使用一个奇怪的循环:

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;

}

有人可以帮我吗?

最佳答案

快速浏览一下您的代码,我发现您没有设置帧速率。我不知道你使用的是哪个版本的 xuggler,但对我来说,我在添加视频流时设置了帧速率:

writer.addVideoStream(0, 0, ICodec.ID.CODEC_ID_MPEG4, IRational.make(<frames>/<per second>), 720, 304);

现在另一种(可能更合适)的方法是通过打开原始视频来创建 IMediaWriter。

    IMediaReader reader = ToolFactory.makeReader("inputFile.mp4");
IMediaWriter writer = ToolFactory.makeWriter("outputFile.mp4", reader);

或者也许你可以通过抓取第一个容器,然后抓取格式来实现。我只对流数据而不是存档数据执行此操作。

关于java - 使用 xuggler 从一组图像创建视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com