mirror of
https://github.com/muskit/MercuryConverter.git
synced 2026-06-02 20:24:26 -07:00
add audio export
This commit is contained in:
@@ -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,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;
|
||||||
|
|||||||
Reference in New Issue
Block a user