add audio export

This commit is contained in:
Alex
2025-08-31 23:36:42 -07:00
parent f926a8b2da
commit 27a82ac451
2 changed files with 10 additions and 12 deletions
+9 -8
View File
@@ -1,11 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.IO; using System.IO;
using Avalonia.Data.Converters; using FFMpegCore;
using MercuryConverter.Data; using MercuryConverter.Data;
using MercuryConverter.UI.Views;
using MercuryConverter.Utility;
using SaturnData.Notation.Serialization; using SaturnData.Notation.Serialization;
namespace MercuryConverter.ExportOperation; namespace MercuryConverter.ExportOperation;
@@ -54,6 +51,8 @@ public class Exporter
/// AUDIO /// /// AUDIO ///
var audioKey = ec.Item1.AudioPath; var audioKey = ec.Item1.AudioPath;
var audioExportFileName = $"{audioKey}.{options.AudioFormat.ToString().ToLower()}"; var audioExportFileName = $"{audioKey}.{options.AudioFormat.ToString().ToLower()}";
var audioExportPath = Path.Combine(exportSongPath, audioExportFileName);
Console.WriteLine(audioExportFileName);
if (!finishedAudio.Contains(audioKey) && Database.AudioPaths.ContainsKey(audioKey)) if (!finishedAudio.Contains(audioKey) && Database.AudioPaths.ContainsKey(audioKey))
{ {
var audioSourcePath = Database.AudioPaths[audioKey]; var audioSourcePath = Database.AudioPaths[audioKey];
@@ -61,12 +60,14 @@ public class Exporter
// Copy/convert audio -- TODO // Copy/convert audio -- TODO
switch (options.AudioFormat) switch (options.AudioFormat)
{ {
case AudioFormat.MP3: case AudioFormat.WAV:
break; File.Copy(audioSourcePath, audioExportPath, true);
case AudioFormat.OGG:
break; break;
default: default:
File.Copy(audioSourcePath, Path.Combine(exportSongPath, audioExportFileName), true); FFMpegArguments
.FromFileInput(audioSourcePath)
.OutputToFile(audioExportPath)
.ProcessSynchronously();
break; break;
} }
finishedAudio.Add(audioKey); finishedAudio.Add(audioKey);
+1 -4
View File
@@ -1,9 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.IO;
using System.Linq; using System.Linq;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
@@ -11,7 +9,6 @@ using Avalonia.Data;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using Avalonia.Media; using Avalonia.Media;
using Avalonia.Media.Imaging; using Avalonia.Media.Imaging;
using Avalonia.Platform;
using Avalonia.Threading; using Avalonia.Threading;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
using MercuryConverter.Data; using MercuryConverter.Data;
@@ -151,7 +148,7 @@ public partial class Export : Panel
int.TryParse(NumThreads.Text, out var thr) && 1 <= thr && thr <= Environment.ProcessorCount int.TryParse(NumThreads.Text, out var thr) && 1 <= thr && thr <= Environment.ProcessorCount
); );
var ffmpegAvail = Utils.IsFFMpegAvailable(); var ffmpegAvail = Utils.FFMpegAvailable;
if (!ffmpegAvail) if (!ffmpegAvail)
RadioLeaveAudioWAV.IsChecked = true; RadioLeaveAudioWAV.IsChecked = true;
RadioLeaveAudioWAV.IsEnabled = ffmpegAvail; RadioLeaveAudioWAV.IsEnabled = ffmpegAvail;