Я пытаюсь запустить исполняемый файл ffmpeg
, используя Process
для преобразования входного аудиофайла в формат mp3. Ниже приведен пример вызова, который очень хорошо работает, когда я делаю это из cmd.exe
в Windows:
"ffmpeg.dll -i "inputPath\input.wav" -vn -ar 44100 -ac 2 -ab 320k -f mp3 -y "outputPath\output.mp3"
Пути к входным или выходным файлам могут содержать турецкие символы, такие как ş ö ç ğ
. Поэтому я должен позаботиться о кодировках StreamWriter
.
Мой фрагмент для StreamWriter
:
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.CreateNoWindow = false;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
Encoding tr_encoding = Encoding.GetEncoding("iso-8859-9");
using (StreamWriter sw = new StreamWriter(cmd.StandardInput.BaseStream, tr_encoding))
{
sw.WriteLine(ffmpeg_cmd + " & exit");
}
cmd.WaitForExit();
Но я всегда получаю ошибку No such file or directory
из ffmpeg
, потому что путь к файлу содержит папку с именем şşşş
, но мой StreamWriter
отправляет имя этой папки как ■■■
.
Как отправить аргументы командной строки в разных аргументах?