在C#中将图像转换为视频时,如何增加视频的长度(运行时)?

时间:2018-12-16 00:02:18

标签: c# windows image video converters

我正在使用Accord.Extensions.Imaging库。下面的代码成功地转换了放置在bin > Debug > Images文件夹中的具有指定尺寸(729、674)的png文件,并将转换后的视频文件放置在bin > Debug文件夹中,但是视频的长度为0秒。我知道它可以正常工作,因为在播放视频文件时我会瞬间看到图像。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Accord.Extensions.Imaging;

namespace Image_To_Video_2
{
    class Program
    {
        static void Main(string[] args)
        {
            makeAvi("images", "video.avi");

        }

        public static void makeAvi(string imageInputfolderName, string outVideoFileName, float fps = 12.0f, string imgSearchPattern = "*.png")
        {   // reads all images in folder 
            VideoWriter w = new VideoWriter(outVideoFileName,
                new Accord.Extensions.Size(729, 674), fps, true, VideoCodec.MotionJpeg);
            Accord.Extensions.Imaging.ImageDirectoryReader ir =
                new ImageDirectoryReader(imageInputfolderName, imgSearchPattern);            

            while (ir.Position < ir.Length)
            {
                IImage i = ir.Read();
                w.Write(i);
            }
            w.Close();
        }
    }
}

1 个答案:

答案 0 :(得分:2)

每张图像消耗一帧。因此,您可以降低(每秒帧数)fps的值。例如,当前代码中的12等于1。在这种情况下,您的图像将每显示1秒。