问题描述
最近要做个在线转视频的功能,从网上弄了份代码,下面这段是转换代码,怎么都转不成功,运行框一闪就没了,文件夹里没有转换后的视频,哪位大侠做过,给看看吧publicstringChangeFilePhy(stringfileName,stringplayFile,stringimgFile){//取得ffmpeg.exe的路径,路径配置在Web.Config中,如:<addkey="ffmpeg"value="E:51aspxffmpeg.exe"/>stringffmpeg=Server.MapPath(PublicMethod.ffmpegtool);if((!System.IO.File.Exists(ffmpeg))||(!System.IO.File.Exists(fileName))){return"";}//获得图片和(.flv)文件相对路径/最后存储到数据库的路径,如:/Web/User1/00001.jpgstringflv_file=System.IO.Path.ChangeExtension(playFile,".flv");//截图的尺寸大小,配置在Web.Config中,如:<addkey="CatchFlvImgSize"value="240x180"/>stringFlvImgSize=PublicMethod.sizeOfImg;System.Diagnostics.ProcessStartInfoFilestartInfo=newSystem.Diagnostics.ProcessStartInfo(ffmpeg);FilestartInfo.WindowStyle=System.Diagnostics.ProcessWindowStyle.Hidden;FilestartInfo.Arguments="-i"+fileName+"-ab56-ar22050-b500-r15-s"+widthOfFile+"x"+heightOfFile+""+flv_file;//ImgstartInfo.Arguments="-i"+fileName+"-y-fimage2-t0.05-s"+FlvImgSize+""+flv_img;FilestartInfo.UseShellExecute=false;FilestartInfo.CreateNoWindow=true;try{//转换System.Diagnostics.Process.Start(FilestartInfo);//截图CatchImg(fileName,imgFile);}catch{return"";}return"";}
解决方案
解决方案二:
引用楼主dafei198607的回复:
最近要做个在线转视频的功能,从网上弄了份代码,下面这段是转换代码,怎么都转不成功,运行框一闪就没了,文件夹里没有转换后的视频,哪位大侠做过,给看看吧publicstringChangeFilePhy(stringfileName,stringplayFile,stringimgFile){//取得ffmpeg.exe的路径,路径配置在Web.Config中,如:<addkey="ffmpeg"value="E:51aspxffmpeg.exe"/>stringffmpeg=Server.MapPath(PublicMethod.ffmpegtool);if((!System.IO.File.Exists(ffmpeg))||(!System.IO.File.Exists(fileName))){return"";}//获得图片和(.flv)文件相对路径/最后存储到数据库的路径,如:/Web/User1/00001.jpgstringflv_file=System.IO.Path.ChangeExtension(playFile,".flv");//截图的尺寸大小,配置在Web.Config中,如:<addkey="CatchFlvImgSize"value="240x180"/>stringFlvImgSize=PublicMethod.sizeOfImg;System.Diagnostics.ProcessStartInfoFilestartInfo=newSystem.Diagnostics.ProcessStartInfo(ffmpeg);FilestartInfo.WindowStyle=System.Diagnostics.ProcessWindowStyle.Hidden;FilestartInfo.Arguments="-i"+fileName+"-ab56-ar22050-b500-r15-s"+widthOfFile+"x"+heightOfFile+""+flv_file;//ImgstartInfo.Arguments="-i"+fileName+"-y-fimage2-t0.05-s"+FlvImgSize+""+flv_img;FilestartInfo.UseShellExecute=false;FilestartInfo.CreateNoWindow=true;try{//转换System.Diagnostics.Process.Start(FilestartInfo);//截图CatchImg(fileName,imgFile);}catch{return"";}return"";}
看看这个http://bbs.csdn.net/topics/380224646
解决方案三:
引用1楼hou306010849的回复:
Quote: 引用楼主dafei198607的回复:
最近要做个在线转视频的功能,从网上弄了份代码,下面这段是转换代码,怎么都转不成功,运行框一闪就没了,文件夹里没有转换后的视频,哪位大侠做过,给看看吧publicstringChangeFilePhy(stringfileName,stringplayFile,stringimgFile){//取得ffmpeg.exe的路径,路径配置在Web.Config中,如:<addkey="ffmpeg"value="E:51aspxffmpeg.exe"/>stringffmpeg=Server.MapPath(PublicMethod.ffmpegtool);if((!System.IO.File.Exists(ffmpeg))||(!System.IO.File.Exists(fileName))){return"";}//获得图片和(.flv)文件相对路径/最后存储到数据库的路径,如:/Web/User1/00001.jpgstringflv_file=System.IO.Path.ChangeExtension(playFile,".flv");//截图的尺寸大小,配置在Web.Config中,如:<addkey="CatchFlvImgSize"value="240x180"/>stringFlvImgSize=PublicMethod.sizeOfImg;System.Diagnostics.ProcessStartInfoFilestartInfo=newSystem.Diagnostics.ProcessStartInfo(ffmpeg);FilestartInfo.WindowStyle=System.Diagnostics.ProcessWindowStyle.Hidden;FilestartInfo.Arguments="-i"+fileName+"-ab56-ar22050-b500-r15-s"+widthOfFile+"x"+heightOfFile+""+flv_file;//ImgstartInfo.Arguments="-i"+fileName+"-y-fimage2-t0.05-s"+FlvImgSize+""+flv_img;FilestartInfo.UseShellExecute=false;FilestartInfo.CreateNoWindow=true;try{//转换System.Diagnostics.Process.Start(FilestartInfo);//截图CatchImg(fileName,imgFile);}catch{return"";}return"";}看看这个http://bbs.csdn.net/topics/380224646
这个是c语言写的吧
解决方案四:
大家给点建议,帮着顶顶也行啊,帮顶有分
解决方案五:
fileName 最好外边加上引号,可能是文件路径中有空格,这样一个文件路径就被识别为两个参数了
解决方案六:
解决方案七:
我现在的项目中一直在使用ffmpeg.exe转换和压缩语音,贴上代码看看把。//MP3转换amrthis.StartProcess(Path.Combine(this.converterPath,"ffmpeg.exe"),string.Format(@"-i{0}-ac1-ar8000-ab7950-y{1}",args.Mp3FileFullName,args.AmrFileFullName));//压缩MP3this.StartProcess(Path.Combine(this.compressPath,"ffmpeg.exe"),string.Format(@"-i{0}-ac1-ar8000-ab7950-y{1}",args.Mp3FileFullName,args.Mp3FileCompressName));privatevoidStartProcess(stringfileName,stringargs){Processprocess=Process.Start(newProcessStartInfo{FileName=fileName,Arguments=args,UseShellExecute=false,RedirectStandardInput=false,RedirectStandardOutput=false,CreateNoWindow=true});process.WaitForExit();process.Close();}
解决方案八:
引用4楼leixiaohua1020的回复:
fileName 最好外边加上引号,可能是文件路径中有空格,这样一个文件路径就被识别为两个参数了
对,我就被这个问题折磨过,找了好几天才找到原因,另外你可以把你的项目类型设为控制台Console项目,不要隐藏转换时的dos命令窗口,这样的转换时就能看到详细的ffmpeg输出信息,很容易找出问题原因
解决方案九:
解决方案十:
太棒了,我也是折腾了两天,才找出原因的。路径有空格
解决方案十一:
ffmpeg对路径的空格、中文都不太友好