首页 新闻 搜索 专区 学院

ffmpeg截图

0
悬赏园豆:30 [已解决问题] 解决于 2010-09-17 17:00

1
2 protected void Page_Load(object sender, EventArgs e)
3 {
4 string ffmpeg = Server.MapPath("~/ffmpeg/ffmpeg.exe");
5 Process p = new Process();
6 p.StartInfo.FileName = ffmpeg;
7 p.StartInfo.Arguments =
8 " -i F:\\1.avi -y -f image2 -ss 2 -vframes 1 320×240 -s F:\\1.jpg";
9 try
10 {
11 p.Start();
12 }
13 catch (Exception ex)
14 {
15 throw ex;
16 }
17 finally
18 {
19 p.Close();
20 }
21 }

 

我已经用过ffmpeg转换转换电影,,可是这ffmpeg怎么也截不出图来。。。。。。。。。
我把代码拿出来像上面那样试试。 也是不行.... 为什么呢。。Agument出错在哪里?  
有哪位兄台做过的。参考一下

winnerfat的主页 winnerfat | 初学一级 | 园豆:0
提问于:2010-08-24 17:59
< >
分享
最佳答案
0

这个我做过,给你代码看下

//转换电影
#region //运行FFMpeg的视频解码,(这里是绝对路径)
/// <summary>
/// 转换文件并保存在指定文件夹下面(这里是绝对路径)
/// </summary>
/// <param name="fileName">上传视频文件的路径(原文件)</param>
/// <param name="playFile">转换后的文件的路径(网络播放文件)</param>
/// <param name="imgFile">从视频文件中抓取的图片路径</param>
/// <returns>成功:返回图片虚拟地址; 失败:返回空字符串</returns>
public string ChangeFilePhy(string fileName, string playFile, string imgFile)
{
//取得ffmpeg.exe的路径,路径配置在Web.Config中,如:<add key="ffmpeg" value="E:\51aspx\ffmpeg.exe" />
start = DateTime.Now;
string ffmpeg = ffmpegtool;
if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(fileName)))
{
return "";
}

//获得图片和(.flv)文件相对路径/最后存储到数据库的路径,如:/Web/User1/00001.jpg

string flv_file = System.IO.Path.ChangeExtension(playFile, ".flv");


//截图的尺寸大小,配置在Web.Config中,如:<add key="CatchFlvImgSize" value="240x180" />
string FlvImgSize = VideoToFlv.sizeOfImg;
System.Diagnostics.Process FilesProcess
= new System.Diagnostics.Process();
FilesProcess.StartInfo.FileName
= ffmpeg;
FilesProcess.StartInfo.WindowStyle
= System.Diagnostics.ProcessWindowStyle.Hidden;
FilesProcess.StartInfo.Arguments
= " -i " + fileName + " -ab 56 -ar 22050 -b 500 -r 30 -s " + widthOfFile + "x" + heightOfFile + " " + flv_file;
try
{
FilesProcess.Start();
while (!FilesProcess.HasExited)
{

}
//截图
CatchImg(fileName, imgFile);
WriteRunTime();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);

}
return "";
}
#endregion

//截图程序
public string CatchImg(string fileName, string imgFile)
{
//
string ffmpeg = ffmpegtool;
//
string flv_img = imgFile + ".jpg";
//
string FlvImgSize = VideoToFlv.sizeOfImg;
//
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(Exception ex)
{
Console.WriteLine(ex.Message);
}
//
if (System.IO.File.Exists(flv_img))
{
return flv_img;
}

return "";
}

 

收获园豆:30
jowo | 老鸟四级 |园豆:2834 | 2010-08-25 08:26
其他回答(3)
0

上面的老兄,我用了你的代码为什么就是生成不了呢?

非凡@人生 | 园豆:230 (菜鸟二级) | 2010-11-14 18:12
0

能不能截取一个视频播放一段时间后的图片的啊

具体哪个参数设置啊

Accecped | 园豆:179 (初学一级) | 2010-12-03 20:07
0

我也是用这种方法对于".flv"就是截不出图,其它格式如".avi,.mpg,.3gp,.mov"都可以截出图.有没有人帮忙啊

whl330692 | 园豆:205 (菜鸟二级) | 2011-12-02 14:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册