请问如果在上传视频(flv文件)的同时创建该视频的缩略图? 请问如果在上传视频(flv文件)的同时创建该视频的缩略图?可以只告诉我创建视频的缩略图的方法。我在网上搜索了一下,看到有需要调用ffmpeg.exe可以给视频生成缩略图,但是没有成功,并且不知道用C#怎么实现。希望有人能给一份能成功生成的C#代码,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用这个软件 Video GIF/AVI ThumbCell Creater 可以把视频生成缩略图~ #region 截图 //fileName flv文件地址 //imgFile 输出的图片地址 public string CatchImg(string fileName,string imgFile) { // string ffmpeg = VideoDecoder.ffMpeg; //ffmpeg执行文件的路径 // string flv_img =imgFile+".jpg"; // string FlvImgSize = VideoDecoder.sizeOfImg;//生成的图片分辨率 240x180 // System.Diagnostics.ProcessStartInfo ImgstartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg); ImgstartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; // ImgstartInfo.Arguments = " -i " + fileName + " -y -f image2 -ss 2 -vframes 1 -s " + FlvImgSize + " " + flv_img; try { System.Diagnostics.Process.Start(ImgstartInfo); } catch { return ""; } // if (System.IO.File.Exists(flv_img)) { return flv_img; } return ""; } #endregion 你好clal :请问VideoDecoder这个是怎么来的? 这个函数就是我从VideoDecoder这个类从copy出来的那几个地方,你改成自己的文件位置就行了 你看看这个http://topic.csdn.net/u/20080527/12/c03d32b6-36b8-4838-b706-cba1b91df4de.html是这个类的全部这是以前写的不完整方案包括解码生成flv,抓图,用flvtool2.exe读取及标记flv文件信息 那请问我怎么引用VideoDecoder这个类? 总算把你写的代码看明白了。VideoDecoder改成我自己的就行了 我改成:public string CatchImg(string fileName, string imgFile) { // string ffmpeg = Server.MapPath("ffmpeg.exe"); //ffmpeg执行文件的路径 // string flv_img = imgFile; // string FlvImgSize = "240x180";//生成的图片分辨率 240x180 // System.Diagnostics.ProcessStartInfo ImgstartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg); ImgstartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; // ImgstartInfo.Arguments = " -i " + fileName + " -y -f image2 -ss 2 -vframes 1 -s " + FlvImgSize + " " + flv_img; try { System.Diagnostics.Process.Start(ImgstartInfo); } catch { return ""; } // if (System.IO.File.Exists(flv_img)) { return flv_img; } return ""; }执行没问题,但是图片还是没有生成成功。请问是什么原因? 最大可能是目录没有写入权限把 try 去掉吧看看出了什么错误事件查看器 里有没有出错说明 没有报错呢,imgFile是等于d:\aaa.jpg,执行完之后在D盘没有发现aaa.jpg文件。会不会是ffmpeg.exe版本问题? 刚才改了下路径将imgFile=d:\\aaa\\aaa.jpgaaa文件夹给了完全的权限,还是不行。 调过几次了,路径我一个个都试了,没有问题。线程启动了,就是ffmpeg.exe没有生成图片。 我使用的ffmpeg.exe还有pthreadGC2.dllpthreadGC2.dll是2.9.0.0 汗pthreadGC2.dll版本是一样的,为什么我这不行呢? 看看IIS中的 Web 服务扩展打开试试把进程的窗口样式改成 System.Diagnostics.ProcessWindowStyle.Normal;直接从Cmd窗口看效果 ImgstartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;改了,但是CMD窗口一闪就过了。图片还是没生成. 图片生成应该没有那么快ImgstartInfo.Arguments = " -i " + fileName + " -y -f image2 -ss 2 -vframes 1 -s " + FlvImgSize + " " + flv_img;注意这个中间的空格另外你先手动在cmd里把整个命令运行一次下班回家先 http://topic.csdn.net/u/20070212/11/16EE743D-32D8-4252-B5D6-26DAA1082FBE.htmlhttp://topic.csdn.net/u/20070620/13/4BE90E90-95FA-464D-A4F3-85CC694D5655.html 我试了一下,原来是路径问题,如果用Server.MapPath的方法去路径是不行的,非要用绝对路径。例如:d:\\ffmpeg.exe 应该不会啊Server.MapPath转换后就是绝对路径我之前的方法里也是用Server.MapPath你确定Server.MapPath后的路径和你写的绝对路径是一样吗? 是一样的,flv文件不能用Server.MapPath,其他的可以,真是奇怪。 晕我那个项目,现在还在运行就是用Server.MapPath的 最快的方法就是了解flv的编码,在上传的时候通过stream读取 用ffmpeg 去转换根本 不行,百分之99的服务器都拒绝执行EXE程序 w3school上的一段代码运行时报错 (急。。。急。。急 )vs 2005创建asp.net程序问题 关于FreeTextBox上传图片保存后的图片路径问题 asp.net2.0中如何做上传 IIS与.FRAMEWORK的安装问题 关于 页面状态保存的问题 请问如何DbGrid动态的绑定不固定的模板列(checkbox)呀? 高手们,请指教 请教一个很郁闷的问题!!!! 存储过程发问! asp.net 前台页面固定显示图片大小的问题 急救,遍历fileupload问题,高手赐教!!
#region 截图
//fileName flv文件地址
//imgFile 输出的图片地址
public string CatchImg(string fileName,string imgFile)
{
//
string ffmpeg = VideoDecoder.ffMpeg; //ffmpeg执行文件的路径
//
string flv_img =imgFile+".jpg";
//
string FlvImgSize = VideoDecoder.sizeOfImg;//生成的图片分辨率 240x180
//
System.Diagnostics.ProcessStartInfo ImgstartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
ImgstartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//
ImgstartInfo.Arguments = " -i " + fileName + " -y -f image2 -ss 2 -vframes 1 -s " + FlvImgSize + " " + flv_img;
try
{
System.Diagnostics.Process.Start(ImgstartInfo);
}
catch
{
return "";
}
//
if (System.IO.File.Exists(flv_img))
{
return flv_img;
} return "";
}
#endregion
请问VideoDecoder这个是怎么来的?
那几个地方,你改成自己的文件位置就行了
http://topic.csdn.net/u/20080527/12/c03d32b6-36b8-4838-b706-cba1b91df4de.html
是这个类的全部
这是以前写的不完整方案
包括解码生成flv,抓图,用flvtool2.exe读取及标记flv文件信息
那请问我怎么引用VideoDecoder这个类?
public string CatchImg(string fileName, string imgFile)
{
//
string ffmpeg = Server.MapPath("ffmpeg.exe"); //ffmpeg执行文件的路径
//
string flv_img = imgFile;
//
string FlvImgSize = "240x180";//生成的图片分辨率 240x180
//
System.Diagnostics.ProcessStartInfo ImgstartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
ImgstartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//
ImgstartInfo.Arguments = " -i " + fileName + " -y -f image2 -ss 2 -vframes 1 -s " + FlvImgSize + " " + flv_img;
try
{
System.Diagnostics.Process.Start(ImgstartInfo);
}
catch
{
return "";
}
//
if (System.IO.File.Exists(flv_img))
{
return flv_img;
} return "";
}执行没问题,但是图片还是没有生成成功。请问是什么原因?
把 try 去掉吧
看看出了什么错误
事件查看器 里有没有出错说明
执行完之后在D盘没有发现aaa.jpg文件。
会不会是ffmpeg.exe版本问题?
aaa文件夹给了完全的权限,还是不行。
pthreadGC2.dll是2.9.0.0
汗pthreadGC2.dll版本是一样的,为什么我这不行呢?
把
进程的窗口样式改成 System.Diagnostics.ProcessWindowStyle.Normal;
直接从Cmd窗口看效果
ImgstartInfo.Arguments = " -i " + fileName + " -y -f image2 -ss 2 -vframes 1 -s " + FlvImgSize + " " + flv_img;
注意这个中间的空格
另外你先手动在cmd里把整个命令运行一次下班回家先
http://topic.csdn.net/u/20070620/13/4BE90E90-95FA-464D-A4F3-85CC694D5655.html
Server.MapPath转换后就是绝对路径
我之前的方法里也是用Server.MapPath
你确定Server.MapPath后的路径和你写的绝对路径是一样吗?
我那个项目,现在还在运行
就是用Server.MapPath的