Allow missing full_range_flag in colr box with type=nclx
Test file produced with: $ MP4Box -add "sample.mp4#video:colr=nclc,1,1,1" -new sample_18byte_nclx_colr.mp4 And then manually changing the `nclc` bytes to `nclx`. This produces an 18-byte `colr` box with type `nclx`. The bitstream of this file does not contain HDR content, so the file itself is invalid for playback with a real decoder, but adding the box is enough to test the extractor change in this commit. (aside: MP4Box will let you pass `nclx`, but it requires 4 parameters, i.e. it requires the full_range_flag to be set, resulting in a valid 19-byte colr box) #minor-release Issue: #9332 PiperOrigin-RevId: 405842520
This commit is contained in:
parent
031f26ba61
commit
e8fdab353f
@ -1198,14 +1198,19 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
|
|||||||
}
|
}
|
||||||
} else if (childAtomType == Atom.TYPE_colr) {
|
} else if (childAtomType == Atom.TYPE_colr) {
|
||||||
int colorType = parent.readInt();
|
int colorType = parent.readInt();
|
||||||
boolean isNclx = colorType == TYPE_nclx;
|
if (colorType == TYPE_nclx || colorType == TYPE_nclc) {
|
||||||
if (isNclx || colorType == TYPE_nclc) {
|
|
||||||
// For more info on syntax, see Section 8.5.2.2 in ISO/IEC 14496-12:2012(E) and
|
// For more info on syntax, see Section 8.5.2.2 in ISO/IEC 14496-12:2012(E) and
|
||||||
// https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html.
|
// https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html.
|
||||||
int colorPrimaries = parent.readUnsignedShort();
|
int colorPrimaries = parent.readUnsignedShort();
|
||||||
int transferCharacteristics = parent.readUnsignedShort();
|
int transferCharacteristics = parent.readUnsignedShort();
|
||||||
parent.skipBytes(2); // matrix_coefficients.
|
parent.skipBytes(2); // matrix_coefficients.
|
||||||
boolean fullRangeFlag = isNclx && (parent.readUnsignedByte() & 0b10000000) != 0;
|
|
||||||
|
// Only try and read full_range_flag if the box is long enough. It should be present in
|
||||||
|
// all colr boxes with type=nclx (Section 8.5.2.2 in ISO/IEC 14496-12:2012(E)) but some
|
||||||
|
// device cameras record videos with type=nclx without this final flag (and therefore
|
||||||
|
// size=18): https://github.com/google/ExoPlayer/issues/9332
|
||||||
|
boolean fullRangeFlag =
|
||||||
|
childAtomSize == 19 && (parent.readUnsignedByte() & 0b10000000) != 0;
|
||||||
colorInfo =
|
colorInfo =
|
||||||
new ColorInfo(
|
new ColorInfo(
|
||||||
ColorInfo.isoColorPrimariesToColorSpace(colorPrimaries),
|
ColorInfo.isoColorPrimariesToColorSpace(colorPrimaries),
|
||||||
|
@ -103,6 +103,17 @@ public final class Mp4ExtractorTest {
|
|||||||
Mp4Extractor::new, "media/mp4/sample_with_color_info.mp4", simulationConfig);
|
Mp4Extractor::new, "media/mp4/sample_with_color_info.mp4", simulationConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test case for https://github.com/google/ExoPlayer/issues/9332. The file contains a colr box
|
||||||
|
* with size=18 and type=nclx. This is not valid according to the spec (size must be 19), but
|
||||||
|
* files like this exist in the wild.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void mp4Sample18ByteNclxColr() throws Exception {
|
||||||
|
ExtractorAsserts.assertBehavior(
|
||||||
|
Mp4Extractor::new, "media/mp4/sample_18byte_nclx_colr.mp4", simulationConfig);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void mp4SampleWithDolbyTrueHDTrack() throws Exception {
|
public void mp4SampleWithDolbyTrueHDTrack() throws Exception {
|
||||||
ExtractorAsserts.assertBehavior(
|
ExtractorAsserts.assertBehavior(
|
||||||
|
@ -0,0 +1,148 @@
|
|||||||
|
seekMap:
|
||||||
|
isSeekable = true
|
||||||
|
duration = 1001000
|
||||||
|
getPosition(0) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(1) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(500500) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(1001000) = [[timeUs=0, position=1160]]
|
||||||
|
numberOfTracks = 1
|
||||||
|
track 0:
|
||||||
|
total output bytes = 89876
|
||||||
|
sample count = 30
|
||||||
|
format 0:
|
||||||
|
id = 1
|
||||||
|
sampleMimeType = video/avc
|
||||||
|
codecs = avc1.64001F
|
||||||
|
maxInputSize = 36722
|
||||||
|
width = 1080
|
||||||
|
height = 720
|
||||||
|
frameRate = 29.970028
|
||||||
|
colorInfo:
|
||||||
|
colorSpace = 1
|
||||||
|
colorRange = 2
|
||||||
|
colorTransfer = 3
|
||||||
|
hdrStaticInfo = length 0, hash 0
|
||||||
|
initializationData:
|
||||||
|
data = length 29, hash 4746B5D9
|
||||||
|
data = length 10, hash 7A0D0F2B
|
||||||
|
sample 0:
|
||||||
|
time = 0
|
||||||
|
flags = 1
|
||||||
|
data = length 36692, hash D216076E
|
||||||
|
sample 1:
|
||||||
|
time = 66733
|
||||||
|
flags = 0
|
||||||
|
data = length 5312, hash D45D3CA0
|
||||||
|
sample 2:
|
||||||
|
time = 33366
|
||||||
|
flags = 0
|
||||||
|
data = length 599, hash 1BE7812D
|
||||||
|
sample 3:
|
||||||
|
time = 200200
|
||||||
|
flags = 0
|
||||||
|
data = length 7735, hash 4490F110
|
||||||
|
sample 4:
|
||||||
|
time = 133466
|
||||||
|
flags = 0
|
||||||
|
data = length 987, hash 560B5036
|
||||||
|
sample 5:
|
||||||
|
time = 100100
|
||||||
|
flags = 0
|
||||||
|
data = length 673, hash ED7CD8C7
|
||||||
|
sample 6:
|
||||||
|
time = 166833
|
||||||
|
flags = 0
|
||||||
|
data = length 523, hash 3020DF50
|
||||||
|
sample 7:
|
||||||
|
time = 333666
|
||||||
|
flags = 0
|
||||||
|
data = length 6061, hash 736C72B2
|
||||||
|
sample 8:
|
||||||
|
time = 266933
|
||||||
|
flags = 0
|
||||||
|
data = length 992, hash FE132F23
|
||||||
|
sample 9:
|
||||||
|
time = 233566
|
||||||
|
flags = 0
|
||||||
|
data = length 623, hash 5B2C1816
|
||||||
|
sample 10:
|
||||||
|
time = 300300
|
||||||
|
flags = 0
|
||||||
|
data = length 421, hash 742E69C1
|
||||||
|
sample 11:
|
||||||
|
time = 433766
|
||||||
|
flags = 0
|
||||||
|
data = length 4899, hash F72F86A1
|
||||||
|
sample 12:
|
||||||
|
time = 400400
|
||||||
|
flags = 0
|
||||||
|
data = length 568, hash 519A8E50
|
||||||
|
sample 13:
|
||||||
|
time = 367033
|
||||||
|
flags = 0
|
||||||
|
data = length 620, hash 3990AA39
|
||||||
|
sample 14:
|
||||||
|
time = 567233
|
||||||
|
flags = 0
|
||||||
|
data = length 5450, hash F06EC4AA
|
||||||
|
sample 15:
|
||||||
|
time = 500500
|
||||||
|
flags = 0
|
||||||
|
data = length 1051, hash 92DFA63A
|
||||||
|
sample 16:
|
||||||
|
time = 467133
|
||||||
|
flags = 0
|
||||||
|
data = length 874, hash 69587FB4
|
||||||
|
sample 17:
|
||||||
|
time = 533866
|
||||||
|
flags = 0
|
||||||
|
data = length 781, hash 36BE495B
|
||||||
|
sample 18:
|
||||||
|
time = 700700
|
||||||
|
flags = 0
|
||||||
|
data = length 4725, hash AC0C8CD3
|
||||||
|
sample 19:
|
||||||
|
time = 633966
|
||||||
|
flags = 0
|
||||||
|
data = length 1022, hash 5D8BFF34
|
||||||
|
sample 20:
|
||||||
|
time = 600600
|
||||||
|
flags = 0
|
||||||
|
data = length 790, hash 99413A99
|
||||||
|
sample 21:
|
||||||
|
time = 667333
|
||||||
|
flags = 0
|
||||||
|
data = length 610, hash 5E129290
|
||||||
|
sample 22:
|
||||||
|
time = 834166
|
||||||
|
flags = 0
|
||||||
|
data = length 2751, hash 769974CB
|
||||||
|
sample 23:
|
||||||
|
time = 767433
|
||||||
|
flags = 0
|
||||||
|
data = length 745, hash B78A477A
|
||||||
|
sample 24:
|
||||||
|
time = 734066
|
||||||
|
flags = 0
|
||||||
|
data = length 621, hash CF741E7A
|
||||||
|
sample 25:
|
||||||
|
time = 800800
|
||||||
|
flags = 0
|
||||||
|
data = length 505, hash 1DB4894E
|
||||||
|
sample 26:
|
||||||
|
time = 967633
|
||||||
|
flags = 0
|
||||||
|
data = length 1268, hash C15348DC
|
||||||
|
sample 27:
|
||||||
|
time = 900900
|
||||||
|
flags = 0
|
||||||
|
data = length 880, hash C2DE85D0
|
||||||
|
sample 28:
|
||||||
|
time = 867533
|
||||||
|
flags = 0
|
||||||
|
data = length 530, hash C98BC6A8
|
||||||
|
sample 29:
|
||||||
|
time = 934266
|
||||||
|
flags = 536870912
|
||||||
|
data = length 568, hash 4FE5C8EA
|
||||||
|
tracksEnded = true
|
@ -0,0 +1,148 @@
|
|||||||
|
seekMap:
|
||||||
|
isSeekable = true
|
||||||
|
duration = 1001000
|
||||||
|
getPosition(0) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(1) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(500500) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(1001000) = [[timeUs=0, position=1160]]
|
||||||
|
numberOfTracks = 1
|
||||||
|
track 0:
|
||||||
|
total output bytes = 89876
|
||||||
|
sample count = 30
|
||||||
|
format 0:
|
||||||
|
id = 1
|
||||||
|
sampleMimeType = video/avc
|
||||||
|
codecs = avc1.64001F
|
||||||
|
maxInputSize = 36722
|
||||||
|
width = 1080
|
||||||
|
height = 720
|
||||||
|
frameRate = 29.970028
|
||||||
|
colorInfo:
|
||||||
|
colorSpace = 1
|
||||||
|
colorRange = 2
|
||||||
|
colorTransfer = 3
|
||||||
|
hdrStaticInfo = length 0, hash 0
|
||||||
|
initializationData:
|
||||||
|
data = length 29, hash 4746B5D9
|
||||||
|
data = length 10, hash 7A0D0F2B
|
||||||
|
sample 0:
|
||||||
|
time = 0
|
||||||
|
flags = 1
|
||||||
|
data = length 36692, hash D216076E
|
||||||
|
sample 1:
|
||||||
|
time = 66733
|
||||||
|
flags = 0
|
||||||
|
data = length 5312, hash D45D3CA0
|
||||||
|
sample 2:
|
||||||
|
time = 33366
|
||||||
|
flags = 0
|
||||||
|
data = length 599, hash 1BE7812D
|
||||||
|
sample 3:
|
||||||
|
time = 200200
|
||||||
|
flags = 0
|
||||||
|
data = length 7735, hash 4490F110
|
||||||
|
sample 4:
|
||||||
|
time = 133466
|
||||||
|
flags = 0
|
||||||
|
data = length 987, hash 560B5036
|
||||||
|
sample 5:
|
||||||
|
time = 100100
|
||||||
|
flags = 0
|
||||||
|
data = length 673, hash ED7CD8C7
|
||||||
|
sample 6:
|
||||||
|
time = 166833
|
||||||
|
flags = 0
|
||||||
|
data = length 523, hash 3020DF50
|
||||||
|
sample 7:
|
||||||
|
time = 333666
|
||||||
|
flags = 0
|
||||||
|
data = length 6061, hash 736C72B2
|
||||||
|
sample 8:
|
||||||
|
time = 266933
|
||||||
|
flags = 0
|
||||||
|
data = length 992, hash FE132F23
|
||||||
|
sample 9:
|
||||||
|
time = 233566
|
||||||
|
flags = 0
|
||||||
|
data = length 623, hash 5B2C1816
|
||||||
|
sample 10:
|
||||||
|
time = 300300
|
||||||
|
flags = 0
|
||||||
|
data = length 421, hash 742E69C1
|
||||||
|
sample 11:
|
||||||
|
time = 433766
|
||||||
|
flags = 0
|
||||||
|
data = length 4899, hash F72F86A1
|
||||||
|
sample 12:
|
||||||
|
time = 400400
|
||||||
|
flags = 0
|
||||||
|
data = length 568, hash 519A8E50
|
||||||
|
sample 13:
|
||||||
|
time = 367033
|
||||||
|
flags = 0
|
||||||
|
data = length 620, hash 3990AA39
|
||||||
|
sample 14:
|
||||||
|
time = 567233
|
||||||
|
flags = 0
|
||||||
|
data = length 5450, hash F06EC4AA
|
||||||
|
sample 15:
|
||||||
|
time = 500500
|
||||||
|
flags = 0
|
||||||
|
data = length 1051, hash 92DFA63A
|
||||||
|
sample 16:
|
||||||
|
time = 467133
|
||||||
|
flags = 0
|
||||||
|
data = length 874, hash 69587FB4
|
||||||
|
sample 17:
|
||||||
|
time = 533866
|
||||||
|
flags = 0
|
||||||
|
data = length 781, hash 36BE495B
|
||||||
|
sample 18:
|
||||||
|
time = 700700
|
||||||
|
flags = 0
|
||||||
|
data = length 4725, hash AC0C8CD3
|
||||||
|
sample 19:
|
||||||
|
time = 633966
|
||||||
|
flags = 0
|
||||||
|
data = length 1022, hash 5D8BFF34
|
||||||
|
sample 20:
|
||||||
|
time = 600600
|
||||||
|
flags = 0
|
||||||
|
data = length 790, hash 99413A99
|
||||||
|
sample 21:
|
||||||
|
time = 667333
|
||||||
|
flags = 0
|
||||||
|
data = length 610, hash 5E129290
|
||||||
|
sample 22:
|
||||||
|
time = 834166
|
||||||
|
flags = 0
|
||||||
|
data = length 2751, hash 769974CB
|
||||||
|
sample 23:
|
||||||
|
time = 767433
|
||||||
|
flags = 0
|
||||||
|
data = length 745, hash B78A477A
|
||||||
|
sample 24:
|
||||||
|
time = 734066
|
||||||
|
flags = 0
|
||||||
|
data = length 621, hash CF741E7A
|
||||||
|
sample 25:
|
||||||
|
time = 800800
|
||||||
|
flags = 0
|
||||||
|
data = length 505, hash 1DB4894E
|
||||||
|
sample 26:
|
||||||
|
time = 967633
|
||||||
|
flags = 0
|
||||||
|
data = length 1268, hash C15348DC
|
||||||
|
sample 27:
|
||||||
|
time = 900900
|
||||||
|
flags = 0
|
||||||
|
data = length 880, hash C2DE85D0
|
||||||
|
sample 28:
|
||||||
|
time = 867533
|
||||||
|
flags = 0
|
||||||
|
data = length 530, hash C98BC6A8
|
||||||
|
sample 29:
|
||||||
|
time = 934266
|
||||||
|
flags = 536870912
|
||||||
|
data = length 568, hash 4FE5C8EA
|
||||||
|
tracksEnded = true
|
@ -0,0 +1,148 @@
|
|||||||
|
seekMap:
|
||||||
|
isSeekable = true
|
||||||
|
duration = 1001000
|
||||||
|
getPosition(0) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(1) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(500500) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(1001000) = [[timeUs=0, position=1160]]
|
||||||
|
numberOfTracks = 1
|
||||||
|
track 0:
|
||||||
|
total output bytes = 89876
|
||||||
|
sample count = 30
|
||||||
|
format 0:
|
||||||
|
id = 1
|
||||||
|
sampleMimeType = video/avc
|
||||||
|
codecs = avc1.64001F
|
||||||
|
maxInputSize = 36722
|
||||||
|
width = 1080
|
||||||
|
height = 720
|
||||||
|
frameRate = 29.970028
|
||||||
|
colorInfo:
|
||||||
|
colorSpace = 1
|
||||||
|
colorRange = 2
|
||||||
|
colorTransfer = 3
|
||||||
|
hdrStaticInfo = length 0, hash 0
|
||||||
|
initializationData:
|
||||||
|
data = length 29, hash 4746B5D9
|
||||||
|
data = length 10, hash 7A0D0F2B
|
||||||
|
sample 0:
|
||||||
|
time = 0
|
||||||
|
flags = 1
|
||||||
|
data = length 36692, hash D216076E
|
||||||
|
sample 1:
|
||||||
|
time = 66733
|
||||||
|
flags = 0
|
||||||
|
data = length 5312, hash D45D3CA0
|
||||||
|
sample 2:
|
||||||
|
time = 33366
|
||||||
|
flags = 0
|
||||||
|
data = length 599, hash 1BE7812D
|
||||||
|
sample 3:
|
||||||
|
time = 200200
|
||||||
|
flags = 0
|
||||||
|
data = length 7735, hash 4490F110
|
||||||
|
sample 4:
|
||||||
|
time = 133466
|
||||||
|
flags = 0
|
||||||
|
data = length 987, hash 560B5036
|
||||||
|
sample 5:
|
||||||
|
time = 100100
|
||||||
|
flags = 0
|
||||||
|
data = length 673, hash ED7CD8C7
|
||||||
|
sample 6:
|
||||||
|
time = 166833
|
||||||
|
flags = 0
|
||||||
|
data = length 523, hash 3020DF50
|
||||||
|
sample 7:
|
||||||
|
time = 333666
|
||||||
|
flags = 0
|
||||||
|
data = length 6061, hash 736C72B2
|
||||||
|
sample 8:
|
||||||
|
time = 266933
|
||||||
|
flags = 0
|
||||||
|
data = length 992, hash FE132F23
|
||||||
|
sample 9:
|
||||||
|
time = 233566
|
||||||
|
flags = 0
|
||||||
|
data = length 623, hash 5B2C1816
|
||||||
|
sample 10:
|
||||||
|
time = 300300
|
||||||
|
flags = 0
|
||||||
|
data = length 421, hash 742E69C1
|
||||||
|
sample 11:
|
||||||
|
time = 433766
|
||||||
|
flags = 0
|
||||||
|
data = length 4899, hash F72F86A1
|
||||||
|
sample 12:
|
||||||
|
time = 400400
|
||||||
|
flags = 0
|
||||||
|
data = length 568, hash 519A8E50
|
||||||
|
sample 13:
|
||||||
|
time = 367033
|
||||||
|
flags = 0
|
||||||
|
data = length 620, hash 3990AA39
|
||||||
|
sample 14:
|
||||||
|
time = 567233
|
||||||
|
flags = 0
|
||||||
|
data = length 5450, hash F06EC4AA
|
||||||
|
sample 15:
|
||||||
|
time = 500500
|
||||||
|
flags = 0
|
||||||
|
data = length 1051, hash 92DFA63A
|
||||||
|
sample 16:
|
||||||
|
time = 467133
|
||||||
|
flags = 0
|
||||||
|
data = length 874, hash 69587FB4
|
||||||
|
sample 17:
|
||||||
|
time = 533866
|
||||||
|
flags = 0
|
||||||
|
data = length 781, hash 36BE495B
|
||||||
|
sample 18:
|
||||||
|
time = 700700
|
||||||
|
flags = 0
|
||||||
|
data = length 4725, hash AC0C8CD3
|
||||||
|
sample 19:
|
||||||
|
time = 633966
|
||||||
|
flags = 0
|
||||||
|
data = length 1022, hash 5D8BFF34
|
||||||
|
sample 20:
|
||||||
|
time = 600600
|
||||||
|
flags = 0
|
||||||
|
data = length 790, hash 99413A99
|
||||||
|
sample 21:
|
||||||
|
time = 667333
|
||||||
|
flags = 0
|
||||||
|
data = length 610, hash 5E129290
|
||||||
|
sample 22:
|
||||||
|
time = 834166
|
||||||
|
flags = 0
|
||||||
|
data = length 2751, hash 769974CB
|
||||||
|
sample 23:
|
||||||
|
time = 767433
|
||||||
|
flags = 0
|
||||||
|
data = length 745, hash B78A477A
|
||||||
|
sample 24:
|
||||||
|
time = 734066
|
||||||
|
flags = 0
|
||||||
|
data = length 621, hash CF741E7A
|
||||||
|
sample 25:
|
||||||
|
time = 800800
|
||||||
|
flags = 0
|
||||||
|
data = length 505, hash 1DB4894E
|
||||||
|
sample 26:
|
||||||
|
time = 967633
|
||||||
|
flags = 0
|
||||||
|
data = length 1268, hash C15348DC
|
||||||
|
sample 27:
|
||||||
|
time = 900900
|
||||||
|
flags = 0
|
||||||
|
data = length 880, hash C2DE85D0
|
||||||
|
sample 28:
|
||||||
|
time = 867533
|
||||||
|
flags = 0
|
||||||
|
data = length 530, hash C98BC6A8
|
||||||
|
sample 29:
|
||||||
|
time = 934266
|
||||||
|
flags = 536870912
|
||||||
|
data = length 568, hash 4FE5C8EA
|
||||||
|
tracksEnded = true
|
@ -0,0 +1,148 @@
|
|||||||
|
seekMap:
|
||||||
|
isSeekable = true
|
||||||
|
duration = 1001000
|
||||||
|
getPosition(0) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(1) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(500500) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(1001000) = [[timeUs=0, position=1160]]
|
||||||
|
numberOfTracks = 1
|
||||||
|
track 0:
|
||||||
|
total output bytes = 89876
|
||||||
|
sample count = 30
|
||||||
|
format 0:
|
||||||
|
id = 1
|
||||||
|
sampleMimeType = video/avc
|
||||||
|
codecs = avc1.64001F
|
||||||
|
maxInputSize = 36722
|
||||||
|
width = 1080
|
||||||
|
height = 720
|
||||||
|
frameRate = 29.970028
|
||||||
|
colorInfo:
|
||||||
|
colorSpace = 1
|
||||||
|
colorRange = 2
|
||||||
|
colorTransfer = 3
|
||||||
|
hdrStaticInfo = length 0, hash 0
|
||||||
|
initializationData:
|
||||||
|
data = length 29, hash 4746B5D9
|
||||||
|
data = length 10, hash 7A0D0F2B
|
||||||
|
sample 0:
|
||||||
|
time = 0
|
||||||
|
flags = 1
|
||||||
|
data = length 36692, hash D216076E
|
||||||
|
sample 1:
|
||||||
|
time = 66733
|
||||||
|
flags = 0
|
||||||
|
data = length 5312, hash D45D3CA0
|
||||||
|
sample 2:
|
||||||
|
time = 33366
|
||||||
|
flags = 0
|
||||||
|
data = length 599, hash 1BE7812D
|
||||||
|
sample 3:
|
||||||
|
time = 200200
|
||||||
|
flags = 0
|
||||||
|
data = length 7735, hash 4490F110
|
||||||
|
sample 4:
|
||||||
|
time = 133466
|
||||||
|
flags = 0
|
||||||
|
data = length 987, hash 560B5036
|
||||||
|
sample 5:
|
||||||
|
time = 100100
|
||||||
|
flags = 0
|
||||||
|
data = length 673, hash ED7CD8C7
|
||||||
|
sample 6:
|
||||||
|
time = 166833
|
||||||
|
flags = 0
|
||||||
|
data = length 523, hash 3020DF50
|
||||||
|
sample 7:
|
||||||
|
time = 333666
|
||||||
|
flags = 0
|
||||||
|
data = length 6061, hash 736C72B2
|
||||||
|
sample 8:
|
||||||
|
time = 266933
|
||||||
|
flags = 0
|
||||||
|
data = length 992, hash FE132F23
|
||||||
|
sample 9:
|
||||||
|
time = 233566
|
||||||
|
flags = 0
|
||||||
|
data = length 623, hash 5B2C1816
|
||||||
|
sample 10:
|
||||||
|
time = 300300
|
||||||
|
flags = 0
|
||||||
|
data = length 421, hash 742E69C1
|
||||||
|
sample 11:
|
||||||
|
time = 433766
|
||||||
|
flags = 0
|
||||||
|
data = length 4899, hash F72F86A1
|
||||||
|
sample 12:
|
||||||
|
time = 400400
|
||||||
|
flags = 0
|
||||||
|
data = length 568, hash 519A8E50
|
||||||
|
sample 13:
|
||||||
|
time = 367033
|
||||||
|
flags = 0
|
||||||
|
data = length 620, hash 3990AA39
|
||||||
|
sample 14:
|
||||||
|
time = 567233
|
||||||
|
flags = 0
|
||||||
|
data = length 5450, hash F06EC4AA
|
||||||
|
sample 15:
|
||||||
|
time = 500500
|
||||||
|
flags = 0
|
||||||
|
data = length 1051, hash 92DFA63A
|
||||||
|
sample 16:
|
||||||
|
time = 467133
|
||||||
|
flags = 0
|
||||||
|
data = length 874, hash 69587FB4
|
||||||
|
sample 17:
|
||||||
|
time = 533866
|
||||||
|
flags = 0
|
||||||
|
data = length 781, hash 36BE495B
|
||||||
|
sample 18:
|
||||||
|
time = 700700
|
||||||
|
flags = 0
|
||||||
|
data = length 4725, hash AC0C8CD3
|
||||||
|
sample 19:
|
||||||
|
time = 633966
|
||||||
|
flags = 0
|
||||||
|
data = length 1022, hash 5D8BFF34
|
||||||
|
sample 20:
|
||||||
|
time = 600600
|
||||||
|
flags = 0
|
||||||
|
data = length 790, hash 99413A99
|
||||||
|
sample 21:
|
||||||
|
time = 667333
|
||||||
|
flags = 0
|
||||||
|
data = length 610, hash 5E129290
|
||||||
|
sample 22:
|
||||||
|
time = 834166
|
||||||
|
flags = 0
|
||||||
|
data = length 2751, hash 769974CB
|
||||||
|
sample 23:
|
||||||
|
time = 767433
|
||||||
|
flags = 0
|
||||||
|
data = length 745, hash B78A477A
|
||||||
|
sample 24:
|
||||||
|
time = 734066
|
||||||
|
flags = 0
|
||||||
|
data = length 621, hash CF741E7A
|
||||||
|
sample 25:
|
||||||
|
time = 800800
|
||||||
|
flags = 0
|
||||||
|
data = length 505, hash 1DB4894E
|
||||||
|
sample 26:
|
||||||
|
time = 967633
|
||||||
|
flags = 0
|
||||||
|
data = length 1268, hash C15348DC
|
||||||
|
sample 27:
|
||||||
|
time = 900900
|
||||||
|
flags = 0
|
||||||
|
data = length 880, hash C2DE85D0
|
||||||
|
sample 28:
|
||||||
|
time = 867533
|
||||||
|
flags = 0
|
||||||
|
data = length 530, hash C98BC6A8
|
||||||
|
sample 29:
|
||||||
|
time = 934266
|
||||||
|
flags = 536870912
|
||||||
|
data = length 568, hash 4FE5C8EA
|
||||||
|
tracksEnded = true
|
@ -0,0 +1,148 @@
|
|||||||
|
seekMap:
|
||||||
|
isSeekable = true
|
||||||
|
duration = 1001000
|
||||||
|
getPosition(0) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(1) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(500500) = [[timeUs=0, position=1160]]
|
||||||
|
getPosition(1001000) = [[timeUs=0, position=1160]]
|
||||||
|
numberOfTracks = 1
|
||||||
|
track 0:
|
||||||
|
total output bytes = 89876
|
||||||
|
sample count = 30
|
||||||
|
format 0:
|
||||||
|
id = 1
|
||||||
|
sampleMimeType = video/avc
|
||||||
|
codecs = avc1.64001F
|
||||||
|
maxInputSize = 36722
|
||||||
|
width = 1080
|
||||||
|
height = 720
|
||||||
|
frameRate = 29.970028
|
||||||
|
colorInfo:
|
||||||
|
colorSpace = 1
|
||||||
|
colorRange = 2
|
||||||
|
colorTransfer = 3
|
||||||
|
hdrStaticInfo = length 0, hash 0
|
||||||
|
initializationData:
|
||||||
|
data = length 29, hash 4746B5D9
|
||||||
|
data = length 10, hash 7A0D0F2B
|
||||||
|
sample 0:
|
||||||
|
time = 0
|
||||||
|
flags = 1
|
||||||
|
data = length 36692, hash D216076E
|
||||||
|
sample 1:
|
||||||
|
time = 66733
|
||||||
|
flags = 0
|
||||||
|
data = length 5312, hash D45D3CA0
|
||||||
|
sample 2:
|
||||||
|
time = 33366
|
||||||
|
flags = 0
|
||||||
|
data = length 599, hash 1BE7812D
|
||||||
|
sample 3:
|
||||||
|
time = 200200
|
||||||
|
flags = 0
|
||||||
|
data = length 7735, hash 4490F110
|
||||||
|
sample 4:
|
||||||
|
time = 133466
|
||||||
|
flags = 0
|
||||||
|
data = length 987, hash 560B5036
|
||||||
|
sample 5:
|
||||||
|
time = 100100
|
||||||
|
flags = 0
|
||||||
|
data = length 673, hash ED7CD8C7
|
||||||
|
sample 6:
|
||||||
|
time = 166833
|
||||||
|
flags = 0
|
||||||
|
data = length 523, hash 3020DF50
|
||||||
|
sample 7:
|
||||||
|
time = 333666
|
||||||
|
flags = 0
|
||||||
|
data = length 6061, hash 736C72B2
|
||||||
|
sample 8:
|
||||||
|
time = 266933
|
||||||
|
flags = 0
|
||||||
|
data = length 992, hash FE132F23
|
||||||
|
sample 9:
|
||||||
|
time = 233566
|
||||||
|
flags = 0
|
||||||
|
data = length 623, hash 5B2C1816
|
||||||
|
sample 10:
|
||||||
|
time = 300300
|
||||||
|
flags = 0
|
||||||
|
data = length 421, hash 742E69C1
|
||||||
|
sample 11:
|
||||||
|
time = 433766
|
||||||
|
flags = 0
|
||||||
|
data = length 4899, hash F72F86A1
|
||||||
|
sample 12:
|
||||||
|
time = 400400
|
||||||
|
flags = 0
|
||||||
|
data = length 568, hash 519A8E50
|
||||||
|
sample 13:
|
||||||
|
time = 367033
|
||||||
|
flags = 0
|
||||||
|
data = length 620, hash 3990AA39
|
||||||
|
sample 14:
|
||||||
|
time = 567233
|
||||||
|
flags = 0
|
||||||
|
data = length 5450, hash F06EC4AA
|
||||||
|
sample 15:
|
||||||
|
time = 500500
|
||||||
|
flags = 0
|
||||||
|
data = length 1051, hash 92DFA63A
|
||||||
|
sample 16:
|
||||||
|
time = 467133
|
||||||
|
flags = 0
|
||||||
|
data = length 874, hash 69587FB4
|
||||||
|
sample 17:
|
||||||
|
time = 533866
|
||||||
|
flags = 0
|
||||||
|
data = length 781, hash 36BE495B
|
||||||
|
sample 18:
|
||||||
|
time = 700700
|
||||||
|
flags = 0
|
||||||
|
data = length 4725, hash AC0C8CD3
|
||||||
|
sample 19:
|
||||||
|
time = 633966
|
||||||
|
flags = 0
|
||||||
|
data = length 1022, hash 5D8BFF34
|
||||||
|
sample 20:
|
||||||
|
time = 600600
|
||||||
|
flags = 0
|
||||||
|
data = length 790, hash 99413A99
|
||||||
|
sample 21:
|
||||||
|
time = 667333
|
||||||
|
flags = 0
|
||||||
|
data = length 610, hash 5E129290
|
||||||
|
sample 22:
|
||||||
|
time = 834166
|
||||||
|
flags = 0
|
||||||
|
data = length 2751, hash 769974CB
|
||||||
|
sample 23:
|
||||||
|
time = 767433
|
||||||
|
flags = 0
|
||||||
|
data = length 745, hash B78A477A
|
||||||
|
sample 24:
|
||||||
|
time = 734066
|
||||||
|
flags = 0
|
||||||
|
data = length 621, hash CF741E7A
|
||||||
|
sample 25:
|
||||||
|
time = 800800
|
||||||
|
flags = 0
|
||||||
|
data = length 505, hash 1DB4894E
|
||||||
|
sample 26:
|
||||||
|
time = 967633
|
||||||
|
flags = 0
|
||||||
|
data = length 1268, hash C15348DC
|
||||||
|
sample 27:
|
||||||
|
time = 900900
|
||||||
|
flags = 0
|
||||||
|
data = length 880, hash C2DE85D0
|
||||||
|
sample 28:
|
||||||
|
time = 867533
|
||||||
|
flags = 0
|
||||||
|
data = length 530, hash C98BC6A8
|
||||||
|
sample 29:
|
||||||
|
time = 934266
|
||||||
|
flags = 536870912
|
||||||
|
data = length 568, hash 4FE5C8EA
|
||||||
|
tracksEnded = true
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user