From b9d62edaad1777ed19748ed1bc615b4459f5ffe0 Mon Sep 17 00:00:00 2001 From: davotoula Date: Wed, 18 Mar 2026 10:28:13 +0100 Subject: [PATCH] feat: support multiple tracks in audio metadata stripping Co-Authored-By: Claude Opus 4.6 --- .../amethyst/service/uploads/MetadataStripper.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/MetadataStripper.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/MetadataStripper.kt index 1cca33853..8d5819154 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/MetadataStripper.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/MetadataStripper.kt @@ -257,8 +257,13 @@ class MetadataStripper { tempOutputFile = File.createTempFile("stripped_audio_", extension, context.cacheDir) muxer = MediaMuxer(tempOutputFile.absolutePath, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4) - extractor.selectTrack(0) - val outputTrack = muxer.addTrack(format) + val trackIndexMap = mutableMapOf() + for (i in 0 until extractor.trackCount) { + val trackFormat = extractor.getTrackFormat(i) + trackIndexMap[i] = muxer.addTrack(trackFormat) + extractor.selectTrack(i) + } + muxer.start() muxerStarted = true @@ -269,6 +274,8 @@ class MetadataStripper { val sampleSize = extractor.readSampleData(buffer, 0) if (sampleSize < 0) break + val outputTrack = trackIndexMap[extractor.sampleTrackIndex] ?: break + bufferInfo.offset = 0 bufferInfo.size = sampleSize bufferInfo.presentationTimeUs = extractor.sampleTime