Use info from unseekable Xing frame when falling back to CBR seeking

This change uses the duration and byte count of the Xing frame, if
they're present, to estimate the bitrate of the stream. The seeking
will still be inaccurate (because we're doing CBR seeking in a VBR
stream), but it will be more accurate than basing the bitrate on the
first MP3 frame we read. It will also mean the duration reported is
accurate.

This change also ensures that if the Xing frame contains the number of
audio bytes but no ToC, the audio data length is still propagated into
the `XingSeeker` (and therefore into the `ConstantBitrateSeeker` too).

Issue: androidx/media#2194
PiperOrigin-RevId: 736100104
This commit is contained in:
ibaker 2025-03-12 05:48:47 -07:00 committed by Copybara-Service
parent 1918a256cc
commit 99767c6e25
18 changed files with 403 additions and 332 deletions

View File

@ -7,6 +7,10 @@
* Transformer: * Transformer:
* Track Selection: * Track Selection:
* Extractors: * Extractors:
* MP3: Use duration and data size from unseekable Xing, VBRI and similar
variable bitrate metadata when falling back to constant bitrate seeking
due to `FLAG_ENABLE_CONSTANT_BITRATE_SEEKING(_ALWAYS)`
([#2194](https://github.com/androidx/media/issues/2194)).
* DataSource: * DataSource:
* Audio: * Audio:
* Allow constant power upmixing/downmixing in DefaultAudioMixer. * Allow constant power upmixing/downmixing in DefaultAudioMixer.

View File

@ -75,6 +75,11 @@ import androidx.media3.extractor.MpegAudioUtil;
return getTimeUsAtPosition(position); return getTimeUsAtPosition(position);
} }
@Override
public long getDataStartPosition() {
return firstFramePosition;
}
@Override @Override
public long getDataEndPosition() { public long getDataEndPosition() {
return dataEndPosition; return dataEndPosition;

View File

@ -27,6 +27,7 @@ import java.math.RoundingMode;
@VisibleForTesting @VisibleForTesting
/* package */ static final long MIN_TIME_BETWEEN_POINTS_US = C.MICROS_PER_SECOND / 10; /* package */ static final long MIN_TIME_BETWEEN_POINTS_US = C.MICROS_PER_SECOND / 10;
private final long dataStartPosition;
private final long dataEndPosition; private final long dataEndPosition;
private final int averageBitrate; private final int averageBitrate;
private final IndexSeekMap indexSeekMap; private final IndexSeekMap indexSeekMap;
@ -37,6 +38,7 @@ import java.math.RoundingMode;
/* positions= */ new long[] {dataStartPosition}, /* positions= */ new long[] {dataStartPosition},
/* timesUs= */ new long[] {0L}, /* timesUs= */ new long[] {0L},
durationUs); durationUs);
this.dataStartPosition = dataStartPosition;
this.dataEndPosition = dataEndPosition; this.dataEndPosition = dataEndPosition;
if (durationUs != C.TIME_UNSET) { if (durationUs != C.TIME_UNSET) {
long bitrate = long bitrate =
@ -54,6 +56,11 @@ import java.math.RoundingMode;
return indexSeekMap.getTimeUs(position); return indexSeekMap.getTimeUs(position);
} }
@Override
public long getDataStartPosition() {
return dataStartPosition;
}
@Override @Override
public long getDataEndPosition() { public long getDataEndPosition() {
return dataEndPosition; return dataEndPosition;

View File

@ -123,6 +123,11 @@ import androidx.media3.extractor.metadata.id3.MlltFrame;
} }
} }
@Override
public long getDataStartPosition() {
return 0;
}
@Override @Override
public long getDataEndPosition() { public long getDataEndPosition() {
return C.INDEX_UNSET; return C.INDEX_UNSET;

View File

@ -501,11 +501,43 @@ public final class Mp3Extractor implements Extractor {
resultSeeker = seekFrameSeeker; resultSeeker = seekFrameSeeker;
} }
if (resultSeeker == null if (resultSeeker != null
|| (!resultSeeker.isSeekable() && (flags & FLAG_ENABLE_CONSTANT_BITRATE_SEEKING) != 0)) { && shouldFallbackToConstantBitrateSeeking(resultSeeker)
&& resultSeeker.getDurationUs() != C.TIME_UNSET
&& (resultSeeker.getDataEndPosition() != C.INDEX_UNSET
|| input.getLength() != C.LENGTH_UNSET)) {
// resultSeeker does not allow seeking, but does provide a duration and constant bitrate
// seeking has been requested, so we can do 'enhanced' CBR seeking using this duration info.
long dataStart =
resultSeeker.getDataStartPosition() != C.INDEX_UNSET
? resultSeeker.getDataStartPosition()
: 0;
long inputLength =
resultSeeker.getDataEndPosition() != C.INDEX_UNSET
? resultSeeker.getDataEndPosition()
: input.getLength();
long audioLength = inputLength - dataStart;
int bitrate =
Ints.saturatedCast(
Util.scaleLargeValue(
audioLength,
Byte.SIZE * C.MICROS_PER_SECOND,
resultSeeker.getDurationUs(),
RoundingMode.HALF_UP));
// inputLength will never be LENGTH_UNSET because of the outer if-condition, so we can pass
// (vacuously) false here for allowSeeksIfLengthUnknown.
resultSeeker =
new ConstantBitrateSeeker(
inputLength,
dataStart,
bitrate,
C.LENGTH_UNSET,
/* allowSeeksIfLengthUnknown= */ false);
} else if (resultSeeker == null || shouldFallbackToConstantBitrateSeeking(resultSeeker)) {
// Either we found no seek or VBR info, so we must assume the file is CBR (even without the // Either we found no seek or VBR info, so we must assume the file is CBR (even without the
// flag(s) being set), or an 'enable CBR seeking flag' is set and we found some seek info, // flag(s) being set), or an 'enable CBR seeking flag' is set and we found some seek info, but
// but not enough to seek with. In either case, we fall back to CBR seeking. // not enough to do 'enhanced' CBR seeking with. In either case, we fall back to CBR seeking
// without any additional info from the file.
resultSeeker = resultSeeker =
getConstantBitrateSeeker( getConstantBitrateSeeker(
input, (flags & FLAG_ENABLE_CONSTANT_BITRATE_SEEKING_ALWAYS) != 0); input, (flags & FLAG_ENABLE_CONSTANT_BITRATE_SEEKING_ALWAYS) != 0);
@ -514,6 +546,10 @@ public final class Mp3Extractor implements Extractor {
return resultSeeker; return resultSeeker;
} }
private boolean shouldFallbackToConstantBitrateSeeking(Seeker seeker) {
return !seeker.isSeekable() && (flags & FLAG_ENABLE_CONSTANT_BITRATE_SEEKING) != 0;
}
/** /**
* Consumes the next frame from the {@code input} if it contains VBRI or Xing seeking metadata, * Consumes the next frame from the {@code input} if it contains VBRI or Xing seeking metadata,
* returning a {@link Seeker} if the metadata was present and valid, or {@code null} otherwise. * returning a {@link Seeker} if the metadata was present and valid, or {@code null} otherwise.

View File

@ -33,6 +33,12 @@ import androidx.media3.extractor.SeekMap;
*/ */
long getTimeUs(long position); long getTimeUs(long position);
/**
* Returns the position (byte offset) in the stream that is immediately before audio data, or 0 if
* not known.
*/
long getDataStartPosition();
/** /**
* Returns the position (byte offset) in the stream that is immediately after audio data, or * Returns the position (byte offset) in the stream that is immediately after audio data, or
* {@link C#INDEX_UNSET} if not known. * {@link C#INDEX_UNSET} if not known.
@ -57,6 +63,11 @@ import androidx.media3.extractor.SeekMap;
return 0; return 0;
} }
@Override
public long getDataStartPosition() {
return 0;
}
@Override @Override
public long getDataEndPosition() { public long getDataEndPosition() {
// Position unset as we do not know the data end position. Note that returning 0 doesn't work. // Position unset as we do not know the data end position. Note that returning 0 doesn't work.

View File

@ -51,7 +51,8 @@ import androidx.media3.extractor.SeekPoint;
ParsableByteArray frame) { ParsableByteArray frame) {
frame.skipBytes(6); frame.skipBytes(6);
int bytes = frame.readInt(); int bytes = frame.readInt();
long endOfMp3Data = position + mpegAudioHeader.frameSize + bytes; long startOfMp3Data = position + mpegAudioHeader.frameSize;
long endOfMp3Data = startOfMp3Data + bytes;
int numFrames = frame.readInt(); int numFrames = frame.readInt();
if (numFrames <= 0) { if (numFrames <= 0) {
return null; return null;
@ -105,20 +106,28 @@ import androidx.media3.extractor.SeekPoint;
endOfMp3Data = max(endOfMp3Data, position); endOfMp3Data = max(endOfMp3Data, position);
} }
return new VbriSeeker(timesUs, positions, durationUs, endOfMp3Data, mpegAudioHeader.bitrate); return new VbriSeeker(
timesUs, positions, durationUs, startOfMp3Data, endOfMp3Data, mpegAudioHeader.bitrate);
} }
private final long[] timesUs; private final long[] timesUs;
private final long[] positions; private final long[] positions;
private final long durationUs; private final long durationUs;
private final long dataStartPosition;
private final long dataEndPosition; private final long dataEndPosition;
private final int bitrate; private final int bitrate;
private VbriSeeker( private VbriSeeker(
long[] timesUs, long[] positions, long durationUs, long dataEndPosition, int bitrate) { long[] timesUs,
long[] positions,
long durationUs,
long dataStartPosition,
long dataEndPosition,
int bitrate) {
this.timesUs = timesUs; this.timesUs = timesUs;
this.positions = positions; this.positions = positions;
this.durationUs = durationUs; this.durationUs = durationUs;
this.dataStartPosition = dataStartPosition;
this.dataEndPosition = dataEndPosition; this.dataEndPosition = dataEndPosition;
this.bitrate = bitrate; this.bitrate = bitrate;
} }
@ -150,6 +159,11 @@ import androidx.media3.extractor.SeekPoint;
return durationUs; return durationUs;
} }
@Override
public long getDataStartPosition() {
return dataStartPosition;
}
@Override @Override
public long getDataEndPosition() { public long getDataEndPosition() {
return dataEndPosition; return dataEndPosition;

View File

@ -42,11 +42,6 @@ import androidx.media3.extractor.SeekPoint;
if (durationUs == C.TIME_UNSET) { if (durationUs == C.TIME_UNSET) {
return null; return null;
} }
if (xingFrame.dataSize == C.LENGTH_UNSET || xingFrame.tableOfContents == null) {
// If the size in bytes or table of contents is missing, the stream is not seekable.
return new XingSeeker(
position, xingFrame.header.frameSize, durationUs, xingFrame.header.bitrate);
}
return new XingSeeker( return new XingSeeker(
position, position,
xingFrame.header.frameSize, xingFrame.header.frameSize,
@ -72,16 +67,6 @@ import androidx.media3.extractor.SeekPoint;
*/ */
@Nullable private final long[] tableOfContents; @Nullable private final long[] tableOfContents;
private XingSeeker(long dataStartPosition, int xingFrameSize, long durationUs, int bitrate) {
this(
dataStartPosition,
xingFrameSize,
durationUs,
bitrate,
/* dataSize= */ C.LENGTH_UNSET,
/* tableOfContents= */ null);
}
private XingSeeker( private XingSeeker(
long dataStartPosition, long dataStartPosition,
int xingFrameSize, int xingFrameSize,
@ -157,6 +142,11 @@ import androidx.media3.extractor.SeekPoint;
return durationUs; return durationUs;
} }
@Override
public long getDataStartPosition() {
return dataStartPosition + xingFrameSize;
}
@Override @Override
public long getDataEndPosition() { public long getDataEndPosition() {
return dataEndPosition; return dataEndPosition;

View File

@ -1,17 +1,17 @@
seekMap: seekMap:
isSeekable = true isSeekable = true
duration = 9540000 duration = 2807972
getPosition(0) = [[timeUs=0, position=237]] getPosition(0) = [[timeUs=0, position=237]]
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]] getPosition(1) = [[timeUs=0, position=237], [timeUs=73, position=238]]
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]] getPosition(1403986) = [[timeUs=1403912, position=19316], [timeUs=1403986, position=19317]]
getPosition(9540000) = [[timeUs=9516000, position=38301]] getPosition(2807972) = [[timeUs=2807899, position=38396]]
numberOfTracks = 1 numberOfTracks = 1
track 0: track 0:
total output bytes = 38160 total output bytes = 38160
sample count = 117 sample count = 117
track duration = 9540000 track duration = 2807972
format 0: format 0:
averageBitrate = 32000 averageBitrate = 108719
containerMimeType = audio/mpeg containerMimeType = audio/mpeg
sampleMimeType = audio/mpeg sampleMimeType = audio/mpeg
maxInputSize = 4096 maxInputSize = 4096

View File

@ -1,17 +1,17 @@
seekMap: seekMap:
isSeekable = true isSeekable = true
duration = 9540000 duration = 2807972
getPosition(0) = [[timeUs=0, position=237]] getPosition(0) = [[timeUs=0, position=237]]
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]] getPosition(1) = [[timeUs=0, position=237], [timeUs=73, position=238]]
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]] getPosition(1403986) = [[timeUs=1403912, position=19316], [timeUs=1403986, position=19317]]
getPosition(9540000) = [[timeUs=9516000, position=38301]] getPosition(2807972) = [[timeUs=2807899, position=38396]]
numberOfTracks = 1 numberOfTracks = 1
track 0: track 0:
total output bytes = 25344 total output bytes = 25344
sample count = 80 sample count = 80
track duration = 9540000 track duration = 2807972
format 0: format 0:
averageBitrate = 32000 averageBitrate = 108719
containerMimeType = audio/mpeg containerMimeType = audio/mpeg
sampleMimeType = audio/mpeg sampleMimeType = audio/mpeg
maxInputSize = 4096 maxInputSize = 4096
@ -21,323 +21,323 @@ track 0:
encoderPadding = 576 encoderPadding = 576
metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]] metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]]
sample 0: sample 0:
time = 3204000 time = 943055
flags = 1 flags = 1
data = length 336, hash E917C122 data = length 336, hash E917C122
sample 1: sample 1:
time = 3228000 time = 967055
flags = 1 flags = 1
data = length 336, hash 10ED1470 data = length 336, hash 10ED1470
sample 2: sample 2:
time = 3252000 time = 991055
flags = 1 flags = 1
data = length 288, hash 706B8A7C data = length 288, hash 706B8A7C
sample 3: sample 3:
time = 3276000 time = 1015055
flags = 1 flags = 1
data = length 336, hash 71FFE4A0 data = length 336, hash 71FFE4A0
sample 4: sample 4:
time = 3300000 time = 1039055
flags = 1 flags = 1
data = length 336, hash D4160463 data = length 336, hash D4160463
sample 5: sample 5:
time = 3324000 time = 1063055
flags = 1 flags = 1
data = length 336, hash EC557B14 data = length 336, hash EC557B14
sample 6: sample 6:
time = 3348000 time = 1087055
flags = 1 flags = 1
data = length 288, hash 5598CF8B data = length 288, hash 5598CF8B
sample 7: sample 7:
time = 3372000 time = 1111055
flags = 1 flags = 1
data = length 336, hash 7E0AB41 data = length 336, hash 7E0AB41
sample 8: sample 8:
time = 3396000 time = 1135055
flags = 1 flags = 1
data = length 336, hash 1C585FEF data = length 336, hash 1C585FEF
sample 9: sample 9:
time = 3420000 time = 1159055
flags = 1 flags = 1
data = length 336, hash A4A4855E data = length 336, hash A4A4855E
sample 10: sample 10:
time = 3444000 time = 1183055
flags = 1 flags = 1
data = length 336, hash CECA51D3 data = length 336, hash CECA51D3
sample 11: sample 11:
time = 3468000 time = 1207055
flags = 1 flags = 1
data = length 288, hash 2D362DC5 data = length 288, hash 2D362DC5
sample 12: sample 12:
time = 3492000 time = 1231055
flags = 1 flags = 1
data = length 336, hash 9EB2609D data = length 336, hash 9EB2609D
sample 13: sample 13:
time = 3516000 time = 1255055
flags = 1 flags = 1
data = length 336, hash 28FFB3FE data = length 336, hash 28FFB3FE
sample 14: sample 14:
time = 3540000 time = 1279055
flags = 1 flags = 1
data = length 288, hash 2AA2D216 data = length 288, hash 2AA2D216
sample 15: sample 15:
time = 3564000 time = 1303055
flags = 1 flags = 1
data = length 336, hash CDBC7032 data = length 336, hash CDBC7032
sample 16: sample 16:
time = 3588000 time = 1327055
flags = 1 flags = 1
data = length 336, hash 25B13FE7 data = length 336, hash 25B13FE7
sample 17: sample 17:
time = 3612000 time = 1351055
flags = 1 flags = 1
data = length 336, hash DB6BB1E data = length 336, hash DB6BB1E
sample 18: sample 18:
time = 3636000 time = 1375055
flags = 1 flags = 1
data = length 336, hash EBE951F4 data = length 336, hash EBE951F4
sample 19: sample 19:
time = 3660000 time = 1399055
flags = 1 flags = 1
data = length 288, hash 9E2EBFF7 data = length 288, hash 9E2EBFF7
sample 20: sample 20:
time = 3684000 time = 1423055
flags = 1 flags = 1
data = length 336, hash 36A7D455 data = length 336, hash 36A7D455
sample 21: sample 21:
time = 3708000 time = 1447055
flags = 1 flags = 1
data = length 336, hash 84545F8C data = length 336, hash 84545F8C
sample 22: sample 22:
time = 3732000 time = 1471055
flags = 1 flags = 1
data = length 336, hash F66F3045 data = length 336, hash F66F3045
sample 23: sample 23:
time = 3756000 time = 1495055
flags = 1 flags = 1
data = length 576, hash 5AB089EA data = length 576, hash 5AB089EA
sample 24: sample 24:
time = 3780000 time = 1519055
flags = 1 flags = 1
data = length 336, hash 8868086 data = length 336, hash 8868086
sample 25: sample 25:
time = 3804000 time = 1543055
flags = 1 flags = 1
data = length 336, hash D5EB6D63 data = length 336, hash D5EB6D63
sample 26: sample 26:
time = 3828000 time = 1567055
flags = 1 flags = 1
data = length 288, hash 7A5374B7 data = length 288, hash 7A5374B7
sample 27: sample 27:
time = 3852000 time = 1591055
flags = 1 flags = 1
data = length 336, hash BEB27A75 data = length 336, hash BEB27A75
sample 28: sample 28:
time = 3876000 time = 1615055
flags = 1 flags = 1
data = length 336, hash E251E0FD data = length 336, hash E251E0FD
sample 29: sample 29:
time = 3900000 time = 1639055
flags = 1 flags = 1
data = length 288, hash D54C970 data = length 288, hash D54C970
sample 30: sample 30:
time = 3924000 time = 1663055
flags = 1 flags = 1
data = length 336, hash 52C473B9 data = length 336, hash 52C473B9
sample 31: sample 31:
time = 3948000 time = 1687055
flags = 1 flags = 1
data = length 336, hash F5F13334 data = length 336, hash F5F13334
sample 32: sample 32:
time = 3972000 time = 1711055
flags = 1 flags = 1
data = length 480, hash A5F1E987 data = length 480, hash A5F1E987
sample 33: sample 33:
time = 3996000 time = 1735055
flags = 1 flags = 1
data = length 288, hash 453A1267 data = length 288, hash 453A1267
sample 34: sample 34:
time = 4020000 time = 1759055
flags = 1 flags = 1
data = length 288, hash 7C6C2EA9 data = length 288, hash 7C6C2EA9
sample 35: sample 35:
time = 4044000 time = 1783055
flags = 1 flags = 1
data = length 336, hash F4BFECA4 data = length 336, hash F4BFECA4
sample 36: sample 36:
time = 4068000 time = 1807055
flags = 1 flags = 1
data = length 336, hash 751A395A data = length 336, hash 751A395A
sample 37: sample 37:
time = 4092000 time = 1831055
flags = 1 flags = 1
data = length 336, hash EE38DB02 data = length 336, hash EE38DB02
sample 38: sample 38:
time = 4116000 time = 1855055
flags = 1 flags = 1
data = length 336, hash F18837E2 data = length 336, hash F18837E2
sample 39: sample 39:
time = 4140000 time = 1879055
flags = 1 flags = 1
data = length 336, hash ED36B78E data = length 336, hash ED36B78E
sample 40: sample 40:
time = 4164000 time = 1903055
flags = 1 flags = 1
data = length 336, hash B3D28289 data = length 336, hash B3D28289
sample 41: sample 41:
time = 4188000 time = 1927055
flags = 1 flags = 1
data = length 288, hash 8BDE28E1 data = length 288, hash 8BDE28E1
sample 42: sample 42:
time = 4212000 time = 1951055
flags = 1 flags = 1
data = length 336, hash CFD5E966 data = length 336, hash CFD5E966
sample 43: sample 43:
time = 4236000 time = 1975055
flags = 1 flags = 1
data = length 288, hash DC08E267 data = length 288, hash DC08E267
sample 44: sample 44:
time = 4260000 time = 1999055
flags = 1 flags = 1
data = length 336, hash 6530CB78 data = length 336, hash 6530CB78
sample 45: sample 45:
time = 4284000 time = 2023055
flags = 1 flags = 1
data = length 336, hash 6CC6636E data = length 336, hash 6CC6636E
sample 46: sample 46:
time = 4308000 time = 2047055
flags = 1 flags = 1
data = length 336, hash 613047C1 data = length 336, hash 613047C1
sample 47: sample 47:
time = 4332000 time = 2071055
flags = 1 flags = 1
data = length 288, hash CDC747BF data = length 288, hash CDC747BF
sample 48: sample 48:
time = 4356000 time = 2095055
flags = 1 flags = 1
data = length 336, hash AF22AA74 data = length 336, hash AF22AA74
sample 49: sample 49:
time = 4380000 time = 2119055
flags = 1 flags = 1
data = length 384, hash 82F326AA data = length 384, hash 82F326AA
sample 50: sample 50:
time = 4404000 time = 2143055
flags = 1 flags = 1
data = length 384, hash EDA26C4D data = length 384, hash EDA26C4D
sample 51: sample 51:
time = 4428000 time = 2167055
flags = 1 flags = 1
data = length 336, hash 94C643DC data = length 336, hash 94C643DC
sample 52: sample 52:
time = 4452000 time = 2191055
flags = 1 flags = 1
data = length 288, hash CB5D9C40 data = length 288, hash CB5D9C40
sample 53: sample 53:
time = 4476000 time = 2215055
flags = 1 flags = 1
data = length 336, hash 1E69DE3F data = length 336, hash 1E69DE3F
sample 54: sample 54:
time = 4500000 time = 2239055
flags = 1 flags = 1
data = length 336, hash 7E472219 data = length 336, hash 7E472219
sample 55: sample 55:
time = 4524000 time = 2263055
flags = 1 flags = 1
data = length 336, hash DA47B9FA data = length 336, hash DA47B9FA
sample 56: sample 56:
time = 4548000 time = 2287055
flags = 1 flags = 1
data = length 336, hash DD0ABB7C data = length 336, hash DD0ABB7C
sample 57: sample 57:
time = 4572000 time = 2311055
flags = 1 flags = 1
data = length 288, hash DBF93FAC data = length 288, hash DBF93FAC
sample 58: sample 58:
time = 4596000 time = 2335055
flags = 1 flags = 1
data = length 336, hash 243F4B2 data = length 336, hash 243F4B2
sample 59: sample 59:
time = 4620000 time = 2359055
flags = 1 flags = 1
data = length 336, hash 2E881490 data = length 336, hash 2E881490
sample 60: sample 60:
time = 4644000 time = 2383055
flags = 1 flags = 1
data = length 288, hash 1C28C8BE data = length 288, hash 1C28C8BE
sample 61: sample 61:
time = 4668000 time = 2407055
flags = 1 flags = 1
data = length 336, hash C73E5D30 data = length 336, hash C73E5D30
sample 62: sample 62:
time = 4692000 time = 2431055
flags = 1 flags = 1
data = length 288, hash 98B5BFF6 data = length 288, hash 98B5BFF6
sample 63: sample 63:
time = 4716000 time = 2455055
flags = 1 flags = 1
data = length 336, hash E0135533 data = length 336, hash E0135533
sample 64: sample 64:
time = 4740000 time = 2479055
flags = 1 flags = 1
data = length 336, hash D13C9DBC data = length 336, hash D13C9DBC
sample 65: sample 65:
time = 4764000 time = 2503055
flags = 1 flags = 1
data = length 336, hash 63D524CA data = length 336, hash 63D524CA
sample 66: sample 66:
time = 4788000 time = 2527055
flags = 1 flags = 1
data = length 288, hash A28514C3 data = length 288, hash A28514C3
sample 67: sample 67:
time = 4812000 time = 2551055
flags = 1 flags = 1
data = length 336, hash 72B647FF data = length 336, hash 72B647FF
sample 68: sample 68:
time = 4836000 time = 2575055
flags = 1 flags = 1
data = length 336, hash 8F740AB1 data = length 336, hash 8F740AB1
sample 69: sample 69:
time = 4860000 time = 2599055
flags = 1 flags = 1
data = length 336, hash 5E3C7E93 data = length 336, hash 5E3C7E93
sample 70: sample 70:
time = 4884000 time = 2623055
flags = 1 flags = 1
data = length 336, hash 121B913B data = length 336, hash 121B913B
sample 71: sample 71:
time = 4908000 time = 2647055
flags = 1 flags = 1
data = length 336, hash 578FCCF2 data = length 336, hash 578FCCF2
sample 72: sample 72:
time = 4932000 time = 2671055
flags = 1 flags = 1
data = length 336, hash 5B5823DE data = length 336, hash 5B5823DE
sample 73: sample 73:
time = 4956000 time = 2695055
flags = 1 flags = 1
data = length 384, hash D8B83F78 data = length 384, hash D8B83F78
sample 74: sample 74:
time = 4980000 time = 2719055
flags = 1 flags = 1
data = length 240, hash E649682F data = length 240, hash E649682F
sample 75: sample 75:
time = 5004000 time = 2743055
flags = 1 flags = 1
data = length 96, hash C559A6F4 data = length 96, hash C559A6F4
sample 76: sample 76:
time = 5028000 time = 2767055
flags = 1 flags = 1
data = length 96, hash 792796BC data = length 96, hash 792796BC
sample 77: sample 77:
time = 5052000 time = 2791055
flags = 1 flags = 1
data = length 120, hash 8172CD0E data = length 120, hash 8172CD0E
sample 78: sample 78:
time = 5076000 time = 2815055
flags = 1 flags = 1
data = length 120, hash F562B52F data = length 120, hash F562B52F
sample 79: sample 79:
time = 5100000 time = 2839055
flags = 1 flags = 1
data = length 96, hash FF8D5B98 data = length 96, hash FF8D5B98
tracksEnded = true tracksEnded = true

View File

@ -1,17 +1,17 @@
seekMap: seekMap:
isSeekable = true isSeekable = true
duration = 9540000 duration = 2807972
getPosition(0) = [[timeUs=0, position=237]] getPosition(0) = [[timeUs=0, position=237]]
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]] getPosition(1) = [[timeUs=0, position=237], [timeUs=73, position=238]]
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]] getPosition(1403986) = [[timeUs=1403912, position=19316], [timeUs=1403986, position=19317]]
getPosition(9540000) = [[timeUs=9516000, position=38301]] getPosition(2807972) = [[timeUs=2807899, position=38396]]
numberOfTracks = 1 numberOfTracks = 1
track 0: track 0:
total output bytes = 12624 total output bytes = 12624
sample count = 42 sample count = 42
track duration = 9540000 track duration = 2807972
format 0: format 0:
averageBitrate = 32000 averageBitrate = 108719
containerMimeType = audio/mpeg containerMimeType = audio/mpeg
sampleMimeType = audio/mpeg sampleMimeType = audio/mpeg
maxInputSize = 4096 maxInputSize = 4096
@ -21,171 +21,171 @@ track 0:
encoderPadding = 576 encoderPadding = 576
metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]] metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]]
sample 0: sample 0:
time = 6384000 time = 1879045
flags = 1 flags = 1
data = length 336, hash F18837E2 data = length 336, hash F18837E2
sample 1: sample 1:
time = 6408000 time = 1903045
flags = 1 flags = 1
data = length 336, hash ED36B78E data = length 336, hash ED36B78E
sample 2: sample 2:
time = 6432000 time = 1927045
flags = 1 flags = 1
data = length 336, hash B3D28289 data = length 336, hash B3D28289
sample 3: sample 3:
time = 6456000 time = 1951045
flags = 1 flags = 1
data = length 288, hash 8BDE28E1 data = length 288, hash 8BDE28E1
sample 4: sample 4:
time = 6480000 time = 1975045
flags = 1 flags = 1
data = length 336, hash CFD5E966 data = length 336, hash CFD5E966
sample 5: sample 5:
time = 6504000 time = 1999045
flags = 1 flags = 1
data = length 288, hash DC08E267 data = length 288, hash DC08E267
sample 6: sample 6:
time = 6528000 time = 2023045
flags = 1 flags = 1
data = length 336, hash 6530CB78 data = length 336, hash 6530CB78
sample 7: sample 7:
time = 6552000 time = 2047045
flags = 1 flags = 1
data = length 336, hash 6CC6636E data = length 336, hash 6CC6636E
sample 8: sample 8:
time = 6576000 time = 2071045
flags = 1 flags = 1
data = length 336, hash 613047C1 data = length 336, hash 613047C1
sample 9: sample 9:
time = 6600000 time = 2095045
flags = 1 flags = 1
data = length 288, hash CDC747BF data = length 288, hash CDC747BF
sample 10: sample 10:
time = 6624000 time = 2119045
flags = 1 flags = 1
data = length 336, hash AF22AA74 data = length 336, hash AF22AA74
sample 11: sample 11:
time = 6648000 time = 2143045
flags = 1 flags = 1
data = length 384, hash 82F326AA data = length 384, hash 82F326AA
sample 12: sample 12:
time = 6672000 time = 2167045
flags = 1 flags = 1
data = length 384, hash EDA26C4D data = length 384, hash EDA26C4D
sample 13: sample 13:
time = 6696000 time = 2191045
flags = 1 flags = 1
data = length 336, hash 94C643DC data = length 336, hash 94C643DC
sample 14: sample 14:
time = 6720000 time = 2215045
flags = 1 flags = 1
data = length 288, hash CB5D9C40 data = length 288, hash CB5D9C40
sample 15: sample 15:
time = 6744000 time = 2239045
flags = 1 flags = 1
data = length 336, hash 1E69DE3F data = length 336, hash 1E69DE3F
sample 16: sample 16:
time = 6768000 time = 2263045
flags = 1 flags = 1
data = length 336, hash 7E472219 data = length 336, hash 7E472219
sample 17: sample 17:
time = 6792000 time = 2287045
flags = 1 flags = 1
data = length 336, hash DA47B9FA data = length 336, hash DA47B9FA
sample 18: sample 18:
time = 6816000 time = 2311045
flags = 1 flags = 1
data = length 336, hash DD0ABB7C data = length 336, hash DD0ABB7C
sample 19: sample 19:
time = 6840000 time = 2335045
flags = 1 flags = 1
data = length 288, hash DBF93FAC data = length 288, hash DBF93FAC
sample 20: sample 20:
time = 6864000 time = 2359045
flags = 1 flags = 1
data = length 336, hash 243F4B2 data = length 336, hash 243F4B2
sample 21: sample 21:
time = 6888000 time = 2383045
flags = 1 flags = 1
data = length 336, hash 2E881490 data = length 336, hash 2E881490
sample 22: sample 22:
time = 6912000 time = 2407045
flags = 1 flags = 1
data = length 288, hash 1C28C8BE data = length 288, hash 1C28C8BE
sample 23: sample 23:
time = 6936000 time = 2431045
flags = 1 flags = 1
data = length 336, hash C73E5D30 data = length 336, hash C73E5D30
sample 24: sample 24:
time = 6960000 time = 2455045
flags = 1 flags = 1
data = length 288, hash 98B5BFF6 data = length 288, hash 98B5BFF6
sample 25: sample 25:
time = 6984000 time = 2479045
flags = 1 flags = 1
data = length 336, hash E0135533 data = length 336, hash E0135533
sample 26: sample 26:
time = 7008000 time = 2503045
flags = 1 flags = 1
data = length 336, hash D13C9DBC data = length 336, hash D13C9DBC
sample 27: sample 27:
time = 7032000 time = 2527045
flags = 1 flags = 1
data = length 336, hash 63D524CA data = length 336, hash 63D524CA
sample 28: sample 28:
time = 7056000 time = 2551045
flags = 1 flags = 1
data = length 288, hash A28514C3 data = length 288, hash A28514C3
sample 29: sample 29:
time = 7080000 time = 2575045
flags = 1 flags = 1
data = length 336, hash 72B647FF data = length 336, hash 72B647FF
sample 30: sample 30:
time = 7104000 time = 2599045
flags = 1 flags = 1
data = length 336, hash 8F740AB1 data = length 336, hash 8F740AB1
sample 31: sample 31:
time = 7128000 time = 2623045
flags = 1 flags = 1
data = length 336, hash 5E3C7E93 data = length 336, hash 5E3C7E93
sample 32: sample 32:
time = 7152000 time = 2647045
flags = 1 flags = 1
data = length 336, hash 121B913B data = length 336, hash 121B913B
sample 33: sample 33:
time = 7176000 time = 2671045
flags = 1 flags = 1
data = length 336, hash 578FCCF2 data = length 336, hash 578FCCF2
sample 34: sample 34:
time = 7200000 time = 2695045
flags = 1 flags = 1
data = length 336, hash 5B5823DE data = length 336, hash 5B5823DE
sample 35: sample 35:
time = 7224000 time = 2719045
flags = 1 flags = 1
data = length 384, hash D8B83F78 data = length 384, hash D8B83F78
sample 36: sample 36:
time = 7248000 time = 2743045
flags = 1 flags = 1
data = length 240, hash E649682F data = length 240, hash E649682F
sample 37: sample 37:
time = 7272000 time = 2767045
flags = 1 flags = 1
data = length 96, hash C559A6F4 data = length 96, hash C559A6F4
sample 38: sample 38:
time = 7296000 time = 2791045
flags = 1 flags = 1
data = length 96, hash 792796BC data = length 96, hash 792796BC
sample 39: sample 39:
time = 7320000 time = 2815045
flags = 1 flags = 1
data = length 120, hash 8172CD0E data = length 120, hash 8172CD0E
sample 40: sample 40:
time = 7344000 time = 2839045
flags = 1 flags = 1
data = length 120, hash F562B52F data = length 120, hash F562B52F
sample 41: sample 41:
time = 7368000 time = 2863045
flags = 1 flags = 1
data = length 96, hash FF8D5B98 data = length 96, hash FF8D5B98
tracksEnded = true tracksEnded = true

View File

@ -1,17 +1,17 @@
seekMap: seekMap:
isSeekable = true isSeekable = true
duration = 9540000 duration = 2807972
getPosition(0) = [[timeUs=0, position=237]] getPosition(0) = [[timeUs=0, position=237]]
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]] getPosition(1) = [[timeUs=0, position=237], [timeUs=73, position=238]]
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]] getPosition(1403986) = [[timeUs=1403912, position=19316], [timeUs=1403986, position=19317]]
getPosition(9540000) = [[timeUs=9516000, position=38301]] getPosition(2807972) = [[timeUs=2807899, position=38396]]
numberOfTracks = 1 numberOfTracks = 1
track 0: track 0:
total output bytes = 96 total output bytes = 0
sample count = 1 sample count = 0
track duration = 9540000 track duration = 2807972
format 0: format 0:
averageBitrate = 32000 averageBitrate = 108719
containerMimeType = audio/mpeg containerMimeType = audio/mpeg
sampleMimeType = audio/mpeg sampleMimeType = audio/mpeg
maxInputSize = 4096 maxInputSize = 4096
@ -20,8 +20,4 @@ track 0:
encoderDelay = 576 encoderDelay = 576
encoderPadding = 576 encoderPadding = 576
metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]] metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]]
sample 0:
time = 9516000
flags = 1
data = length 96, hash FF8D5B98
tracksEnded = true tracksEnded = true

View File

@ -1,14 +1,17 @@
seekMap: seekMap:
isSeekable = true isSeekable = true
duration = UNSET TIME duration = 2807972
getPosition(0) = [[timeUs=0, position=237]] getPosition(0) = [[timeUs=0, position=237]]
getPosition(1) = [[timeUs=0, position=237]] getPosition(1) = [[timeUs=0, position=237], [timeUs=73, position=238]]
getPosition(1403986) = [[timeUs=1403912, position=19316], [timeUs=1403986, position=19317]]
getPosition(2807972) = [[timeUs=2807899, position=38396]]
numberOfTracks = 1 numberOfTracks = 1
track 0: track 0:
total output bytes = 38160 total output bytes = 38160
sample count = 117 sample count = 117
track duration = 2807972
format 0: format 0:
averageBitrate = 32000 averageBitrate = 108719
containerMimeType = audio/mpeg containerMimeType = audio/mpeg
sampleMimeType = audio/mpeg sampleMimeType = audio/mpeg
maxInputSize = 4096 maxInputSize = 4096

View File

@ -1,17 +1,17 @@
seekMap: seekMap:
isSeekable = true isSeekable = true
duration = 9540000 duration = 2807972
getPosition(0) = [[timeUs=0, position=237]] getPosition(0) = [[timeUs=0, position=237]]
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]] getPosition(1) = [[timeUs=0, position=237], [timeUs=73, position=238]]
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]] getPosition(1403986) = [[timeUs=1403912, position=19316], [timeUs=1403986, position=19317]]
getPosition(9540000) = [[timeUs=9516000, position=38301]] getPosition(2807972) = [[timeUs=2807899, position=38396]]
numberOfTracks = 1 numberOfTracks = 1
track 0: track 0:
total output bytes = 38160 total output bytes = 38160
sample count = 117 sample count = 117
track duration = 9540000 track duration = 2807972
format 0: format 0:
averageBitrate = 32000 averageBitrate = 108719
containerMimeType = audio/mpeg containerMimeType = audio/mpeg
sampleMimeType = audio/mpeg sampleMimeType = audio/mpeg
maxInputSize = 4096 maxInputSize = 4096

View File

@ -1,17 +1,17 @@
seekMap: seekMap:
isSeekable = true isSeekable = true
duration = 9540000 duration = 2807972
getPosition(0) = [[timeUs=0, position=237]] getPosition(0) = [[timeUs=0, position=237]]
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]] getPosition(1) = [[timeUs=0, position=237], [timeUs=73, position=238]]
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]] getPosition(1403986) = [[timeUs=1403912, position=19316], [timeUs=1403986, position=19317]]
getPosition(9540000) = [[timeUs=9516000, position=38301]] getPosition(2807972) = [[timeUs=2807899, position=38396]]
numberOfTracks = 1 numberOfTracks = 1
track 0: track 0:
total output bytes = 25344 total output bytes = 25344
sample count = 80 sample count = 80
track duration = 9540000 track duration = 2807972
format 0: format 0:
averageBitrate = 32000 averageBitrate = 108719
containerMimeType = audio/mpeg containerMimeType = audio/mpeg
sampleMimeType = audio/mpeg sampleMimeType = audio/mpeg
maxInputSize = 4096 maxInputSize = 4096
@ -21,323 +21,323 @@ track 0:
encoderPadding = 576 encoderPadding = 576
metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]] metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]]
sample 0: sample 0:
time = 3204000 time = 943055
flags = 1 flags = 1
data = length 336, hash E917C122 data = length 336, hash E917C122
sample 1: sample 1:
time = 3228000 time = 967055
flags = 1 flags = 1
data = length 336, hash 10ED1470 data = length 336, hash 10ED1470
sample 2: sample 2:
time = 3252000 time = 991055
flags = 1 flags = 1
data = length 288, hash 706B8A7C data = length 288, hash 706B8A7C
sample 3: sample 3:
time = 3276000 time = 1015055
flags = 1 flags = 1
data = length 336, hash 71FFE4A0 data = length 336, hash 71FFE4A0
sample 4: sample 4:
time = 3300000 time = 1039055
flags = 1 flags = 1
data = length 336, hash D4160463 data = length 336, hash D4160463
sample 5: sample 5:
time = 3324000 time = 1063055
flags = 1 flags = 1
data = length 336, hash EC557B14 data = length 336, hash EC557B14
sample 6: sample 6:
time = 3348000 time = 1087055
flags = 1 flags = 1
data = length 288, hash 5598CF8B data = length 288, hash 5598CF8B
sample 7: sample 7:
time = 3372000 time = 1111055
flags = 1 flags = 1
data = length 336, hash 7E0AB41 data = length 336, hash 7E0AB41
sample 8: sample 8:
time = 3396000 time = 1135055
flags = 1 flags = 1
data = length 336, hash 1C585FEF data = length 336, hash 1C585FEF
sample 9: sample 9:
time = 3420000 time = 1159055
flags = 1 flags = 1
data = length 336, hash A4A4855E data = length 336, hash A4A4855E
sample 10: sample 10:
time = 3444000 time = 1183055
flags = 1 flags = 1
data = length 336, hash CECA51D3 data = length 336, hash CECA51D3
sample 11: sample 11:
time = 3468000 time = 1207055
flags = 1 flags = 1
data = length 288, hash 2D362DC5 data = length 288, hash 2D362DC5
sample 12: sample 12:
time = 3492000 time = 1231055
flags = 1 flags = 1
data = length 336, hash 9EB2609D data = length 336, hash 9EB2609D
sample 13: sample 13:
time = 3516000 time = 1255055
flags = 1 flags = 1
data = length 336, hash 28FFB3FE data = length 336, hash 28FFB3FE
sample 14: sample 14:
time = 3540000 time = 1279055
flags = 1 flags = 1
data = length 288, hash 2AA2D216 data = length 288, hash 2AA2D216
sample 15: sample 15:
time = 3564000 time = 1303055
flags = 1 flags = 1
data = length 336, hash CDBC7032 data = length 336, hash CDBC7032
sample 16: sample 16:
time = 3588000 time = 1327055
flags = 1 flags = 1
data = length 336, hash 25B13FE7 data = length 336, hash 25B13FE7
sample 17: sample 17:
time = 3612000 time = 1351055
flags = 1 flags = 1
data = length 336, hash DB6BB1E data = length 336, hash DB6BB1E
sample 18: sample 18:
time = 3636000 time = 1375055
flags = 1 flags = 1
data = length 336, hash EBE951F4 data = length 336, hash EBE951F4
sample 19: sample 19:
time = 3660000 time = 1399055
flags = 1 flags = 1
data = length 288, hash 9E2EBFF7 data = length 288, hash 9E2EBFF7
sample 20: sample 20:
time = 3684000 time = 1423055
flags = 1 flags = 1
data = length 336, hash 36A7D455 data = length 336, hash 36A7D455
sample 21: sample 21:
time = 3708000 time = 1447055
flags = 1 flags = 1
data = length 336, hash 84545F8C data = length 336, hash 84545F8C
sample 22: sample 22:
time = 3732000 time = 1471055
flags = 1 flags = 1
data = length 336, hash F66F3045 data = length 336, hash F66F3045
sample 23: sample 23:
time = 3756000 time = 1495055
flags = 1 flags = 1
data = length 576, hash 5AB089EA data = length 576, hash 5AB089EA
sample 24: sample 24:
time = 3780000 time = 1519055
flags = 1 flags = 1
data = length 336, hash 8868086 data = length 336, hash 8868086
sample 25: sample 25:
time = 3804000 time = 1543055
flags = 1 flags = 1
data = length 336, hash D5EB6D63 data = length 336, hash D5EB6D63
sample 26: sample 26:
time = 3828000 time = 1567055
flags = 1 flags = 1
data = length 288, hash 7A5374B7 data = length 288, hash 7A5374B7
sample 27: sample 27:
time = 3852000 time = 1591055
flags = 1 flags = 1
data = length 336, hash BEB27A75 data = length 336, hash BEB27A75
sample 28: sample 28:
time = 3876000 time = 1615055
flags = 1 flags = 1
data = length 336, hash E251E0FD data = length 336, hash E251E0FD
sample 29: sample 29:
time = 3900000 time = 1639055
flags = 1 flags = 1
data = length 288, hash D54C970 data = length 288, hash D54C970
sample 30: sample 30:
time = 3924000 time = 1663055
flags = 1 flags = 1
data = length 336, hash 52C473B9 data = length 336, hash 52C473B9
sample 31: sample 31:
time = 3948000 time = 1687055
flags = 1 flags = 1
data = length 336, hash F5F13334 data = length 336, hash F5F13334
sample 32: sample 32:
time = 3972000 time = 1711055
flags = 1 flags = 1
data = length 480, hash A5F1E987 data = length 480, hash A5F1E987
sample 33: sample 33:
time = 3996000 time = 1735055
flags = 1 flags = 1
data = length 288, hash 453A1267 data = length 288, hash 453A1267
sample 34: sample 34:
time = 4020000 time = 1759055
flags = 1 flags = 1
data = length 288, hash 7C6C2EA9 data = length 288, hash 7C6C2EA9
sample 35: sample 35:
time = 4044000 time = 1783055
flags = 1 flags = 1
data = length 336, hash F4BFECA4 data = length 336, hash F4BFECA4
sample 36: sample 36:
time = 4068000 time = 1807055
flags = 1 flags = 1
data = length 336, hash 751A395A data = length 336, hash 751A395A
sample 37: sample 37:
time = 4092000 time = 1831055
flags = 1 flags = 1
data = length 336, hash EE38DB02 data = length 336, hash EE38DB02
sample 38: sample 38:
time = 4116000 time = 1855055
flags = 1 flags = 1
data = length 336, hash F18837E2 data = length 336, hash F18837E2
sample 39: sample 39:
time = 4140000 time = 1879055
flags = 1 flags = 1
data = length 336, hash ED36B78E data = length 336, hash ED36B78E
sample 40: sample 40:
time = 4164000 time = 1903055
flags = 1 flags = 1
data = length 336, hash B3D28289 data = length 336, hash B3D28289
sample 41: sample 41:
time = 4188000 time = 1927055
flags = 1 flags = 1
data = length 288, hash 8BDE28E1 data = length 288, hash 8BDE28E1
sample 42: sample 42:
time = 4212000 time = 1951055
flags = 1 flags = 1
data = length 336, hash CFD5E966 data = length 336, hash CFD5E966
sample 43: sample 43:
time = 4236000 time = 1975055
flags = 1 flags = 1
data = length 288, hash DC08E267 data = length 288, hash DC08E267
sample 44: sample 44:
time = 4260000 time = 1999055
flags = 1 flags = 1
data = length 336, hash 6530CB78 data = length 336, hash 6530CB78
sample 45: sample 45:
time = 4284000 time = 2023055
flags = 1 flags = 1
data = length 336, hash 6CC6636E data = length 336, hash 6CC6636E
sample 46: sample 46:
time = 4308000 time = 2047055
flags = 1 flags = 1
data = length 336, hash 613047C1 data = length 336, hash 613047C1
sample 47: sample 47:
time = 4332000 time = 2071055
flags = 1 flags = 1
data = length 288, hash CDC747BF data = length 288, hash CDC747BF
sample 48: sample 48:
time = 4356000 time = 2095055
flags = 1 flags = 1
data = length 336, hash AF22AA74 data = length 336, hash AF22AA74
sample 49: sample 49:
time = 4380000 time = 2119055
flags = 1 flags = 1
data = length 384, hash 82F326AA data = length 384, hash 82F326AA
sample 50: sample 50:
time = 4404000 time = 2143055
flags = 1 flags = 1
data = length 384, hash EDA26C4D data = length 384, hash EDA26C4D
sample 51: sample 51:
time = 4428000 time = 2167055
flags = 1 flags = 1
data = length 336, hash 94C643DC data = length 336, hash 94C643DC
sample 52: sample 52:
time = 4452000 time = 2191055
flags = 1 flags = 1
data = length 288, hash CB5D9C40 data = length 288, hash CB5D9C40
sample 53: sample 53:
time = 4476000 time = 2215055
flags = 1 flags = 1
data = length 336, hash 1E69DE3F data = length 336, hash 1E69DE3F
sample 54: sample 54:
time = 4500000 time = 2239055
flags = 1 flags = 1
data = length 336, hash 7E472219 data = length 336, hash 7E472219
sample 55: sample 55:
time = 4524000 time = 2263055
flags = 1 flags = 1
data = length 336, hash DA47B9FA data = length 336, hash DA47B9FA
sample 56: sample 56:
time = 4548000 time = 2287055
flags = 1 flags = 1
data = length 336, hash DD0ABB7C data = length 336, hash DD0ABB7C
sample 57: sample 57:
time = 4572000 time = 2311055
flags = 1 flags = 1
data = length 288, hash DBF93FAC data = length 288, hash DBF93FAC
sample 58: sample 58:
time = 4596000 time = 2335055
flags = 1 flags = 1
data = length 336, hash 243F4B2 data = length 336, hash 243F4B2
sample 59: sample 59:
time = 4620000 time = 2359055
flags = 1 flags = 1
data = length 336, hash 2E881490 data = length 336, hash 2E881490
sample 60: sample 60:
time = 4644000 time = 2383055
flags = 1 flags = 1
data = length 288, hash 1C28C8BE data = length 288, hash 1C28C8BE
sample 61: sample 61:
time = 4668000 time = 2407055
flags = 1 flags = 1
data = length 336, hash C73E5D30 data = length 336, hash C73E5D30
sample 62: sample 62:
time = 4692000 time = 2431055
flags = 1 flags = 1
data = length 288, hash 98B5BFF6 data = length 288, hash 98B5BFF6
sample 63: sample 63:
time = 4716000 time = 2455055
flags = 1 flags = 1
data = length 336, hash E0135533 data = length 336, hash E0135533
sample 64: sample 64:
time = 4740000 time = 2479055
flags = 1 flags = 1
data = length 336, hash D13C9DBC data = length 336, hash D13C9DBC
sample 65: sample 65:
time = 4764000 time = 2503055
flags = 1 flags = 1
data = length 336, hash 63D524CA data = length 336, hash 63D524CA
sample 66: sample 66:
time = 4788000 time = 2527055
flags = 1 flags = 1
data = length 288, hash A28514C3 data = length 288, hash A28514C3
sample 67: sample 67:
time = 4812000 time = 2551055
flags = 1 flags = 1
data = length 336, hash 72B647FF data = length 336, hash 72B647FF
sample 68: sample 68:
time = 4836000 time = 2575055
flags = 1 flags = 1
data = length 336, hash 8F740AB1 data = length 336, hash 8F740AB1
sample 69: sample 69:
time = 4860000 time = 2599055
flags = 1 flags = 1
data = length 336, hash 5E3C7E93 data = length 336, hash 5E3C7E93
sample 70: sample 70:
time = 4884000 time = 2623055
flags = 1 flags = 1
data = length 336, hash 121B913B data = length 336, hash 121B913B
sample 71: sample 71:
time = 4908000 time = 2647055
flags = 1 flags = 1
data = length 336, hash 578FCCF2 data = length 336, hash 578FCCF2
sample 72: sample 72:
time = 4932000 time = 2671055
flags = 1 flags = 1
data = length 336, hash 5B5823DE data = length 336, hash 5B5823DE
sample 73: sample 73:
time = 4956000 time = 2695055
flags = 1 flags = 1
data = length 384, hash D8B83F78 data = length 384, hash D8B83F78
sample 74: sample 74:
time = 4980000 time = 2719055
flags = 1 flags = 1
data = length 240, hash E649682F data = length 240, hash E649682F
sample 75: sample 75:
time = 5004000 time = 2743055
flags = 1 flags = 1
data = length 96, hash C559A6F4 data = length 96, hash C559A6F4
sample 76: sample 76:
time = 5028000 time = 2767055
flags = 1 flags = 1
data = length 96, hash 792796BC data = length 96, hash 792796BC
sample 77: sample 77:
time = 5052000 time = 2791055
flags = 1 flags = 1
data = length 120, hash 8172CD0E data = length 120, hash 8172CD0E
sample 78: sample 78:
time = 5076000 time = 2815055
flags = 1 flags = 1
data = length 120, hash F562B52F data = length 120, hash F562B52F
sample 79: sample 79:
time = 5100000 time = 2839055
flags = 1 flags = 1
data = length 96, hash FF8D5B98 data = length 96, hash FF8D5B98
tracksEnded = true tracksEnded = true

View File

@ -1,17 +1,17 @@
seekMap: seekMap:
isSeekable = true isSeekable = true
duration = 9540000 duration = 2807972
getPosition(0) = [[timeUs=0, position=237]] getPosition(0) = [[timeUs=0, position=237]]
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]] getPosition(1) = [[timeUs=0, position=237], [timeUs=73, position=238]]
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]] getPosition(1403986) = [[timeUs=1403912, position=19316], [timeUs=1403986, position=19317]]
getPosition(9540000) = [[timeUs=9516000, position=38301]] getPosition(2807972) = [[timeUs=2807899, position=38396]]
numberOfTracks = 1 numberOfTracks = 1
track 0: track 0:
total output bytes = 12624 total output bytes = 12624
sample count = 42 sample count = 42
track duration = 9540000 track duration = 2807972
format 0: format 0:
averageBitrate = 32000 averageBitrate = 108719
containerMimeType = audio/mpeg containerMimeType = audio/mpeg
sampleMimeType = audio/mpeg sampleMimeType = audio/mpeg
maxInputSize = 4096 maxInputSize = 4096
@ -21,171 +21,171 @@ track 0:
encoderPadding = 576 encoderPadding = 576
metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]] metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]]
sample 0: sample 0:
time = 6384000 time = 1879045
flags = 1 flags = 1
data = length 336, hash F18837E2 data = length 336, hash F18837E2
sample 1: sample 1:
time = 6408000 time = 1903045
flags = 1 flags = 1
data = length 336, hash ED36B78E data = length 336, hash ED36B78E
sample 2: sample 2:
time = 6432000 time = 1927045
flags = 1 flags = 1
data = length 336, hash B3D28289 data = length 336, hash B3D28289
sample 3: sample 3:
time = 6456000 time = 1951045
flags = 1 flags = 1
data = length 288, hash 8BDE28E1 data = length 288, hash 8BDE28E1
sample 4: sample 4:
time = 6480000 time = 1975045
flags = 1 flags = 1
data = length 336, hash CFD5E966 data = length 336, hash CFD5E966
sample 5: sample 5:
time = 6504000 time = 1999045
flags = 1 flags = 1
data = length 288, hash DC08E267 data = length 288, hash DC08E267
sample 6: sample 6:
time = 6528000 time = 2023045
flags = 1 flags = 1
data = length 336, hash 6530CB78 data = length 336, hash 6530CB78
sample 7: sample 7:
time = 6552000 time = 2047045
flags = 1 flags = 1
data = length 336, hash 6CC6636E data = length 336, hash 6CC6636E
sample 8: sample 8:
time = 6576000 time = 2071045
flags = 1 flags = 1
data = length 336, hash 613047C1 data = length 336, hash 613047C1
sample 9: sample 9:
time = 6600000 time = 2095045
flags = 1 flags = 1
data = length 288, hash CDC747BF data = length 288, hash CDC747BF
sample 10: sample 10:
time = 6624000 time = 2119045
flags = 1 flags = 1
data = length 336, hash AF22AA74 data = length 336, hash AF22AA74
sample 11: sample 11:
time = 6648000 time = 2143045
flags = 1 flags = 1
data = length 384, hash 82F326AA data = length 384, hash 82F326AA
sample 12: sample 12:
time = 6672000 time = 2167045
flags = 1 flags = 1
data = length 384, hash EDA26C4D data = length 384, hash EDA26C4D
sample 13: sample 13:
time = 6696000 time = 2191045
flags = 1 flags = 1
data = length 336, hash 94C643DC data = length 336, hash 94C643DC
sample 14: sample 14:
time = 6720000 time = 2215045
flags = 1 flags = 1
data = length 288, hash CB5D9C40 data = length 288, hash CB5D9C40
sample 15: sample 15:
time = 6744000 time = 2239045
flags = 1 flags = 1
data = length 336, hash 1E69DE3F data = length 336, hash 1E69DE3F
sample 16: sample 16:
time = 6768000 time = 2263045
flags = 1 flags = 1
data = length 336, hash 7E472219 data = length 336, hash 7E472219
sample 17: sample 17:
time = 6792000 time = 2287045
flags = 1 flags = 1
data = length 336, hash DA47B9FA data = length 336, hash DA47B9FA
sample 18: sample 18:
time = 6816000 time = 2311045
flags = 1 flags = 1
data = length 336, hash DD0ABB7C data = length 336, hash DD0ABB7C
sample 19: sample 19:
time = 6840000 time = 2335045
flags = 1 flags = 1
data = length 288, hash DBF93FAC data = length 288, hash DBF93FAC
sample 20: sample 20:
time = 6864000 time = 2359045
flags = 1 flags = 1
data = length 336, hash 243F4B2 data = length 336, hash 243F4B2
sample 21: sample 21:
time = 6888000 time = 2383045
flags = 1 flags = 1
data = length 336, hash 2E881490 data = length 336, hash 2E881490
sample 22: sample 22:
time = 6912000 time = 2407045
flags = 1 flags = 1
data = length 288, hash 1C28C8BE data = length 288, hash 1C28C8BE
sample 23: sample 23:
time = 6936000 time = 2431045
flags = 1 flags = 1
data = length 336, hash C73E5D30 data = length 336, hash C73E5D30
sample 24: sample 24:
time = 6960000 time = 2455045
flags = 1 flags = 1
data = length 288, hash 98B5BFF6 data = length 288, hash 98B5BFF6
sample 25: sample 25:
time = 6984000 time = 2479045
flags = 1 flags = 1
data = length 336, hash E0135533 data = length 336, hash E0135533
sample 26: sample 26:
time = 7008000 time = 2503045
flags = 1 flags = 1
data = length 336, hash D13C9DBC data = length 336, hash D13C9DBC
sample 27: sample 27:
time = 7032000 time = 2527045
flags = 1 flags = 1
data = length 336, hash 63D524CA data = length 336, hash 63D524CA
sample 28: sample 28:
time = 7056000 time = 2551045
flags = 1 flags = 1
data = length 288, hash A28514C3 data = length 288, hash A28514C3
sample 29: sample 29:
time = 7080000 time = 2575045
flags = 1 flags = 1
data = length 336, hash 72B647FF data = length 336, hash 72B647FF
sample 30: sample 30:
time = 7104000 time = 2599045
flags = 1 flags = 1
data = length 336, hash 8F740AB1 data = length 336, hash 8F740AB1
sample 31: sample 31:
time = 7128000 time = 2623045
flags = 1 flags = 1
data = length 336, hash 5E3C7E93 data = length 336, hash 5E3C7E93
sample 32: sample 32:
time = 7152000 time = 2647045
flags = 1 flags = 1
data = length 336, hash 121B913B data = length 336, hash 121B913B
sample 33: sample 33:
time = 7176000 time = 2671045
flags = 1 flags = 1
data = length 336, hash 578FCCF2 data = length 336, hash 578FCCF2
sample 34: sample 34:
time = 7200000 time = 2695045
flags = 1 flags = 1
data = length 336, hash 5B5823DE data = length 336, hash 5B5823DE
sample 35: sample 35:
time = 7224000 time = 2719045
flags = 1 flags = 1
data = length 384, hash D8B83F78 data = length 384, hash D8B83F78
sample 36: sample 36:
time = 7248000 time = 2743045
flags = 1 flags = 1
data = length 240, hash E649682F data = length 240, hash E649682F
sample 37: sample 37:
time = 7272000 time = 2767045
flags = 1 flags = 1
data = length 96, hash C559A6F4 data = length 96, hash C559A6F4
sample 38: sample 38:
time = 7296000 time = 2791045
flags = 1 flags = 1
data = length 96, hash 792796BC data = length 96, hash 792796BC
sample 39: sample 39:
time = 7320000 time = 2815045
flags = 1 flags = 1
data = length 120, hash 8172CD0E data = length 120, hash 8172CD0E
sample 40: sample 40:
time = 7344000 time = 2839045
flags = 1 flags = 1
data = length 120, hash F562B52F data = length 120, hash F562B52F
sample 41: sample 41:
time = 7368000 time = 2863045
flags = 1 flags = 1
data = length 96, hash FF8D5B98 data = length 96, hash FF8D5B98
tracksEnded = true tracksEnded = true

View File

@ -1,17 +1,17 @@
seekMap: seekMap:
isSeekable = true isSeekable = true
duration = 9540000 duration = 2807972
getPosition(0) = [[timeUs=0, position=237]] getPosition(0) = [[timeUs=0, position=237]]
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]] getPosition(1) = [[timeUs=0, position=237], [timeUs=73, position=238]]
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]] getPosition(1403986) = [[timeUs=1403912, position=19316], [timeUs=1403986, position=19317]]
getPosition(9540000) = [[timeUs=9516000, position=38301]] getPosition(2807972) = [[timeUs=2807899, position=38396]]
numberOfTracks = 1 numberOfTracks = 1
track 0: track 0:
total output bytes = 96 total output bytes = 0
sample count = 1 sample count = 0
track duration = 9540000 track duration = 2807972
format 0: format 0:
averageBitrate = 32000 averageBitrate = 108719
containerMimeType = audio/mpeg containerMimeType = audio/mpeg
sampleMimeType = audio/mpeg sampleMimeType = audio/mpeg
maxInputSize = 4096 maxInputSize = 4096
@ -20,8 +20,4 @@ track 0:
encoderDelay = 576 encoderDelay = 576
encoderPadding = 576 encoderPadding = 576
metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]] metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]]
sample 0:
time = 9516000
flags = 1
data = length 96, hash FF8D5B98
tracksEnded = true tracksEnded = true

View File

@ -1,13 +1,17 @@
seekMap: seekMap:
isSeekable = false isSeekable = true
duration = UNSET TIME duration = 2807972
getPosition(0) = [[timeUs=0, position=237]] getPosition(0) = [[timeUs=0, position=237]]
getPosition(1) = [[timeUs=0, position=237], [timeUs=73, position=238]]
getPosition(1403986) = [[timeUs=1403912, position=19316], [timeUs=1403986, position=19317]]
getPosition(2807972) = [[timeUs=2807899, position=38396]]
numberOfTracks = 1 numberOfTracks = 1
track 0: track 0:
total output bytes = 38160 total output bytes = 38160
sample count = 117 sample count = 117
track duration = 2807972
format 0: format 0:
averageBitrate = 32000 averageBitrate = 108719
containerMimeType = audio/mpeg containerMimeType = audio/mpeg
sampleMimeType = audio/mpeg sampleMimeType = audio/mpeg
maxInputSize = 4096 maxInputSize = 4096