1.项目结构:
2.代码:
using System; using System.Collections.Generic; using System.Diagnostics; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebFFmpeg { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { string pathString = AppDomain.CurrentDomain.SetupInformation.ApplicationBase; Process p = new Process(); p.StartInfo.FileName = pathString + "\\FFmpeg\\ffmpeg.exe"; p.StartInfo.Arguments = @"-y -r 1 -i " + pathString + @"FFmpeg\pic\img%2d.jpg -i " + pathString + @"FFmpeg\music\02.mp3 -s 800x800 -vcodec mpeg4" + pathString + @"FFmpeg\vedio\out.mp4"; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardError = true; p.StartInfo.Crea teNoWindow = true; p.ErrorDataReceived += new DataReceivedEventHandler((s, message) => { Response.Write(message.Data); });//外部程序(这里是FFMPEG)输出流时候产生的事件,这里是把流的处理过程转移到下面的方法中,详细请查阅MSDN p.Start();//启动线程 p.BeginErrorReadLine();//开始异步读取 p.WaitForExit();//阻塞等待进程结束 p.Close();//关闭进程 p.Dispose();//释放资源 Response.Write("<a href='FFmpeg/vedio/out.mp4'>下载</a>"); } } }
3.Demo 连接
http://share.weiyun.com/581ce7da333c175841c90931fdfd1756