提问人:TSLee 提问时间:5/17/2023 最后编辑:TSLee 更新时间:5/21/2023 访问量:157
C# Windows 窗体使用 FFMPEG 更改视频格式没有得到响应
C# Windows Forms Using FFMPEG to change video format got no response
问:
我正在尝试制作一个 exe 程序来使用 FFMPEG 而不是在终端中进行更改视频格式。格式化的视频将保存在下载文件夹中。我已经在下面尝试了我的代码,但没有得到输出响应。我想知道我是否正确使用了 process() 和 StartInfo,作为我发现的示例,文档只是让我感到困惑。我已经仔细检查了 ffmpeg.exe 在 bin 文件夹中,而 StartInfo() 仅用于获取信息,位于 Process() 下。这就是为什么 Process() 可以访问信息并使用 Start() 来启动进程的原因。请帮助并纠正我的理解。 以下是我的代码的一部分:
private void convertButton_Click(object sender, EventArgs e)
{
String input = filepathTextBox.Text;
String outputResolution = resolutionLabel.Text;
String output;
String outputFileType;
int inputLength = input.Length;
int l = 0;
for (int i = (inputLength - 1); inputLength > -1; i--)
{
if (input[i] == '.')
{
l = i;
break;
}
}
output = input.Substring(0, l - 1);
outputFileType = input.Substring(l + 1, inputLength - 1);
Process process = new Process();
process.StartInfo.UseShellExecute = true;
process.StartInfo.FileName = "ffmpeg.exe";
process.StartInfo.WorkingDirectory = @"C:\Users\User\Downloads\ffmpeg-2023-05-15-git-2953ebe7b6-full_build\bin";
process.StartInfo.Arguments = "ffmpeg -i" + @"C:\Users\User\Downloads\file_example_MP4_640_3MG.mp4" + "-s 320x240 -r 25 -b:v 500000 -pix_fmt yuv420p -c:v libx264 -vprofile baseline -level 2.1 -x264opts stitchable=1:level=3.0:keyint=15:ref=1:merange=16:mvrange=32 -acodec pcm_s16le -ar 16000 -ac 1" + @"C:\Users\User\Downloads\440.mp4";
process.Start();
}
输出: “myprogram.exe(CoreCLR: clrhost): 加载了”C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.15\System.Diagnostics.Process.dll”。跳过加载符号。模块已优化,调试器选项“Just My Code”已启用。 线程0x79e0已退出,代码为 0 (0x0)。
答:
0赞
TSLee
5/21/2023
#1
参数应该是这样的
$"-i {input} -s 320x240 -r 25 -b:v 500000 -pix_fmt yuv420p -c:v libx264 -vprofile baseline -level 2.1 -x264opts stitchable=1:level=3.0:keyint=15:ref=1:merange=16:mvrange=32 -acodec pcm_s16le -ar 16000 -ac 1 {output}",
当文件名被分配时。一旦进程启动,进程将转到以下路径,并使用命令参数执行exe文件。
对于上面的代码,我在 ffmpeg exe 中执行了 ffmpeg。这就是为什么它不起作用。
评论
"ffmpeg -i" + @"C:\Users\User\Downloads\file_example_MP4_640_3MG.mp4"
Filename
应该是 的完全限定路径。很少使用,很可能应该将其设置为“为什么你有作为参数的一部分?应为 Process 设置一些其他属性。您可能需要设置 WorkingDirectory,但应尽量避免对路径进行硬编码。ffmpeg.exe
UseShellExecute = true;
UseShellExecute = false;
ffmpeg