gpt4 book ai didi

java - 从java程序中的FFMpeg中的图像到视频

转载 作者:行者123 更新时间:2023-12-04 23:02:53 27 4
gpt4 key购买 nike

目前我正在将 BufferedImages 写入临时文件夹,然后调用 ffmpeg 将它们转换为视频。有没有办法从java中直接将图像发送到ffmpeg,而不是先把它们写出来?我假设如果可能的话,这将是一种更快的方法?

这就是我目前正在从目录中正常读取的内容。

            ProcessBuilder processBuilder = new ProcessBuilder(
"ffmpeg",
"-y",
"-r", framerate,
"-f", "image2",
"-i", imageFramesDir,
"-itsoffset", offset.toString(),
"-i", audioFile,
"-c:v", "libx264",
"-c:a", "aac",
"-pix_fmt", "yuv420p",
"-crf", "23",
"-r", "24",
"-vf", "scale=720x406,setdar=16:9",
outputFile);

processBuilder.redirectErrorStream(false);
Process process = processBuilder.start();

最佳答案

当您将图像输入到 ffmpeg 时,您有多个选项,例如顺序图像、使用 glob 模式、通过管道或使用 concat demuxer。由于图像存储在内存中,因此您不必将图像写入本地驱动器。它会降低应用程序的速度并严重影响性能。您可以使用管道将图像馈送到 ffmpeg。查看this链接以查看有关 ffmpeg 的管道数据的更多信息。

您还可以使用 concat demuxer 从多个图像创建视频。 Concat demuxer 允许您使用单个文本文件使用多个位置图像。您只需将图像路径保存到文本文件中并运行以下命令。

ffmpeg -f concat -safe 0 -i text.txt -vcodec mpeg4  -f mpegts test.mp4

管道将是满足您要求的更可靠的选择。但是这两种方法都可以应用于您的问题。

关于java - 从java程序中的FFMpeg中的图像到视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47757682/

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