(求教)asp.net从视频中读取一帧转换成图片
///<summary>///从视频文件截图,生成在指定的文件夹///支持格式:asf,avi,mpg,flv,3gp,mov,wmv///在web.config中需要两...
/// <summary>
/// 从视频文件截图,生成在指定的文件夹
/// 支持格式 : asf,avi,mpg,flv,3gp,mov,wmv
/// 在web.config中需要两个前置配置项
/// 1.ffmpeg.exe文件的路径
/// <add key="ffmpeg" value="\thread\ffmpeg\ffmpeg.exe" />
/// 2.截图的尺寸大小
/// <add key="CatchFlvImgSize" value="140X110" />
/// 3.视频处理程序 ffmpeg.exe
/// </summary>
/// <param name="vFileName">视频文件的相对路径</param>
/// <returns>返回图片的相对地址</returns>
public string CatchVideoImg(string vFileName)
{
string ffmpeg=System.Configuration.ConfigurationSettings.AppSettings["ffmpeg"];
ffmpeg = HttpContext.Current.Server.MapPath(ffmpeg);
if((!File.Exists(ffmpeg))||(!File.Exists(HttpContext.Current.Server.MapPath(vFileName))))
{
return null;
}
//获得图片的相对路径/最后存储到数据库的路径
string flv_img = Path.ChangeExtension(vFileName,".jpg");
//图片绝对路径
string flv_img_p = HttpContext.Current.Server.MapPath(flv_img);
//截图的尺寸大小,配置在web.config中
string FlvImgSize = System.Configuration.ConfigurationSettings.AppSettings["CatchFlvImgSize"];
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//此处组合成ffmpeg.exe文件需要的参数即可 ,此处命令在ffmpeg 0.4.9调试通过
startInfo.Arguments = "-i" + HttpContext.Current.Server.MapPath(vFileName) + " -y -f image2 -t 0.001 -s 140x110 " + flv_img_p;
System.Threading.Thread.Sleep(4000);
//图片截取成功后,数据由内存缓存写到硬盘需要时间较长,大概3,4秒甚至更长
if (File.Exists(flv_img_p))
{
return flv_img;
}
else
{
return null; //始终返回为空了,,郁闷这里
}
}
无论怎么改就是没有生成图片,,是为空的,,,,我改了ffmpeg的参数都不可以,,请教,怎么弄啊,,谢谢了 展开
/// 从视频文件截图,生成在指定的文件夹
/// 支持格式 : asf,avi,mpg,flv,3gp,mov,wmv
/// 在web.config中需要两个前置配置项
/// 1.ffmpeg.exe文件的路径
/// <add key="ffmpeg" value="\thread\ffmpeg\ffmpeg.exe" />
/// 2.截图的尺寸大小
/// <add key="CatchFlvImgSize" value="140X110" />
/// 3.视频处理程序 ffmpeg.exe
/// </summary>
/// <param name="vFileName">视频文件的相对路径</param>
/// <returns>返回图片的相对地址</returns>
public string CatchVideoImg(string vFileName)
{
string ffmpeg=System.Configuration.ConfigurationSettings.AppSettings["ffmpeg"];
ffmpeg = HttpContext.Current.Server.MapPath(ffmpeg);
if((!File.Exists(ffmpeg))||(!File.Exists(HttpContext.Current.Server.MapPath(vFileName))))
{
return null;
}
//获得图片的相对路径/最后存储到数据库的路径
string flv_img = Path.ChangeExtension(vFileName,".jpg");
//图片绝对路径
string flv_img_p = HttpContext.Current.Server.MapPath(flv_img);
//截图的尺寸大小,配置在web.config中
string FlvImgSize = System.Configuration.ConfigurationSettings.AppSettings["CatchFlvImgSize"];
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//此处组合成ffmpeg.exe文件需要的参数即可 ,此处命令在ffmpeg 0.4.9调试通过
startInfo.Arguments = "-i" + HttpContext.Current.Server.MapPath(vFileName) + " -y -f image2 -t 0.001 -s 140x110 " + flv_img_p;
System.Threading.Thread.Sleep(4000);
//图片截取成功后,数据由内存缓存写到硬盘需要时间较长,大概3,4秒甚至更长
if (File.Exists(flv_img_p))
{
return flv_img;
}
else
{
return null; //始终返回为空了,,郁闷这里
}
}
无论怎么改就是没有生成图片,,是为空的,,,,我改了ffmpeg的参数都不可以,,请教,怎么弄啊,,谢谢了 展开
1个回答
展开全部
有没有可能是缓存时间太短?我是拿ASP来做的,当时我是先把视频转化为FLV格式以后,再截取图片的,因为转化为FLV以后写入硬盘需要时间,所以才缓存了一段时间!
对.net我也只是刚刚学习中,不太熟悉,我把我的代码给你吧,你能看懂就看看,也许是你的格式不太对,当初我也调试了一个多星期才搞定的
simg=server.MapPath("UserVideo\"&session("id") & "\" & image_name & ".jpg")//这里是图片的地址
str=str&" -i "& chr(34) &video_path& chr(34)&" -y -f image2 -ss 8 -t 0.001 -s 400*400 " & simg
这里是调用ffmpeg.exe来截取图片
Set WshShell = server.CreateObject("Wscript.Shell")
Isffmpeg = WshShell.Run(str,1,FALSE)
这里是声明组件来执行~~
你看看吧
对.net我也只是刚刚学习中,不太熟悉,我把我的代码给你吧,你能看懂就看看,也许是你的格式不太对,当初我也调试了一个多星期才搞定的
simg=server.MapPath("UserVideo\"&session("id") & "\" & image_name & ".jpg")//这里是图片的地址
str=str&" -i "& chr(34) &video_path& chr(34)&" -y -f image2 -ss 8 -t 0.001 -s 400*400 " & simg
这里是调用ffmpeg.exe来截取图片
Set WshShell = server.CreateObject("Wscript.Shell")
Isffmpeg = WshShell.Run(str,1,FALSE)
这里是声明组件来执行~~
你看看吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询