ffmpeg.exe转换视频不成功,有做过的给点指点吧

dafei198607 2013-12-18 03:19:21
最近要做个在线转视频的功能,从网上弄了份代码,下面这段是转换代码,怎么都转不成功,运行框一闪就没了,文件夹里没有转换后的视频,哪位大侠做过,给看看吧

public string ChangeFilePhy(string fileName, string playFile, string imgFile)
{
//取得ffmpeg.exe的路径,路径配置在Web.Config中,如:<add key="ffmpeg" value="E:\51aspx\ffmpeg.exe" />
string ffmpeg = Server.MapPath(PublicMethod.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 = PublicMethod.sizeOfImg;




System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);

FilestartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

FilestartInfo.Arguments = " -i " + fileName + " -ab 56 -ar 22050 -b 500 -r 15 -s " + widthOfFile + "x" + heightOfFile + " " + flv_file;
//ImgstartInfo.Arguments = " -i " + fileName + " -y -f image2 -t 0.05 -s " + FlvImgSize + " " + flv_img;
FilestartInfo.UseShellExecute = false;
FilestartInfo.CreateNoWindow = true;
try
{
//转换
System.Diagnostics.Process.Start(FilestartInfo);
//截图
CatchImg(fileName, imgFile);
}
catch
{
return "";
}

return "";
}

...全文
537 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Terumii 2016-07-09
  • 打赏
  • 举报
回复
ffmpeg对路径的空格、中文都不太友好
wangyu_lxs 2014-09-23
  • 打赏
  • 举报
回复
太棒了,我也是折腾了两天,才找出原因的。路径有空格
webdiyer 2014-01-15
  • 打赏
  • 举报
回复
引用 4 楼 leixiaohua1020 的回复:
 fileName 最好外边加上引号,可能是文件路径中有空格,这样一个文件路径就被识别为两个参数了
对,我就被这个问题折磨过,找了好几天才找到原因,另外你可以把你的项目类型设为控制台Console项目,不要隐藏转换时的dos命令窗口,这样的转换时就能看到详细的ffmpeg输出信息,很容易找出问题原因
zl289kkk 2014-01-15
  • 打赏
  • 举报
回复
我现在的项目中一直在使用ffmpeg.exe转换和压缩语音,贴上代码看看把。

                // MP3转换amr
                this.StartProcess(
                    Path.Combine(this.converterPath, "ffmpeg.exe"),
                    string.Format(@"-i {0} -ac 1 -ar 8000 -ab 7950 -y {1}",
                    args.Mp3FileFullName,
                    args.AmrFileFullName));

                // 压缩MP3
                this.StartProcess(
                    Path.Combine(this.compressPath, "ffmpeg.exe"),
                    string.Format(@"-i {0} -ac 1 -ar 8000 -ab 7950 -y {1}",
                    args.Mp3FileFullName, args.Mp3FileCompressName));


private void StartProcess(string fileName, string args)
        {
            Process process = Process.Start(new ProcessStartInfo
            {
                FileName = fileName,
                Arguments = args,
                UseShellExecute = false,
                RedirectStandardInput = false,
                RedirectStandardOutput = false,
                CreateNoWindow = true
            });

            process.WaitForExit();
            process.Close();
        }

雷霄骅 2013-12-20
  • 打赏
  • 举报
回复
 fileName 最好外边加上引号,可能是文件路径中有空格,这样一个文件路径就被识别为两个参数了
dafei198607 2013-12-18
  • 打赏
  • 举报
回复
大家给点建议,帮着顶顶也行啊,帮顶有分
dafei198607 2013-12-18
  • 打赏
  • 举报
回复
引用 1 楼 hou306010849 的回复:
[quote=引用 楼主 dafei198607 的回复:] 最近要做个在线转视频的功能,从网上弄了份代码,下面这段是转换代码,怎么都转不成功,运行框一闪就没了,文件夹里没有转换后的视频,哪位大侠做过,给看看吧

public  string ChangeFilePhy(string fileName, string playFile, string imgFile)
    {
        //取得ffmpeg.exe的路径,路径配置在Web.Config中,如:<add   key="ffmpeg"   value="E:\51aspx\ffmpeg.exe"   />   
        string ffmpeg = Server.MapPath(PublicMethod.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 = PublicMethod.sizeOfImg;




        System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);

        FilestartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

        FilestartInfo.Arguments = " -i " + fileName + " -ab 56 -ar 22050 -b 500 -r 15 -s " + widthOfFile + "x" + heightOfFile + " " + flv_file;
        //ImgstartInfo.Arguments = "   -i   " + fileName + "   -y   -f   image2   -t   0.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[/quote] 这个是c语言写的吧
Im_Sorry 2013-12-18
  • 打赏
  • 举报
回复
引用 楼主 dafei198607 的回复:
最近要做个在线转视频的功能,从网上弄了份代码,下面这段是转换代码,怎么都转不成功,运行框一闪就没了,文件夹里没有转换后的视频,哪位大侠做过,给看看吧

public  string ChangeFilePhy(string fileName, string playFile, string imgFile)
    {
        //取得ffmpeg.exe的路径,路径配置在Web.Config中,如:<add   key="ffmpeg"   value="E:\51aspx\ffmpeg.exe"   />   
        string ffmpeg = Server.MapPath(PublicMethod.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 = PublicMethod.sizeOfImg;




        System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);

        FilestartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

        FilestartInfo.Arguments = " -i " + fileName + " -ab 56 -ar 22050 -b 500 -r 15 -s " + widthOfFile + "x" + heightOfFile + " " + flv_file;
        //ImgstartInfo.Arguments = "   -i   " + fileName + "   -y   -f   image2   -t   0.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

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧