基于ffmpeg程序实现,请自行下载,需要源码的请留言邮箱。
一、视频截图
//视频截图
private string CreateImg(string videoPath, string filename)
{
string ffmpeg = Server.MapPath("~/js/ffmpeg.exe");
string vFileName = videoPath;
string FlvImgSize = "800x550";
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
string flv_img = filename + ".png";
string uploadDate = DateTime.Now.ToString("yyyyMMdd");
string flv_img_p = System.Web.HttpContext.Current.Server.MapPath("~/Upload/" + uploadDate + "/img/" + flv_img);
startInfo.Arguments = " -i " + vFileName + " -y -f image2 -ss 2 -vframes 1 -s " + FlvImgSize + " " + flv_img_p;
try { System.Diagnostics.Process.Start(startInfo); }
catch { }
return "/Upload/" + uploadDate + "/img/" + flv_img;
}
二、压缩转码
//压缩转码
private string CreateVideo(string videoPath, string filename)
{
string ffmpeg = Server.MapPath("~/js/ffmpeg.exe");
string vFileName = videoPath;
string FlvImgSize = "720x480";
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
string flv_img = filename + ".mp4";
string uploadDate = DateTime.Now.ToString("yyyyMMdd");
string flv_img_p = System.Web.HttpContext.Current.Server.MapPath("~/Upload/" + uploadDate + "/output/" + flv_img);
startInfo.Arguments = " -i " + vFileName + " -vcodec h264 -s "+FlvImgSize+" " + flv_img_p;
try { System.Diagnostics.Process.Start(startInfo); }
catch { }
return "/Upload/" + uploadDate + "/output/" + flv_img;
}
转码成h264,可以直接在网页端播放器播放
运行代码以后会新开一个线程执行,视频较大的话需要稍微等待几分钟才会压缩转码成功。