从视频画面中截取一帧画面为图片
需要借助外部插件 (http://ffmpeg.org/download.html)
解压下载文件,并将该bin文件下的dll和exe文件拷贝到项目的文件夹中,使用的时候:调用该路径下的EXE即可
/// <summary> /// 从视频画面中截取一帧画面为图片 /// </summary> /// <param name="videoName">视频文件pic/123.MP4</param> /// <param name="ResoucePath">保存地址</param> /// <returns>返回图片保存路径</returns> public string GetPicFromVideo(string videoName, string ResoucePath) { var vdoName = videoName.Substring(videoName.LastIndexOf("/") + 1); //视频名称 例:xxxxxxxxxxxxx.mp4 var fileName = vdoName.Split('.')[0];//视频名称 例:xxxxxxxxxxxxx var ImgPath = ResoucePath; //封面图文件路径 //ffmpeg.exe路径 var ffmpeg = ResoucePath + "\\ffmpeg\\bin\\ffmpeg.exe"; // ffmpeg 文件路径 var srcName = ResoucePath + videoName.Replace("/", "\\"); //视频路径 例:F:\xxxxxxxxxxxxxxxx.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 1s" //设置开始获取帧的视频时间 + " -t 0.001 " + " " + 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 fileName + ".jpg"; } catch (Exception e) { return e.Message; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】