C# 截取视频第一帧的图片

1.需要借助外部插件

2.视频来源

外部插件:(http://ffmpeg.org/download.html)

C# 截取视频第一帧的图片_第1张图片

 C# 截取视频第一帧的图片_第2张图片

 C# 截取视频第一帧的图片_第3张图片

 解压下载文件,并将该bin文件下的dll和exe文件拷贝到项目的文件夹中

使用的时候:调用该路径下的EXE即可

  //ffmpeg.exe路径
   var ffmpeg = basePath + "Lib\\ffmpeg.exe";

 

        /// 
        /// 从视频画面中截取一帧画面为图片
        /// 
        /// 视频文件路径pic/123.MP4
        /// 图片的尺寸如:240*180
        /// 开始截取的时间如:"1s"
        /// 返回图片保存路径
        public string GetPicFromVideo(string videoName, string widthAndHeight, string cutTimeFrame,string Eno)
        {
            var vdoName = videoName.Substring(videoName.LastIndexOf("/") + 1); //视频名称 例:260026077324.mp4
            var fileName = vdoName.Split('.')[0];//视频名称 例:260026077324

            var basePath = System.Web.HttpContext.Current.Server.MapPath("~");//获取当前路径 例:F:\TT\正式天台20171130\TTCloud\TTCloud.Website\
            var ImgPath = basePath + "Upload\\Temporary"; //建立新文件夹路径 例F:\TT\20171130\TTCloud\TTCloud.Website\upload\Images\2020-04-20
            //ffmpeg.exe路径
            var ffmpeg = basePath + "Lib\\ffmpeg.exe"; // 例:F:\TT\20171130\TTCloud\TTCloud.Website\bin\ffmpeg.exe
            var srcName = basePath + videoName.Replace("/", "\\"); //视频路径 例:F:\TT\20171130\TTCloud\TTCloud.Website\\Upload\10000000\TTVideo\260026077324.mp4

            if (!Directory.Exists(ImgPath))
            {
                Directory.CreateDirectory(ImgPath);
            } //创建保存封面图片的路径

            //保存截取图片后路径
            var objName =ImgPath + "\\" + fileName + ".jpg";
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.WindowStyle = ProcessWindowStyle.Hidden;
            startInfo.Arguments = " -i " + srcName  //视频路径
                                 + " -y -f image2 -ss " + cutTimeFrame  //设置开始获取帧的视频时间
                                 + " -t 0.001 -s " + widthAndHeight //设置图片的分辨率
                                 + " " + objName; //输出的图片文件名,路径前必须有空格
            startInfo.UseShellExecute = false;
            startInfo.CreateNoWindow = true;
            startInfo.FileName = ffmpeg;
            startInfo.WindowStyle = ProcessWindowStyle.Hidden;
            try
            {
                Process proc = new Process();
                proc.StartInfo = startInfo;
                proc.Start();
                proc.WaitForExit();//不等待完成就不调用此方法
                proc.Close();
                proc.Dispose();
                return "/Upload/Temporary/" + fileName + ".jpg";
            }
            catch (Exception e)
            {
                LogerHelper.Error(e);
                return "";
            }
        }

 待完善

你可能感兴趣的:(C# 截取视频第一帧的图片)