Отображение процесса конвертирования видео FFMPEG с Progress Bar в С# - C#
Формулировка задачи:
У меня проект Windows Form. Необходимо чтобы на форме отображался процесс конвертирования, возможно с компонентами: label или Progress Bar.
У меня такой код:
Облазил весь google и не где нет информации.
А что Вы думаете по этому поводу?
Process p = new Process(); ProcessStartInfo info = new ProcessStartInfo(); info.FileName = Application.StartupPath + "\\ffmpeg_files\\ffmpeg.exe"; info.WindowStyle = ProcessWindowStyle.Hidden; // Предоставляет возможность скрыть консольное окно ffmpeg, при выполнении конвертации. p.StartInfo.CreateNoWindow = false; info.Arguments = " -i " + randomString + ext + " -ar 22050 -ab 128k -f flv -b 700k -s 640x480 -y " + randomString + ".flv"; p = Process.Start(info); p.WaitForExit(); p.Close(); txtFilename.Text = randomString + ".flv"; info.Arguments = " -i " + randomString + ".flv" + " -vframes 1 -s 640x480 " + randomString + ".jpg"; p = Process.Start(info); p.WaitForExit(); p.Close()
Нет, серьёзно ребята! Информацию, которую я за целую неделю нашел, это для ASP.NET.
Если у Вас много работы и мало времени, то подскажите хоть "откуда копать".
Пусть процесс конвертации отображается не в прогресс баре, а в чем-то другом. Хоть что-то.
Решение задачи: «Отображение процесса конвертирования видео FFMPEG с Progress Bar в С#»
textual
Листинг программы
private void button1_Click(object sender, EventArgs e) { var button = sender as Button; if (worker.IsBusy) worker.CancelAsync(); else { button.Text = "Stop"; worker.RunWorkerAsync(); } } void Worker_DoWork(object sender, DoWorkEventArgs e) { var worker = sender as BackgroundWorker; Process p = new Process(); var info = p.StartInfo; info.FileName = info.FileName = Application.StartupPath + "\\ffmpeg_files\\ffmpeg.exe"; info.Arguments = " -i " + randomString + ext + " -ar 22050 -ab 128k -f flv -b 700k -s 640x480 -y " + randomString + ".flv"; info.CreateNoWindow = true; info.UseShellExecute = false; info.RedirectStandardError = true; info.RedirectStandardInput = true; try { p = Process.Start(info); string line; while ((line = p.StandardError.ReadLine()) != null) { if (worker.CancellationPending) { p.StandardInput.Write('q'); e.Cancel = true; } if (line.StartsWith("frame")) worker.ReportProgress(0, line); } p.WaitForExit(); } finally { if (!p.HasExited) p.Kill(); p.Dispose(); } } private void Worker_ProgressChanged(object sender, ProgressChangedEventArgs e) { label.Text = e.UserState.ToString(); } private void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Error != null) MessageBox.Show(e.Error.Message, "Conversion failed", MessageBoxButtons.OK, MessageBoxIcon.Error); else if (e.Cancelled) MessageBox.Show("Conversion has been cancelled.", "Conversion cancelled", MessageBoxButtons.OK, MessageBoxIcon.Information); else MessageBox.Show("Finished.", "Conversion complete", MessageBoxButtons.OK, MessageBoxIcon.Information); convertButton.Text = "Start"; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д