add Track interleaving

This commit is contained in:
davotoula
2026-03-17 19:51:58 +01:00
parent a2f29d5e2e
commit e7d11fdc84
@@ -154,8 +154,8 @@ class MetadataStripper {
val trackIndexMap = mutableMapOf<Int, Int>() val trackIndexMap = mutableMapOf<Int, Int>()
for (i in 0 until extractor.trackCount) { for (i in 0 until extractor.trackCount) {
val format = extractor.getTrackFormat(i) val format = extractor.getTrackFormat(i)
val newTrackIndex = muxer.addTrack(format) trackIndexMap[i] = muxer.addTrack(format)
trackIndexMap[i] = newTrackIndex extractor.selectTrack(i)
} }
muxer.start() muxer.start()
@@ -165,14 +165,12 @@ class MetadataStripper {
val buffer = java.nio.ByteBuffer.allocate(bufferSize) val buffer = java.nio.ByteBuffer.allocate(bufferSize)
val bufferInfo = MediaCodec.BufferInfo() val bufferInfo = MediaCodec.BufferInfo()
for (i in 0 until extractor.trackCount) {
extractor.selectTrack(i)
val outputTrack = trackIndexMap[i] ?: continue
while (true) { while (true) {
val sampleSize = extractor.readSampleData(buffer, 0) val sampleSize = extractor.readSampleData(buffer, 0)
if (sampleSize < 0) break if (sampleSize < 0) break
val outputTrack = trackIndexMap[extractor.sampleTrackIndex] ?: break
bufferInfo.offset = 0 bufferInfo.offset = 0
bufferInfo.size = sampleSize bufferInfo.size = sampleSize
bufferInfo.presentationTimeUs = extractor.sampleTime bufferInfo.presentationTimeUs = extractor.sampleTime
@@ -182,9 +180,6 @@ class MetadataStripper {
extractor.advance() extractor.advance()
} }
extractor.unselectTrack(i)
}
muxer.stop() muxer.stop()
muxerStarted = false muxerStarted = false
succeeded = true succeeded = true