Add trim audio support to multipart files.

This commit is contained in:
Michael Bucari-Tovo 2022-05-07 22:34:28 -06:00
parent 510ed95590
commit 0f6b0bf9fe
2 changed files with 15 additions and 13 deletions

View File

@ -5,8 +5,8 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="AAXClean" Version="0.4.4" /> <PackageReference Include="AAXClean" Version="0.4.5" />
<PackageReference Include="AAXClean.Codecs" Version="0.2.4" /> <PackageReference Include="AAXClean.Codecs" Version="0.2.5" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -64,7 +64,7 @@ That naming may not be desirable for everyone, but it's an easy change to instea
var chapters = DownloadLicense.ChapterInfo.Chapters.ToList(); var chapters = DownloadLicense.ChapterInfo.Chapters.ToList();
// Ensure split files are at least minChapterLength in duration. // Ensure split files are at least minChapterLength in duration.
var splitChapters = new ChapterInfo(); var splitChapters = new ChapterInfo(DownloadLicense.ChapterInfo.StartOffset);
var runningTotal = TimeSpan.Zero; var runningTotal = TimeSpan.Zero;
string title = ""; string title = "";
@ -86,16 +86,18 @@ That naming may not be desirable for everyone, but it's an easy change to instea
// reset, just in case // reset, just in case
multiPartFilePaths.Clear(); multiPartFilePaths.Clear();
ConversionResult result;
AaxFile.ConversionProgressUpdate += AaxFile_ConversionProgressUpdate; AaxFile.ConversionProgressUpdate += AaxFile_ConversionProgressUpdate;
if (OutputFormat == OutputFormat.M4b) if (OutputFormat == OutputFormat.M4b)
ConvertToMultiMp4a(splitChapters); result = ConvertToMultiMp4a(splitChapters);
else else
ConvertToMultiMp3(splitChapters); result = ConvertToMultiMp3(splitChapters);
AaxFile.ConversionProgressUpdate -= AaxFile_ConversionProgressUpdate; AaxFile.ConversionProgressUpdate -= AaxFile_ConversionProgressUpdate;
Step_DownloadAudiobook_End(zeroProgress); Step_DownloadAudiobook_End(zeroProgress);
var success = !IsCanceled; var success = result == ConversionResult.NoErrorsDetected;
if (success) if (success)
foreach (var path in multiPartFilePaths) foreach (var path in multiPartFilePaths)
@ -104,22 +106,22 @@ That naming may not be desirable for everyone, but it's an easy change to instea
return success; return success;
} }
private void ConvertToMultiMp4a(ChapterInfo splitChapters) private ConversionResult ConvertToMultiMp4a(ChapterInfo splitChapters)
{ {
var chapterCount = 0; var chapterCount = 0;
AaxFile.ConvertToMultiMp4a(splitChapters, newSplitCallback => return AaxFile.ConvertToMultiMp4a(splitChapters, newSplitCallback =>
createOutputFileStream(++chapterCount, splitChapters, newSplitCallback) createOutputFileStream(++chapterCount, splitChapters, newSplitCallback),
); DownloadLicense.TrimOutputToChapterLength);
} }
private void ConvertToMultiMp3(ChapterInfo splitChapters) private ConversionResult ConvertToMultiMp3(ChapterInfo splitChapters)
{ {
var chapterCount = 0; var chapterCount = 0;
AaxFile.ConvertToMultiMp3(splitChapters, newSplitCallback => return AaxFile.ConvertToMultiMp3(splitChapters, newSplitCallback =>
{ {
createOutputFileStream(++chapterCount, splitChapters, newSplitCallback); createOutputFileStream(++chapterCount, splitChapters, newSplitCallback);
((NAudio.Lame.LameConfig)newSplitCallback.UserState).ID3.Track = chapterCount.ToString(); ((NAudio.Lame.LameConfig)newSplitCallback.UserState).ID3.Track = chapterCount.ToString();
}); }, null, DownloadLicense.TrimOutputToChapterLength);
} }
private void createOutputFileStream(int currentChapter, ChapterInfo splitChapters, NewSplitCallback newSplitCallback) private void createOutputFileStream(int currentChapter, ChapterInfo splitChapters, NewSplitCallback newSplitCallback)