Skip to content

Commit 01eea2c

Browse files
authored
Merge pull request #2 from cp90-pixel/codex/fix-downloader-mp4-muxing-issue
Handle fragment base time in mp4 muxer
2 parents 8afb00d + 1de4da9 commit 01eea2c

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

app/src/main/java/org/schabi/newpipe/streams/Mp4FromDashWriter.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,12 @@ public void build(final SharpStream output) throws IOException {
185185
Mp4DashChunk chunk;
186186
while ((chunk = readers[i].getNextChunk(true)) != null) {
187187

188-
if (defaultMediaTime[i] < 1 && chunk.moof.traf.tfhd.defaultSampleDuration > 0) {
189-
defaultMediaTime[i] = chunk.moof.traf.tfhd.defaultSampleDuration;
188+
if (defaultMediaTime[i] < 1) {
189+
if (chunk.moof.traf.tfdt > 0) {
190+
defaultMediaTime[i] = (int) chunk.moof.traf.tfdt;
191+
} else if (chunk.moof.traf.tfhd.defaultSampleDuration > 0) {
192+
defaultMediaTime[i] = chunk.moof.traf.tfhd.defaultSampleDuration;
193+
}
190194
}
191195

192196
read += chunk.moof.traf.trun.chunkSize;
@@ -763,8 +767,8 @@ private void makeTrak(final int index, final long duration, final int defaultMed
763767
final int mediaTime;
764768

765769
if (tracks[index].trak.edstElst == null) {
766-
// is a audio track ¿is edst/elst optional for audio tracks?
767-
mediaTime = 0x00; // ffmpeg set this value as zero, instead of defaultMediaTime
770+
// there is no edit list, use the first decode timestamp as start time
771+
mediaTime = defaultMediaTime;
768772
bMediaRate = 0x00010000;
769773
} else {
770774
mediaTime = (int) tracks[index].trak.edstElst.mediaTime;

0 commit comments

Comments
 (0)