gpt4 book ai didi

C#将ffmpeg输出实时重定向到文本框

转载 作者:行者123 更新时间:2023-12-04 22:48:19 25 4
gpt4 key购买 nike

所以我一直在通过stackoverflow阅读很多内容,我发现很多问题试图处理与我类似的问题,但没有一个解决方案对我有用。所以这就是我所拥有的:

我有一个 WPF GUI 应用程序,它通过以下代码启动 ffmpeg:

        private void convertbutton_Click(object sender, RoutedEventArgs e)
{
string resdir = AppDomain.CurrentDomain.BaseDirectory + "\\res";
Extract("ADC", AppDomain.CurrentDomain.BaseDirectory + "\\res", "res", "ffmpeg.exe");

string ffdir = AppDomain.CurrentDomain.BaseDirectory + "\\res\\ffmpeg.exe";
string arg = @"-progress progresslog.txt -y -activation_bytes ";
string arg1 = @" -i ";
string arg2 = @" -ab 80k -vn ";
string abytes = bytebox.Text;
string arguments = arg + abytes + arg1 + openFileDialog1.FileName + arg2 + saveFileDialog1.FileName;

Process ffm = new Process();
ffm.StartInfo.FileName = ffdir;
ffm.StartInfo.Arguments = arguments;
ffm.StartInfo.CreateNoWindow = true;
ffm.StartInfo.RedirectStandardOutput = true;
ffm.StartInfo.RedirectStandardError = true;
ffm.StartInfo.UseShellExecute = false;
ffm.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory();
ffm.Start();
ffm.WaitForExit();

ffm.Close();

MessageBox.Show("Conversion Complete!");

File.Delete("progresslog.txt");
Directory.Delete(resdir, true);
}

所以在这个应用程序上我还有其他进程,它们在完成他们正在做的事情后将它们的输出显示到文本框,所以但是由于 ffmpeg 在 cmd 输出中输出它的转换进度,我需要准确地在文本框中显示即时的。

而且我很确定 ffmpeg 输出到 stderr 与 ffprobe 相同。

我会很感激任何帮助,因为到目前为止,谷歌搜索的日子对我没有任何帮助。
提前致谢。

最佳答案

尝试在 ffm.Start() 周围添加这些行.这应该写成 ffmpeg输出到调试控制台。如果可行,您可以调整代码以将输出写入 WPF GUI。

ffm.EnableRaisingEvents = true;
ffm.OutputDataReceived += (s, ea) => { Debug.WriteLine($"STD: {ea.Data}"); };
ffm.ErrorDataReceived += (s, ea) => { Debug.WriteLine($"ERR: {ea.Data}"); };
ffm.Start();
ffm.BeginOutputReadLine();
ffm.BeginErrorReadLine();

另请参阅 SO post

关于C#将ffmpeg输出实时重定向到文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49388618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com