运行 CMD 和 ffmpeg Windows 窗体
Posted
技术标签:
【中文标题】运行 CMD 和 ffmpeg Windows 窗体【英文标题】:Run CMD and ffmpeg Windows Forms 【发布时间】:2022-01-18 15:32:46 【问题描述】:我正在尝试在我的 Windows 窗体应用程序中使用 ffmpeg,并且我是苹果来转换单个文件,但现在我正在尝试选择整个文件夹并运行 cmd ffmpeg。
我已经使用 cmd 进行了测试,下面的行会自动转换整个文件夹中的所有文件,但我不知道如何在我的 winforms 应用程序中实现这一点。任何人都知道如何将其添加到我的代码中?
for %i in (*.flv) do ffmpeg -i "%i" "%~ni.mkv"
这是我在不选择 PATH 的情况下转换单个文件时使用的示例代码:
// Using OpenFileDialog to get Folder Path
private void button1_Click(object sender, EventArgs e)
openFileDialog1.ValidateNames = false;
openFileDialog1.CheckFileExists = false;
openFileDialog1.CheckPathExists = true;
openFileDialog1.FileName = "Folder Selection.";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
string folderPath = Path.GetDirectoryName(openFileDialog1.FileName);
textBox1.Text = folderPath;
private void buttonConvert_Click(object sender, EventArgs e)
string output = $"output--DateTime.Now.Ticks.mkv";
LaunchCommandLineApp("sample.flv", output);
Process.Start("explorer.exe", "/select, \"" + output + "\"");
private void LaunchCommandLineApp(string input, string outputFile)
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "ffmpeg.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"-i input outputFile";
using (Process exeProcess = Process.Start(startInfo))
exeProcess.WaitForExit();
【问题讨论】:
您期望的服务究竟是什么?您是否希望这个社区中的某个人免费为您编写一些代码?请确保您使用tour,然后通读How to Ask 的页面,以更好地了解您注册的网站是如何工作的。一般来说,我们希望您编写自己的代码,并且当它无法完成编写的任务时,没有任何问题,您会发布该代码,并突出显示问题,以便我们可以重现它,然后提供帮助你在修理它。 在我看来你已经完成了困难的部分,你现在只需要使用Directory.GetFiles
。您的问题可以改写为“如何使用 c# 获取目录中的文件?”。你已经有一个答案告诉你如何使用它。
【参考方案1】:
您编写的 DOS 命令是一个重复调用 FFMpeg 命令的 for 循环。在 C# 中执行相同的操作,例如:
foreach(var file in Directory.GetFiles(textBox1.Text, "*.flv")) //textBox1.Text == the folder path
LaunchCommandLineApp(file, Path.ChangeExtension(file, "mkv"));
如果您的路径有空格,您可能需要考虑在命令中加上引号 - 您的 DOS 命令有空格,而您的 C# 似乎没有空格。
考虑$@"-i ""input"" ""outputFile"""
【讨论】:
以上是关于运行 CMD 和 ffmpeg Windows 窗体的主要内容,如果未能解决你的问题,请参考以下文章