gpt4 book ai didi

c# - 如何从 C# 中的一系列静止图像创建 MP4 视频

转载 作者:行者123 更新时间:2023-11-30 22:09:56 25 4
gpt4 key购买 nike

我正在尝试编写一个快速程序来从图像创建延时视频,但我找不到任何库或其他方法来执行此操作。我将输入一系列图像,然后程序会将它们合并到具有我指定的帧速率和大小(宽度/高度而不是文件大小)的视频中。大多数时候图像都很大(来自佳能 DSLR 的 3456x2304),我希望它能够输出与图像大小相同的视频,特别是 MP4 格式,仅此而已。

基本上,它与 QuickTime Pro 的功能完全一样,您给它一组静止图像,然后它以您指定的帧速率从中创建视频……不,我不想购买 QuickTime。我有用户界面,我只需要一种方法来从图像创建视频,我可以做什么/使用(只有免费的东西)?谢谢。

最佳答案

您可以使用 FFmpeg 执行此操作:

https://trac.ffmpeg.org/wiki/Create%20a%20video%20slideshow%20from%20images

帧率

从一系列数字顺序图像(如 img001.png、img002.png、img003.png 等)创建视频(使用编码器 libx264)

Important: All images in a series need to be the same size and format.

您可以指定两个帧速率:

  • 读取图像的速率,通过之前设置 -r-我。读取输入的默认值为 -r 25,如果未指定 -r 则将设置该值。
  • 通过设置视频流的输出帧率-r 在 -i 之后,或使用 fps 过滤器。如果您希望输入和输出帧速率相同,则只需声明一个输入 -r 和输出将继承相同的值。

通过对输入和输出使用单独的 -r(每秒帧数),您可以控制显示每个输入的持续时间,并告诉 ffmpeg 您希望输出文件的帧速率。如果输入 -r 低于输出 -r 则 ffmpeg 将复制帧以达到所需的输出帧速率。如果输入 -r 高于输出 -r 则 ffmpeg 将丢帧以达到您想要的输出帧速率。

在此示例中,每个图像的持续时间为 5 秒(每秒 1/5 帧的倒数)。通过相应地复制帧,视频流将具有 30 fps 的帧速率:

ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

知道你想要使用的命令行,你可以像这样在 c# 中启动它:

if (File.Exists(outputFile))
File.Delete(outputFile);

var info = new ProcessStartInfo(exePath, yourParams);
info.CreateNoWindow = true;
info.WindowStyle = ProcessWindowStyle.Hidden;
info.UseShellExecute = false;
info.RedirectStandardError = true;
info.RedirectStandardOutput = true;

using (var proc = Process.Start(info))
proc.WaitForExit();

关于c# - 如何从 C# 中的一系列静止图像创建 MP4 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21192676/

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