#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
Сработало для меня!