Skip to content

Commit c6ca3fc

Browse files
committed
Revert "fix #40: 音频导出过程中的&first修正,消除WAV转MP3导致的延迟"
This reverts commit cfdd2c9
1 parent 187fe2e commit c6ca3fc

2 files changed

Lines changed: 11 additions & 22 deletions

File tree

MaiChartManager/Controllers/Music/MusicTransferController.cs

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
using Microsoft.AspNetCore.Mvc;
99
using Microsoft.VisualBasic.FileIO;
1010
using NAudio.Lame;
11-
using NAudio.Wave;
11+
using SimaiSharp;
1212
using Vanara.Windows.Forms;
13+
using Xabe.FFmpeg;
1314
using FolderBrowserDialog = System.Windows.Forms.FolderBrowserDialog;
1415

1516
namespace MaiChartManager.Controllers.Music;
@@ -548,26 +549,13 @@ public async Task ExportAsMaidata(int id, string assetDir, bool ignoreVideo = fa
548549
await using var zipStream = HttpContext.Response.BodyWriter.AsStream();
549550
using var zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true);
550551

551-
// 计算由于WAV转MP3导致的音频开头增加的空白段的长度,以便稍后通过&first参数给予修正。
552-
// 具体的情况和原理,详见https://github.com/MuNET-OSS/MaiChartManager/issues/40
553-
var wavPath = await AudioConvert.GetCachedWavPath(GetAudioCandidateIds(music));
554-
if (wavPath is null)
555-
{
556-
var message = BuildAudioResolveErrorMessage(music);
557-
logger.LogError("{message}", message);
558-
throw new FileNotFoundException(message);
559-
}
560-
using var wavReader = new WaveFileReader(wavPath);
561-
// 根据上面issue中的结论,wav转mp3引起的开头空白段的长度为1728采样点
562-
var audioDelay = 1728 / (double)wavReader.WaveFormat.SampleRate;
563-
564552
Ma2Parser parser = new();
565553
var simaiFile = new StringBuilder();
566554

567555
simaiFile.AppendLine($"&title={music.Name}");
568556
simaiFile.AppendLine($"&artist={music.Artist}");
569557
simaiFile.AppendLine($"&wholebpm={music.Bpm}");
570-
simaiFile.AppendLine($"&first={audioDelay:0.####}");
558+
simaiFile.AppendLine("&first=0.0333");
571559
simaiFile.AppendLine($"&shortid={music.Id}");
572560
simaiFile.AppendLine($"&genreid={music.GenreId}");
573561
var genre = StaticSettings.GenreList.FirstOrDefault(it => it.Id == music.GenreId);
@@ -646,10 +634,16 @@ public async Task ExportAsMaidata(int id, string assetDir, bool ignoreVideo = fa
646634
Comment = version?.GenreName,
647635
AlbumArt = img,
648636
};
637+
var wavPath = await AudioConvert.GetCachedWavPath(GetAudioCandidateIds(music));
638+
if (wavPath is null)
639+
{
640+
var message = BuildAudioResolveErrorMessage(music);
641+
logger.LogError("{message}", message);
642+
throw new FileNotFoundException(message);
643+
}
649644

650-
AudioConvert.ConvertWavToMp3Stream(wavReader, soundStream, tag);
645+
AudioConvert.ConvertWavPathToMp3Stream(wavPath, soundStream, tag);
651646
soundStream.Close();
652-
wavReader.Close();
653647

654648
if (!ignoreVideo && StaticSettings.MovieDataMap.TryGetValue(music.NonDxId, out var movieUsmPath))
655649
{

MaiChartManager/Utils/AudioConvert.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,6 @@ public static async Task<string> GetCachedWavPath(string acbPath, string awbPath
7777
public static void ConvertWavPathToMp3Stream(string wavPath, Stream mp3Stream, ID3TagData? tagData = null)
7878
{
7979
using var reader = new WaveFileReader(wavPath);
80-
ConvertWavToMp3Stream(reader, mp3Stream, tagData);
81-
}
82-
83-
public static void ConvertWavToMp3Stream(WaveFileReader reader, Stream mp3Stream, ID3TagData? tagData = null)
84-
{
8580
using var writer = new LameMP3FileWriter(mp3Stream, reader.WaveFormat, 256, tagData);
8681
reader.CopyTo(writer);
8782
}

0 commit comments

Comments
 (0)