gpt4 book ai didi

c# - 使用 Process.Start() 启动进程时出现问题 - 如何构建参数列表?

转载 作者:太空宇宙 更新时间:2023-11-03 17:19:36 25 4
gpt4 key购买 nike

我有这个:

string cmd = " -i """ + finPath + """ -ar 44100 -ab 160k """ + foutPath + """";

我需要使用 Systems.Diagnostics.Process 将其从 C# 传递到命令提示符。

似乎没有任何组合起作用。如果我在命令提示符下运行程序,它就可以正常工作。如果我在 VB.Net 中使用相同的字符串,也可以正常运行

finPathfoutPath 一样有空格,这使得程序无法运行。

我需要将 finPath 表示为 finPath。与 foutPath 相同。


更多代码(使用此处建议的行,运气不好):

string inputPath = RootPath + "videoinput\\";  

string ffmpegpath = RootPath + "ffmpeg.exe"; //ffmpeg path

string outputPath = RootPath +"videooutput\\";

//define new extension

string fileext = ".flv";

string newfilename = namenoextension + fileext;

string namenoextension = Path.GetFileNameWithoutExtension(savedfile);

string fileoutPath = outputPath + newfilename;

string fileinPath = "/videoinput/" + savedfile;

string cmd = " -i \"" + fileinPath + "\" -ar 44100 -ab 160k \"" + fileoutPath + "\"";


//Begin encoding process

Process proc = new Process();

proc.StartInfo.FileName = ffmpegpath;

proc.StartInfo.Arguments = cmd;

proc.StartInfo.UseShellExecute = true;

proc.StartInfo.CreateNoWindow = false;

proc.StartInfo.RedirectStandardOutput = false;

proc.Start();

最佳答案

这应该适合你:

string arguments = string.Format("-i \"{0}\" -ar 44100 -ab 160k \"{1}\"", finPath, foutPath);
Process.Start(thePathToExecutable, arguments);

确保指定可执行文件的路径与命令行参数分开。


编辑以回应评论和问题编辑:

我只是在控制台中使用以下代码运行它:

using System;
using System.IO;

class Program
{
static void Main(string[] args)
{
string RootPath = "C:\\";
string savedFile = "test.avi";

string inputPath = Path.Combine(RootPath, "videoinput");
string ffmpegpath = Path.Combine(RootPath, "ffmpeg.exe"); //ffmpeg path
string outputPath = Path.Combine(RootPath, "videooutput");

//define new extension
string fileext = ".flv";
string namenoextension = Path.GetFileNameWithoutExtension(savedFile);
string newfilename = namenoextension + fileext;

string fileoutPath = Path.Combine(outputPath, newfilename);
string fileinPath = Path.Combine(inputPath, savedFile);

string arguments = string.Format("-i \"{0}\" -ar 44100 -ab 160k \"{1}\"", fileinPath, fileoutPath);

Console.WriteLine(ffmpegpath);
Console.WriteLine(arguments);
Console.ReadKey();
}
}

这写出来:

C:\ffmpeg.exe
-i "C:\videoinput\test.avi" -ar 44100 -ab 160k "C:\videooutput\test.flv"

正如我所说 - 如果您这样做,它应该会起作用。话虽如此,我建议您阅读 System.IO.Path类,并使用 Path.Combine()、Path.GetFullPath() 等来修复您的输入文件。这也可以帮助您解决部分问题。

关于c# - 使用 Process.Start() 启动进程时出现问题 - 如何构建参数列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/952721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com