System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
FilestartInfo.Arguments:里面的内容为下面那样:
-i F:\程序\Web\电影网\Cinema\Cinema\Admin\UpFiles\28_尚学堂马士兵_Struts2_结果类型_result_type_2.avi -ab 56 -ar 22050 -b 500 -r 15 -s 400×350 F:\程序\Web\电影网\Cinema\Cinema\Admin\PlayFiles\201008161930440598.flv
System.Diagnostics.Process.Start(FilestartInfo); //开始转视频
没有出错,.....可是 为什么不能转FLV格式的呢? 我没找出错误来。。。
那个兄弟帮帮忙啊
#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
这个是我上次用过的,可以用,我测试过
http://www.cnblogs.com/cyq1162/archive/2008/10/15/1311410.html
另外注意中文路径问题
http://www.cnblogs.com/wangpei/archive/2008/12/06/1349139.html
可能的难点:因为这ffmpeg 和 Mencoder都是命令行工具(当然你也可以下载源代码自己修改成com之类的),在C#只能用Process调用,前面我提过要获得输出信息(获取视 频相关信息、获取当前的转换进度、获取什么时候完成转换),必须设置process.StartInfo.UseShellExecute = false; process.StartInfo.CreateNoWindow = true;然后必须通过异步编程的方式获取Process.StandardOutput和Process.StandardError的值
提供两篇文章:
http://www.cnblogs.com/seebook/archive/2007/09/25/aspnet.html
http://www.cnblogs.com/lwjacky/archive/2008/01/29/1057073.html
你是不是在 asp.net 中调用啊? 如果是这样,一定是权限问题。