48 lines
2 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
|