1
mirror of https://github.com/n00mkrad/flowframes synced 2024-09-29 14:38:03 +02:00

Support for lossless WMA (wmav1/wmav2) transfer into MKV output

This commit is contained in:
N00MKRAD 2021-03-24 20:26:07 +01:00
parent 6a45ba01a7
commit d3ce382b75
3 changed files with 14 additions and 25 deletions

View File

@ -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<float> GetFpsFolderOrVideo(string path)
{
try

View File

@ -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<int> encodedFrameLines = new List<int>();
public static List<int> unencodedFrameLines = new List<int>();
@ -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);

View File

@ -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";