使用C#导出包含图像的视频

时间:2017-07-04 19:38:17

标签: 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
        }
    }
}

到目前为止,我已经查看了几个图书馆,但它们似乎都不符合我的需求,而且所有图书馆看起来都非常昂贵。

1 个答案:

答案 0 :(得分:0)

我已经使用Magick.net执行类似的任务,它是一个很棒的开源库。我知道它们提供了缩放图像的功能。