如何在c#中使用ffmpeg将视频转换为图像文件?

时间:2010-05-18 12:10:33

标签: c#

        string inputpath = strFileNamePath;
        string outputpath = "C:\\Image\\";
        //for (int iIndex = 0; iIndex < 1000; iIndex++)
        //{
            //string fileargs = "-i" + " " + inputpath + "  -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv " + outputpath + "SRT.flv";
            string fileargs = "-i" + " " + inputpath + " " + outputpath + "image.jpg";
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = "C:\\Documents and Settings\\Badr\\My Documents\\Visual Studio 2008\\Projects\\Video2image2video.\\ffmpeg\\ffmpeg.exe";
            p.StartInfo.Arguments = fileargs;
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.Start();

我有这个代码,这只创建了1个视频图像我应用了一个循环但我重复生成初始图像我怎样才能获得所有视频的图像

提前

thanx

2 个答案:

答案 0 :(得分:0)

来自documentation of ffmpeg

  

您可以从视频中提取图片,   或者从许多图片中创建视频:

     

用于从视频中提取图像:

     

ffmpeg -i foo.avi -r 1 -s WxH -f   image2 foo-%03d.jpeg

     

这将提取每个视频帧   第二个来自视频并将输出   它们在名为foo-001.jpeg', foo-002.jpeg'等的文件中。图像将是   重新调整以适应新的WxH值。

所以只需更改传递给ffmpeg的参数,就可以启动并运行。

答案 1 :(得分:0)

当你以这种方式返回时,你想要在视频文件中拍摄图像;

 for (int i = 0; i < iImageCount; i++)
                                {

                                   string sInputVideo = Page.MapPath(...);

                                   string sImageCapture = Page.MapPath("") + "\\Videolar\\"  + ImageName+ "_" + iResim + ".jpg";

                                    ffmpeg.StartInfo.Arguments = " -i \"" + sInputVideo + "\" -s 108*100 -ss " + iImageCapture + " -vframes 1 -f image2 -vcodec mjpeg \"" + sImageCapture + "\"";
                                    ffmpeg.StartInfo.FileName = (Server.MapPath("Referanslar/ffmpeg.exe"));
                                    ffmpeg.Start();
                                    ffmpeg.WaitForExit();
                                    ffmpeg.Close();
                                    iImageCapture += 1;
                                    iResim++;
                                }

您可以通过更改来拍摄照片;)