JD2022-TU1/main/tools/apps/AutoDance/Project/Source/Util/WaveUtils.cs

48 lines
2 KiB
C#

using System.Globalization;
using System.IO;
using System.Reflection;
using JD.LogService;
using TeaBox;
using TeaBox.Macros;
namespace AutoDance.Model
{
public class WaveUtils
{
private static readonly string OggConverter = Path.Combine(ExecutableDirectory, @"Resources\oggenc2.exe");
private static readonly string Sox = Path.Combine(ExecutableDirectory, @"Resources\Sox\sox.exe");
private static string ExecutableDirectory
{
get { return Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); }
}
public static bool ExportWave(ILogger log, string inPath, string outPath, float startTime, float duration, float fadeInDuration, float fadeOutDuration, float volumeDecibels)
{
var arguments = string.Format("{0} {1} trim {2} {3} fade t {4} {3} {5} gain {6}",
inPath,
outPath,
startTime.ToString(CultureInfo.InvariantCulture),
duration.ToString(CultureInfo.InvariantCulture),
fadeInDuration.ToString(CultureInfo.InvariantCulture),
fadeOutDuration.ToString(CultureInfo.InvariantCulture),
volumeDecibels.ToString(CultureInfo.InvariantCulture));
ProcessTask task = ProcessTask.Create(Sox, arguments, ExecutableDirectory);
var context = new ExecutionContext(log);
task.Execute(context);
return !context.IsFailed;
}
public static bool ConvertToOgg(ILogger log, string inPath, string outPath)
{
ProcessTask task = ProcessTask.Create(OggConverter, $"{inPath} -o {outPath}", ExecutableDirectory);
var context = new ExecutionContext(log);
task.Execute(context);
return !context.IsFailed;
}
}
}