1

我编写了代码以使用 ffmpeg 在 c#asp.net 中转换文件。执行时显示错误为“文件名、目录名或卷标语法不正确”,但我的路径是正确的。那么解决这个问题的方法是什么?

ProcessStartInfo info = new ProcessStartInfo("e:\ffmpeg\bin\ffmpeg.exe", "-i cars1.flv -same_quant intermediate1.mpg");

process.Start();

我尝试了另一种方法,如下所示。但这也行不通。

ProcessStartInfo info = new ProcessStartInfo("ffmpeg.exe", "-i cars1.flv -same_quant intermediate1.mpg");

请帮助我使用 c# asp.net 中的 ffmpeg 将一种视频文件格式转换为另一种视频文件格式的示例代码。提前致谢。

4

3 回答 3

1

有可用的包装库

http://www.ffmpeg-csharp.com/

另请参阅

http://www.codeproject.com/Articles/24995/FFMPEG-using-ASP-NET

https://stackoverflow.com/questions/tagged/asp.net+c%23+video

    string apppath = Request.PhysicalApplicationPath; 

    string outf = Server.MapPath(".");

    string fileargs = "-i" + " " + "\"C:/file.mp4 \"" + " " + "\"C:/files/test.flv \"";

    Process myProcess = new Process();

    myProcess.StartInfo.FileName = Server.MapPath(".")+"//ffmpeg.exe";

    myProcess.StartInfo.Arguments = fileargs;

    myProcess.StartInfo.UseShellExecute = false;

    myProcess.StartInfo.CreateNoWindow = false;

    myProcess.StartInfo.RedirectStandardOutput = false;

    myProcess.Start();

    myProcess.WaitForExit(50 * 1000);

谢谢

迪普

于 2012-05-03T12:11:35.507 回答
0

\路径中的反斜杠 ( ) 被认为是转义序列的开始。为防止这种情况,请使用双反斜杠 ( \\),或在字符串前面加上@.

ProcessStartInfo info = new ProcessStartInfo("e:\\ffmpeg\\bin\\ffmpeg.exe", 
                         "-i cars1.flv -same_quant intermediate1.mpg");

或者:

ProcessStartInfo info = new ProcessStartInfo(@"e:\ffmpeg\bin\ffmpeg.exe", 
                         "-i cars1.flv -same_quant intermediate1.mpg");
于 2012-05-03T12:10:20.010 回答
0

您需要在路径中有反斜杠,请参见下面这是我使用 ffmpeg.exe 创建视频的方式

        string sConverterPath = @"C:\ffmpeg.exe";
        string sConverterArguments = @" -i ";
        sConverterArguments += "\"" + sAVIFile + "\"";
        sConverterArguments += " -s " + iVideoWidth.ToString() + "x" + iVideoHeight.ToString() + " ";
        sConverterArguments += " -b " + iVideoBitRate.ToString() + "k -ab " + iAudioBitRate.ToString() + "k -ac 1 -ar 44100 -r 24 -absf remove_extra ";
        sConverterArguments += "\"" + sOutputFile + "\"";


        Process oProcess = new Process();
        oProcess.StartInfo.UseShellExecute = true;
        oProcess.StartInfo.Arguments = sConverterArguments;
        oProcess.StartInfo.FileName = sConverterPath;
于 2012-05-03T12:11:54.073 回答