youtube-dl перерабатывает заголовок видео в строку сбоев

#c# #wpf #youtube-dl

#c# #wpf #youtube-dl

Вопрос:

Я использую Visual Studio 2015, C #, WPF.

Я пытаюсь запустить youtube-dl.exe на видео и преобразует заголовок в string .

Я запускаю команду через using Process . Это работает при запуске C# программы в режиме Debug или Release через Visual Studio, но сбой происходит только при запуске скомпилированной exe программы самостоятельно, вне Visual Studio.

youtube-dl Команда также работает при вставке копии в cmd.exe .

  youtube-dl --get-filename -o "%(title)s.mp4" https://www.youtube.com/watch?v=TWNhqCHw0qc
  

 string title = string.Empty;

using (Process p = new Process())
{
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.CreateNoWindow = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.StandardOutputEncoding = Encoding.UTF8;
    p.StartInfo.RedirectStandardError = true;
    p.StartInfo.StandardErrorEncoding = Encoding.UTF8;
    p.StartInfo.FileName = "youtube-dl";
    p.StartInfo.Arguments = "--get-filename -o "%(title)s" "    "https://www.youtube.com/watch?v=TWNhqCHw0qc";

    p.Start();

    var output = new List<string>();
    while (p.StandardOutput.Peek() > -1)
    {
        output.Add(p.StandardOutput.ReadLine());
    }

    title = string.Join("", output);
}

MessageBox.Show(title);
  

Комментарии:

1. Какую ошибку вы получаете при запуске вашей программы как .exe ?

2. @dcg Это дает тот же результат.

3. @dcg Вы имеете в виду использование youtube-dl.exe в аргументах? Программа зависает, и Windows сообщает, что не отвечает.

4. @dcg Я поместил его в try / catch, и исключение гласит System.InvalidOperationException: The Process object must have the UseShellExecute property set to false in order to redirect IO streams.

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

Ответ №1:

Есть опция командной строки:

 youtube-dl --encoding UTF8 
  

Сработало для меня!