Migrate audio transcoding from DASH to a single AAC (.m4a) file

This commit is contained in:
2026-06-02 19:05:11 +02:00
parent 2978b69654
commit b737d59cbe
11 changed files with 35 additions and 50 deletions
@@ -9,15 +9,15 @@ using Musify.Infrastructure.MassTransit.Logs;
namespace Musify.Infrastructure.MassTransit.Activities
{
internal class TranscodeDashAudioActivity(
internal class TranscodeAudioActivity(
IDatabase database,
IAudioTranscoderService audioTranscoder,
ILogger<TranscodeDashAudioActivity> logger)
: IActivity<TranscodeDashAudioArguments, TranscodeDashAudioLog>
ILogger<TranscodeAudioActivity> logger)
: IActivity<TranscodeAudioArguments, TranscodeAudioLog>
{
public const string ExecuteEndpointName = "transcode-dash-audio";
public const string ExecuteEndpointName = "transcode-audio";
public async Task<ExecutionResult> Execute(ExecuteContext<TranscodeDashAudioArguments> executeContext)
public async Task<ExecutionResult> Execute(ExecuteContext<TranscodeAudioArguments> executeContext)
{
var sourceFilePath = executeContext.GetVariable<string>(executeContext.Arguments.SourceFilePathVariable);
ArgumentNullException.ThrowIfNull(sourceFilePath, nameof(sourceFilePath));
@@ -40,7 +40,7 @@ namespace Musify.Infrastructure.MassTransit.Activities
{
await using (var fileStream = File.OpenRead(sourceFilePath))
{
await audioTranscoder.TranscodeToDashAsync(
await audioTranscoder.TranscodeToAudioFileAsync(
fileStream,
workingDirectory,
executeContext.CancellationToken);
@@ -68,7 +68,7 @@ namespace Musify.Infrastructure.MassTransit.Activities
}
}
public Task<CompensationResult> Compensate(CompensateContext<TranscodeDashAudioLog> compensateContext)
public Task<CompensationResult> Compensate(CompensateContext<TranscodeAudioLog> compensateContext)
{
try
{
@@ -86,4 +86,4 @@ namespace Musify.Infrastructure.MassTransit.Activities
}
}
}
}
}
@@ -1,7 +1,7 @@
namespace Musify.Infrastructure.MassTransit.Arguments
namespace Musify.Infrastructure.MassTransit.Arguments
{
public record TranscodeDashAudioArguments(
public record TranscodeAudioArguments(
Guid TrackId,
string SourceFilePathVariable,
string WorkingDirectoryVariable);
}
}
@@ -52,7 +52,7 @@ namespace Musify.Infrastructure.MassTransit
options.AddActivity<UpdatePlayListPictureActivity, UpdatePlayListPictureArguments, UpdatePlayListPictureLog>();
options.AddActivity<UpdateTrackPictureActivity, UpdateTrackPictureArguments, UpdateTrackPictureLog>();
options.AddActivity<DownloadFileFromBucketActivity, DownloadFileFromBucketArguments, DownloadFileFromBucketLog>();
options.AddActivity<TranscodeDashAudioActivity, TranscodeDashAudioArguments, TranscodeDashAudioLog>();
options.AddActivity<TranscodeAudioActivity, TranscodeAudioArguments, TranscodeAudioLog>();
options.AddActivity<TransferFilesToBucketActivity, TransferFilesToBucketArguments, TransferFilesToBucketLog>();
options.AddActivity<UpdateTrackAudioActivity, UpdateTrackAudioArguments, UpdateTrackAudioLog>();
options.AddActivity<UploadFileToBucketActivity, UploadFileToBucketArguments, UploadFileToBucketLog>();
@@ -178,10 +178,10 @@ namespace Musify.Infrastructure.MassTransit
busRegistrationContext,
DownloadFileFromBucketActivity.ExecuteEndpointName);
ConfigureActivityEndpoint<TranscodeDashAudioActivity, TranscodeDashAudioArguments, TranscodeDashAudioLog>(
ConfigureActivityEndpoint<TranscodeAudioActivity, TranscodeAudioArguments, TranscodeAudioLog>(
busFactoryConfigurator,
busRegistrationContext,
TranscodeDashAudioActivity.ExecuteEndpointName);
TranscodeAudioActivity.ExecuteEndpointName);
ConfigureActivityEndpoint<TransferFilesToBucketActivity, TransferFilesToBucketArguments, TransferFilesToBucketLog>(
busFactoryConfigurator,
@@ -0,0 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Logs
{
public record TranscodeAudioLog(string WorkingDirectory);
}
@@ -1,4 +0,0 @@
namespace Musify.Infrastructure.MassTransit.Logs
{
public record TranscodeDashAudioLog(string WorkingDirectory);
}
@@ -39,8 +39,8 @@ namespace Musify.Infrastructure.MassTransit.RoutingSlip.Builders
routingSlipBuilder.AddActivity(
ActivityNames.TranscodeAudio,
EndpointHelper.BuildExecuteActivityUri(TranscodeDashAudioActivity.ExecuteEndpointName),
new TranscodeDashAudioArguments(
EndpointHelper.BuildExecuteActivityUri(TranscodeAudioActivity.ExecuteEndpointName),
new TranscodeAudioArguments(
message.TrackId,
RoutingSlipVariableNames.Audio.SourceFilePath,
RoutingSlipVariableNames.Workflow.TemporalDirectory));