【发布时间】:2022-01-08 03:01:47
【问题描述】:
我正在使用 ffmpeg 在视频中添加水印。我正在尝试在控制台上写日志,但我不知道为什么我的 MyEvent 事件没有调用。
public void ConvertVideo(string path)
{
string command = string.Format("-i {0} -i logo.png -filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" -codec:a copy output.mp4", Path);
ProcessStartInfo oInfo = new ProcessStartInfo(@"C:\ffmpeg\ffmpeg.exe", command)
{
CreateNoWindow = true,
RedirectStandardError = true,
RedirectStandardOutput = true,
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
RedirectStandardInput = true
};
Process p = new Process();
void MyEvent(object s, DataReceivedEventArgs e)
{
Console.Writeline(e.Data);
}
try
{
p.OutputDataReceived += MyEvent;
p.StartInfo = oInfo;
p.Start();
p.BeginOutputReadLine();
p.BeginErrorReadLine();
p.WaitForExit(10000000);
}
catch (Exception ex)
{
Console.Writeline(ex);
}
finally
{
if (p != null)
{
p.Close();
}
}
}
【问题讨论】:
-
如果我用
p.ErrorDataReceived += MyEvent;更新p.OutputDataReceived += MyEvent;行,那么它将在控制台上显示结果 -
您可以自己编写答案并附上简短说明,而不仅仅是更新您的问题并添加评论。这样,其他用户将能够从您的帖子中受益。另一方面,如果您认为问题/答案不那么相关,因为您只是在代码中犯了一个小错误,您可以完全删除问题和评论。