用C#技术怎么实现 视频文件转换成帧图片!! 知道的谢谢告诉下!!!!不胜感激!!!!

解决方案 »

  1.   

               /**//// <summary>
               /// 从视频画面中截取一帧画面为图片
               /// </summary>
               /// <param name="VideoName">视频文件pic/guiyu.mov</param>
               /// <param name="WidthAndHeight">图片的尺寸如:240*180</param>
               /// <param name="CutTimeFrame">开始截取的时间如:"1"</param>
               /// <returns></returns>
               public string GetPicFromVideo(string VideoName,string WidthAndHeight,string CutTimeFrame)
               ...{
                
                   string ffmpeg=@"C:\XXX\fmpeg.exe";//这里用到这个exe 是解码器 系统搜一下,换下地址
                   string PicName =Server.MapPath(Guid.NewGuid().ToString().Replace("-","")+".jpg");
                   System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
                   startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
                   startInfo.Arguments = " -i " + Server.MapPath(VideoName) + " -y -f image2 -ss "+CutTimeFrame+" -t 0.001 -s " + WidthAndHeight + " " + PicName ;
                   try 
                   ...{
                       System.Diagnostics.Process.Start(startInfo);
                       return PicName;
                   }
                   catch(Exception err)
                   ...{
                       return err.Message;
                   }        
               }
      

  2.   

    刚才那个是截取一张的
    如果要截取多张 要循环的
    时间之类的 就要靠参数了
    startInfo.Arguments  很重要的
    百度一下相关的知识吧
    祝你好运
      

  3.   

    http://topic.csdn.net/u/20090329/16/a04986c2-8df2-42c4-b575-f0ce68f6579a.html
      

  4.   

       #region //运行FFMpeg的视频解码,(这里是绝对路径)
        /// <summary> 
        /// 转换文件并保存在指定文件夹下面(这里是绝对路径) 
        /// </summary> 
        /// <param name="fileName">上传视频文件的路径(原文件)</param> 
        /// <param name="playFile">转换后的文件的路径(网络播放文件)</param> 
        /// <param name="imgFile">从视频文件中抓取的图片路径</param> 
        /// <returns>成功:返回图片虚拟地址; 失败:返回空字符串</returns> 
        public string ChangeFilePhy(string fileName, string playFile, string imgFile)
        {
            //取得ffmpeg.exe的路径,路径配置在Web.Config中,如:<add key="ffmpeg" value="E:\51aspx\ffmpeg.exe" /> 
            string ffmpeg = HttpContext.Current.Server.MapPath("~/" + PublicMethod.ffmpegtool);        if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(fileName)))
            {
                return "";
            }
            //获得图片和(.flv)文件相对路径/最后存储到数据库的路径,如:/Web/User1/00001.jpg 
            string flv_file = System.IO.Path.ChangeExtension(playFile, ".flv");        //截图的尺寸大小,配置在Web.Config中,如:<add key="CatchFlvImgSize" value="240x180" /> 
            string FlvImgSize = PublicMethod.sizeOfImg;
            System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
            FilestartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            FilestartInfo.Arguments = " -i " + fileName + " -ab 56 -ar 22050 -b 500 -r 15 -s " + widthOfFile + "x" + heightOfFile + " " + flv_file;
            //ImgstartInfo.Arguments = " -i " + fileName + " -y -f image2 -t 0.05 -s " + FlvImgSize + " " + flv_img; 
            try
            {
                //转换 
                System.Diagnostics.Process p = System.Diagnostics.Process.Start(FilestartInfo);
                while (!p.HasExited) { }            //截图 
                CatchImg(fileName, imgFile);            //System.Diagnostics.Process.Start(ImgstartInfo); 
            }
            catch
            {
                return "";
            }
            // 
            return "";
        }
      

  5.   

    就是说现在又一个*.avi的视频文件但是我想把这个*.avi视频全部转换成帧图片然后把这些图片全部显示出来
      

  6.   

    我现在加了一个timer控件
    再里面调用了你写的方法可以吗
      

  7.   

    对了还有就是我想问下*.avi用什么解码器好
      

  8.   

    用FFmpeg从视频截取任意一帧图片
      

  9.   

    你可以下载这个源代码来看看!
    源码效果图:
    注意,下载源码前,你需要用一个email地址去注册为网站的用户。