.net 调用 ffmpeg 转换音频文件amr - mp3

2014-07-07 14:44:56

/// <summary>        
///         
/// </summary>        
/// <param name="FromName">需要转换的名字amr</param>        
public void ConvertVideo(string FromName)        
{            
    string ExportName = System.IO.Path.ChangeExtension(FromName, ".mp3");            
    string FromNamePath = System.Web.HttpContext.Current.Server.MapPath("images") + @"\" + FromName;            
    string ExportNamePath = System.Web.HttpContext.Current.Server.MapPath("images") + @"\" + ExportName;            
    //如果存在 不转换            
    if (File.Exists(ExportNamePath) == true)            
    {                
        //File.Create(ExportNamePath);                
        return;            
    }            
    Process p = new Process();
    //建立外部调用线程            
    //p.StartInfo.FileName = @"D:\ffmpeg.exe";//要调用外部程序的绝对路径            
    p.StartInfo.FileName = xml.getXML(System.Web.HttpContext.Current.Server.MapPath("ConfigFile/weixinInterface.xml"), "ffmpeg");            
    p.StartInfo.Arguments = "-i  " + FromNamePath + "  " + ExportNamePath;
    //+ "  -i";//参数(这里就是FFMPEG的参数了)            
    p.StartInfo.UseShellExecute = false;
    //不使用操作系统外壳程序启动线程(一定为FALSE,详细的请看MSDN)            
    p.StartInfo.RedirectStandardError = true;
    //把外部程序错误输出写到StandardError流中(这个一定要注意,FFMPEG的所有输出信息,都为错误输出流,用StandardOutput是捕获不到任何消息的这是我耗费了2个多月得出来的经验mencoder就是用standardOutput来捕获的)            
    p.StartInfo.CreateNoWindow = false;//不创建进程窗口            
    p.ErrorDataReceived += new DataReceivedEventHandler(Output);//外部程序(这里是FFMPEG)输出流时候产生的事件,这里是把流的处理过程转移到下面的方法中,详细请查阅MSDN            
    p.Start();//启动线程            
    p.BeginErrorReadLine();//开始异步读取            
    p.WaitForExit();//阻塞等待进程结束            
    p.Close();//关闭进程            
    p.Dispose();//释放资源        
}
private void Output(object sendProcess, DataReceivedEventArgs output)        
{            
    if (!String.IsNullOrEmpty(output.Data))           
    {                
        //处理方法                
        cc = cc + "\n" + output.Data;//输出结果的提示            
    }        
}

碰到 一点坑爹的问题   文件的路径名 不能有空格如“Visual Studio 2010”  这样的目录是不行的 

在cmd里调试 的方法是  ffmpeg  -i  123.amr  123.mp3 (到ffmpeg的根目录) 最后面 是不需要-i的

http://pan.baidu.com/s/1i386Bjv   ffmpeg.EXE的下载地址 直接用就可以  注意使用时 用绝对路径

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值