add Track interleaving
This commit is contained in:
+4
-9
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user