Print ffmpeg log while waiting for autoenc to finish

This commit is contained in:
N00MKRAD
2021-01-06 21:44:09 +01:00
parent c31c6872e8
commit 36c8a17dff
8 changed files with 20 additions and 10 deletions

View File

@@ -51,16 +51,14 @@ namespace Flowframes
if (outLine == null || outLine.Data == null)
return;
string line = outLine.Data;
lastOutputFfmpeg = lastOutputFfmpeg + line + "\n";
lastOutputFfmpeg = lastOutputFfmpeg + "\n" + line;
bool hidden = currentLogMode == LogMode.Hidden;
bool replaceLastLine = currentLogMode == LogMode.OnlyLastLine;
string trimmedLine = line.Remove("q=-0.0").Remove("size=N/A").Remove("bitrate=N/A").TrimWhitespaces();
Logger.Log(trimmedLine, hidden, replaceLastLine, "ffmpeg");
if(line.Contains("Could not open file"))
{
Interpolate.Cancel("Failed to write frames - Make sure the folder is not restricted!");
}
Interpolate.Cancel($"FFmpeg Error: {line}");
}
static void FfmpegOutputHandlerSilent (object sendingProcess, DataReceivedEventArgs outLine)

View File

@@ -114,7 +114,7 @@ namespace Flowframes
public static async Task ConcatVideos(string concatFile, string outPath, int looptimes = -1)
{
Logger.Log($"Merging videos...");
Logger.Log($"Merging videos...", false, Logger.GetLastLine().Contains("frame"));
string loopStr = (looptimes > 0) ? $"-stream_loop {looptimes}" : "";
string vfrFilename = Path.GetFileName(concatFile);
string args = $" {loopStr} -vsync 1 -f concat -i {vfrFilename} -c copy -pix_fmt yuv420p -movflags +faststart {outPath.Wrap()}";

View File

@@ -235,6 +235,7 @@ namespace Flowframes
public void SetWorking(bool state, bool allowCancel = true)
{
Logger.Log($"SetWorking({state})", true);
SetProgress(-1);
Control[] controlsToDisable = new Control[] { runBtn, runStepBtn, stepSelector, settingsBtn, installerBtn };
Control[] controlsToHide = new Control[] { runBtn, runStepBtn, stepSelector };
progressCircle.Visible = state;

View File

@@ -124,7 +124,7 @@ namespace Flowframes.IO
// Video Export
if (key == "h264Crf") return WriteDefault(key, "20");
if (key == "h265Crf") return WriteDefault(key, "24");
if (key == "vp9Crf") return WriteDefault(key, "28");
if (key == "vp9Crf") return WriteDefault(key, "32");
if (key == "proResProfile") return WriteDefault(key, "2");
if (key == "aviCodec") return WriteDefault(key, "ffv1");
if (key == "aviColors") return WriteDefault(key, "yuv420p");

View File

@@ -18,7 +18,7 @@ namespace Flowframes
public static void Log(string s, bool hidden = false, bool replaceLastLine = false, string filename = "")
{
if (s == null)
if (string.IsNullOrWhiteSpace(s))
return;
Console.WriteLine(s);
@@ -97,5 +97,10 @@ namespace Flowframes
string[] lines = textbox.Text.SplitIntoLines();
return lines.Last();
}
public static void RemoveLastLine ()
{
textbox.Text = textbox.Text.Remove(textbox.Text.LastIndexOf(Environment.NewLine));
}
}
}

View File

@@ -201,7 +201,6 @@ namespace Flowframes.Main
bool discardThisFrame = (sceneDetection && (i + 2) < frameFiles.Length && sceneFrames.Contains(Path.GetFileNameWithoutExtension(frameFiles[i + 1].Name))); // i+2 is in scene detection folder, means i+1 is ugly interp frame
// TODO: Check if this is needed
// If loop is enabled, account for the extra frame added to the end for loop continuity
if (loopEnabled && i == (frameFiles.Length - 2))
interpFramesAmount = interpFramesAmount * 2;

View File

@@ -49,6 +49,8 @@ namespace Flowframes.Main
string[] frames = IOUtils.GetFilesSorted(outdir, $"*.{GetOutExt()}");
if (frames.Length > 1)
UpdateInterpProgress(frames.Length, targetFrames, frames[frames.Length - 1]);
if (frames.Length >= targetFrames)
break;
await Task.Delay(GetProgressWaitTime(frames.Length));
}
else
@@ -56,7 +58,6 @@ namespace Flowframes.Main
await Task.Delay(200);
}
}
Program.mainForm.SetProgress(-1);
}
public static void UpdateInterpProgress(int frames, int target, string latestFramePath = "")

View File

@@ -40,7 +40,7 @@ namespace Flowframes
hasShownError = false;
}
static void AiFinished (string aiName)
static async Task AiFinished (string aiName)
{
Program.mainForm.SetProgress(100);
InterpolateUtils.UpdateInterpProgress(IOUtils.GetAmountOfFiles(Interpolate.current.interpFolder, false, "*.png"), InterpolateUtils.targetFrames);
@@ -49,6 +49,12 @@ namespace Flowframes
logStr += " - Waiting for encoding to finish...";
Logger.Log(logStr);
processTime.Stop();
while (AvProcess.lastProcess != null && !AvProcess.lastProcess.HasExited)
{
string lastLine = AvProcess.lastOutputFfmpeg.SplitIntoLines().Last();
Logger.Log(lastLine.Trim(), false, Logger.GetLastLine().Contains("frame"));
await Task.Delay(1000);
}
}
public static async Task RunDainNcnn(string framesPath, string outPath, int targetFrames, int tilesize)