在 C# 中导出带有图像的视频

  • 本文关键字:图像 的视频 c# image
  • 更新时间 :
  • 英文 :


这里是我的程序的概述。选择一个包含图像的文件夹。该程序导入所述文件夹中的所有图像(扩展名为.JPG(。然后,它将这些图像导出到 MP4 中。对于这个程序,我不需要可见的时间线,只需要一种导出所述图像的方法。

我希望能够设置一个通用持续时间,并且我希望(如果可能的话(对每个图像进行Ken Burns效果,其中图像只是按5%-10%的比例放大(这部分不必每次都更改(。截至目前,这是我的代码:

private void btnOpen_Click(object sender, EventArgs e)
{
openFolder.Description = "Open a folder containing pictures for the slideshow!";
if (openFolder.ShowDialog() == DialogResult.OK)
{
var folderPath = openFolder.SelectedPath;
MessageBox.Show(folderPath);
var fileArray = Directory.GetFiles(folderPath, "*.JPG");
float duration = 4;
float startpos = 0;
foreach (var file in fileArray)
{
var filePath = $@"{folderPath}{file}";
MessageBox.Show(filePath);
//add image to "timeline"
startpos += 4;
}
}
else
{
MessageBox.Show("Next time, select a folder and click open!", "Selection Cancelled", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnExport_Click(object sender, EventArgs e)
{
if (presetList.SelectedIndex == -1)
MessageBox.Show("Please select a preset!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
{
if (presetList.SelectedItem.ToString() == "720p, 30fps")
{
//export code here
}
else if (presetList.SelectedItem.ToString() == "720p, 60fps")
{
//export code here
}
else if (presetList.SelectedItem.ToString() == "1080p, 30fps")
{
//export code here
}
else if (presetList.SelectedItem.ToString() == "1080p, 60fps")
{
//export code here
}
}
}

到目前为止,我已经查看了几个图书馆,但它们似乎都不符合我的需求,而且所有这些图书馆似乎都贵得离谱。

我已经将 Magick.net 用于类似的任务,它是这些事情的绝佳开源库。我知道他们提供了缩放图像的功能。

最新更新