Derive Format.frameRate for MP4 videos

Issue: #5598
PiperOrigin-RevId: 237067179
This commit is contained in:
olly 2019-03-06 17:58:31 +00:00 committed by Oliver Woodman
parent f35dbeb567
commit 851134ec16
5 changed files with 14 additions and 8 deletions

View file

@ -401,21 +401,27 @@ public final class Mp4Extractor implements Extractor, SeekMap {
for (int i = 0; i < trackCount; i++) {
TrackSampleTable trackSampleTable = trackSampleTables.get(i);
Track track = trackSampleTable.track;
long trackDurationUs =
track.durationUs != C.TIME_UNSET ? track.durationUs : trackSampleTable.durationUs;
durationUs = Math.max(durationUs, trackDurationUs);
Mp4Track mp4Track = new Mp4Track(track, trackSampleTable,
extractorOutput.track(i, track.type));
// Each sample has up to three bytes of overhead for the start code that replaces its length.
// Allow ten source samples per output sample, like the platform extractor.
int maxInputSize = trackSampleTable.maximumSize + 3 * 10;
Format format = track.format.copyWithMaxInputSize(maxInputSize);
if (track.type == C.TRACK_TYPE_VIDEO
&& trackDurationUs > 0
&& trackSampleTable.sampleCount > 1) {
float frameRate = trackSampleTable.sampleCount / (trackDurationUs / 1000000f);
format = format.copyWithFrameRate(frameRate);
}
format =
MetadataUtil.getFormatWithMetadata(
track.type, format, udtaMetadata, mdtaMetadata, gaplessInfoHolder);
mp4Track.trackOutput.format(format);
durationUs =
Math.max(
durationUs,
track.durationUs != C.TIME_UNSET ? track.durationUs : trackSampleTable.durationUs);
if (track.type == C.TRACK_TYPE_VIDEO && firstVideoTrackIndex == C.INDEX_UNSET) {
firstVideoTrackIndex = tracks.size();
}

View file

@ -12,7 +12,7 @@ track 0:
maxInputSize = 36722
width = 1080
height = 720
frameRate = -1.0
frameRate = 29.970028
rotationDegrees = 0
pixelWidthHeightRatio = 1.0
channelCount = -1

View file

@ -12,7 +12,7 @@ track 0:
maxInputSize = 36722
width = 1080
height = 720
frameRate = -1.0
frameRate = 29.970028
rotationDegrees = 0
pixelWidthHeightRatio = 1.0
channelCount = -1

View file

@ -12,7 +12,7 @@ track 0:
maxInputSize = 36722
width = 1080
height = 720
frameRate = -1.0
frameRate = 29.970028
rotationDegrees = 0
pixelWidthHeightRatio = 1.0
channelCount = -1

View file

@ -12,7 +12,7 @@ track 0:
maxInputSize = 36722
width = 1080
height = 720
frameRate = -1.0
frameRate = 29.970028
rotationDegrees = 0
pixelWidthHeightRatio = 1.0
channelCount = -1