Как мне выполнить команду ffmpeg cmd для командной строки, используя C #? - PullRequest
0 голосов
/ 20 июня 2019

У меня возникла проблема с попыткой заставить приложение формы в Visual Studio 19 выполнить cmd в командной строке для преобразования видео из mp4 в avi. Я использую ffmpeg для этого, но каждый раз, когда я его компилирую, ничего не получится.

Я провел аргумент через командную строку, и он прекрасно конвертирует видео. Насколько мне известно, путь верен, поэтому я не уверен, почему компилятор не обнаружит какие-либо файлы.

private void Button1_Click(object sender, EventArgs e)
    {
        string cmdString =  "c:\ffmpeg\bin";
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.CreateNoWindow = false;
        startInfo.UseShellExecute = false;
        startInfo.FileName = "ffmpeg.exe";
        startInfo.WindowStyle = ProcessWindowStyle.Hidden;
        startInfo.Arguments =  cmdString + $"-i shatner.mp4 shatner.avi";


        using (Process exeProcess = Process.Start(startInfo))
        {
            exeProcess.WaitForExit();
        }
    }
}

}

Ошибка, которую я получаю: «Системе не удается найти указанный файл»

Кроме того, я бы поставил блок try catch вокруг Process.Start, но это не имеет значения, поскольку он по-прежнему выдает исключение.

1 Ответ

1 голос
/ 20 июня 2019

Ваше имя файла и аргументы указаны неверно.Пожалуйста, смотрите ниже.

private void button1_Click(object sender, EventArgs e)
        {
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.CreateNoWindow = false;
            startInfo.UseShellExecute = false;
            startInfo.FileName = "c:\\ffmpeg\\bin\\ffmpeg.exe";
            startInfo.WindowStyle = ProcessWindowStyle.Hidden;
            startInfo.Arguments = "-i shatner.mp4 shatner.avi";

            startInfo.RedirectStandardOutput = true;
            startInfo.RedirectStandardError = true;       


            using (Process exeProcess = Process.Start(startInfo))
            {
                string error = exeProcess.StandardError.ReadToEnd();
                string output = exeProcess.StandardError.ReadToEnd();
                exeProcess.WaitForExit();

                MessageBox.Show("ERROR:" + error);
                MessageBox.Show("OUTPUT:" + error);
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...