diff --git a/Code/IO/IOUtils.cs b/Code/IO/IOUtils.cs index 92a10cd..6a8368b 100644 --- a/Code/IO/IOUtils.cs +++ b/Code/IO/IOUtils.cs @@ -453,20 +453,6 @@ namespace Flowframes.IO } } - public static string GetAudioFile (string basePath) - { - string[] exts = new string[] { "m4a", "wav", "ogg", "mp2", "mp3" }; - - foreach(string ext in exts) - { - string filename = Path.ChangeExtension(basePath, ext); - if (File.Exists(filename)) - return filename; - } - - return null; - } - public static async Task GetFpsFolderOrVideo(string path) { try diff --git a/Code/Main/AutoEncode.cs b/Code/Main/AutoEncode.cs index a5a89d5..8ffb9c1 100644 --- a/Code/Main/AutoEncode.cs +++ b/Code/Main/AutoEncode.cs @@ -16,8 +16,8 @@ namespace Flowframes.Main { static string interpFramesFolder; static string videoChunksFolder; - public static int chunkSize = 125; // Encode every n frames - public static int safetyBufferFrames = 90; // Ignore latest n frames to avoid using images that haven't been fully encoded yet + public static int chunkSize; // Encode every n frames + public static int safetyBufferFrames; // Ignore latest n frames to avoid using images that haven't been fully encoded yet public static string[] interpFramesLines; public static List encodedFrameLines = new List(); public static List unencodedFrameLines = new List(); @@ -33,7 +33,7 @@ namespace Flowframes.Main safetyBufferFrames = 90; if (Interpolate.current.ai.aiName.ToUpper().Contains("NCNN")) - safetyBufferFrames = Config.GetInt("autoEncSafeBufferNcnn", 160); + safetyBufferFrames = Config.GetInt("autoEncSafeBufferNcnn", 150); if (Interpolate.current.ai.aiName == Networks.rifeCuda.aiName) safetyBufferFrames = Config.GetInt("autoEncSafeBufferRifeCuda", 90); diff --git a/Code/Media/FFmpegUtils.cs b/Code/Media/FFmpegUtils.cs index 6e23d5e..914b648 100644 --- a/Code/Media/FFmpegUtils.cs +++ b/Code/Media/FFmpegUtils.cs @@ -111,25 +111,26 @@ namespace Flowframes.Media public static bool ContainerSupportsAudioFormat (Interpolate.OutMode outMode, string format) { + bool supported = false; string alias = GetAudioExt(format); - Logger.Log($"Checking if {outMode} supports audio format '{format}' (alias {alias})", true, false, "ffmpeg"); string[] formatsMp4 = new string[] { "m4a", "ac3", "dts" }; - string[] formatsMkv = new string[] { "m4a", "ac3", "dts", "ogg", "mp2", "wav" }; + string[] formatsMkv = new string[] { "m4a", "ac3", "dts", "ogg", "mp2", "mp3", "wav", "wma" }; string[] formatsWebm = new string[] { "ogg" }; string[] formatsProres = new string[] { "m4a", "ac3", "dts", "wav" }; string[] formatsAvi = new string[] { "m4a", "ac3", "dts" }; switch (outMode) { - case Interpolate.OutMode.VidMp4: return formatsMp4.Contains(alias); - case Interpolate.OutMode.VidMkv: return formatsMkv.Contains(alias); - case Interpolate.OutMode.VidWebm: return formatsWebm.Contains(alias); - case Interpolate.OutMode.VidProRes: return formatsProres.Contains(alias); - case Interpolate.OutMode.VidAvi: return formatsAvi.Contains(alias); + case Interpolate.OutMode.VidMp4: supported = formatsMp4.Contains(alias); break; + case Interpolate.OutMode.VidMkv: supported = formatsMkv.Contains(alias); break; + case Interpolate.OutMode.VidWebm: supported = formatsWebm.Contains(alias); break; + case Interpolate.OutMode.VidProRes: supported = formatsProres.Contains(alias); break; + case Interpolate.OutMode.VidAvi: supported = formatsAvi.Contains(alias); break; } - return false; + Logger.Log($"Checking if {outMode} supports audio format '{format}' ({alias}): {supported}", true, false, "ffmpeg"); + return supported; } public static string GetExt(Interpolate.OutMode outMode, bool dot = true) @@ -171,6 +172,8 @@ namespace Flowframes.Media case "dts": return "dts"; case "alac": return "wav"; case "flac": return "wav"; + case "wmav1": return "wma"; + case "wmav2": return "wma"; } return "unsupported";