mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
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:
parent
1918a256cc
commit
99767c6e25
@ -7,6 +7,10 @@
|
||||
* Transformer:
|
||||
* Track Selection:
|
||||
* 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:
|
||||
* Audio:
|
||||
* Allow constant power upmixing/downmixing in DefaultAudioMixer.
|
||||
|
@ -75,6 +75,11 @@ import androidx.media3.extractor.MpegAudioUtil;
|
||||
return getTimeUsAtPosition(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDataStartPosition() {
|
||||
return firstFramePosition;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDataEndPosition() {
|
||||
return dataEndPosition;
|
||||
|
@ -27,6 +27,7 @@ import java.math.RoundingMode;
|
||||
@VisibleForTesting
|
||||
/* package */ static final long MIN_TIME_BETWEEN_POINTS_US = C.MICROS_PER_SECOND / 10;
|
||||
|
||||
private final long dataStartPosition;
|
||||
private final long dataEndPosition;
|
||||
private final int averageBitrate;
|
||||
private final IndexSeekMap indexSeekMap;
|
||||
@ -37,6 +38,7 @@ import java.math.RoundingMode;
|
||||
/* positions= */ new long[] {dataStartPosition},
|
||||
/* timesUs= */ new long[] {0L},
|
||||
durationUs);
|
||||
this.dataStartPosition = dataStartPosition;
|
||||
this.dataEndPosition = dataEndPosition;
|
||||
if (durationUs != C.TIME_UNSET) {
|
||||
long bitrate =
|
||||
@ -54,6 +56,11 @@ import java.math.RoundingMode;
|
||||
return indexSeekMap.getTimeUs(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDataStartPosition() {
|
||||
return dataStartPosition;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDataEndPosition() {
|
||||
return dataEndPosition;
|
||||
|
@ -123,6 +123,11 @@ import androidx.media3.extractor.metadata.id3.MlltFrame;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDataStartPosition() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDataEndPosition() {
|
||||
return C.INDEX_UNSET;
|
||||
|
@ -501,11 +501,43 @@ public final class Mp3Extractor implements Extractor {
|
||||
resultSeeker = seekFrameSeeker;
|
||||
}
|
||||
|
||||
if (resultSeeker == null
|
||||
|| (!resultSeeker.isSeekable() && (flags & FLAG_ENABLE_CONSTANT_BITRATE_SEEKING) != 0)) {
|
||||
if (resultSeeker != null
|
||||
&& 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
|
||||
// flag(s) being set), or an 'enable CBR seeking flag' is set and we found some seek info,
|
||||
// but not enough to seek with. In either case, we fall back to CBR seeking.
|
||||
// flag(s) being set), or an 'enable CBR seeking flag' is set and we found some seek info, but
|
||||
// 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 =
|
||||
getConstantBitrateSeeker(
|
||||
input, (flags & FLAG_ENABLE_CONSTANT_BITRATE_SEEKING_ALWAYS) != 0);
|
||||
@ -514,6 +546,10 @@ public final class Mp3Extractor implements Extractor {
|
||||
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,
|
||||
* returning a {@link Seeker} if the metadata was present and valid, or {@code null} otherwise.
|
||||
|
@ -33,6 +33,12 @@ import androidx.media3.extractor.SeekMap;
|
||||
*/
|
||||
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
|
||||
* {@link C#INDEX_UNSET} if not known.
|
||||
@ -57,6 +63,11 @@ import androidx.media3.extractor.SeekMap;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDataStartPosition() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDataEndPosition() {
|
||||
// Position unset as we do not know the data end position. Note that returning 0 doesn't work.
|
||||
|
@ -51,7 +51,8 @@ import androidx.media3.extractor.SeekPoint;
|
||||
ParsableByteArray frame) {
|
||||
frame.skipBytes(6);
|
||||
int bytes = frame.readInt();
|
||||
long endOfMp3Data = position + mpegAudioHeader.frameSize + bytes;
|
||||
long startOfMp3Data = position + mpegAudioHeader.frameSize;
|
||||
long endOfMp3Data = startOfMp3Data + bytes;
|
||||
int numFrames = frame.readInt();
|
||||
if (numFrames <= 0) {
|
||||
return null;
|
||||
@ -105,20 +106,28 @@ import androidx.media3.extractor.SeekPoint;
|
||||
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[] positions;
|
||||
private final long durationUs;
|
||||
private final long dataStartPosition;
|
||||
private final long dataEndPosition;
|
||||
private final int bitrate;
|
||||
|
||||
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.positions = positions;
|
||||
this.durationUs = durationUs;
|
||||
this.dataStartPosition = dataStartPosition;
|
||||
this.dataEndPosition = dataEndPosition;
|
||||
this.bitrate = bitrate;
|
||||
}
|
||||
@ -150,6 +159,11 @@ import androidx.media3.extractor.SeekPoint;
|
||||
return durationUs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDataStartPosition() {
|
||||
return dataStartPosition;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDataEndPosition() {
|
||||
return dataEndPosition;
|
||||
|
@ -42,11 +42,6 @@ import androidx.media3.extractor.SeekPoint;
|
||||
if (durationUs == C.TIME_UNSET) {
|
||||
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(
|
||||
position,
|
||||
xingFrame.header.frameSize,
|
||||
@ -72,16 +67,6 @@ import androidx.media3.extractor.SeekPoint;
|
||||
*/
|
||||
@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(
|
||||
long dataStartPosition,
|
||||
int xingFrameSize,
|
||||
@ -157,6 +142,11 @@ import androidx.media3.extractor.SeekPoint;
|
||||
return durationUs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDataStartPosition() {
|
||||
return dataStartPosition + xingFrameSize;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDataEndPosition() {
|
||||
return dataEndPosition;
|
||||
|
@ -1,17 +1,17 @@
|
||||
seekMap:
|
||||
isSeekable = true
|
||||
duration = 9540000
|
||||
duration = 2807972
|
||||
getPosition(0) = [[timeUs=0, position=237]]
|
||||
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]]
|
||||
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]]
|
||||
getPosition(9540000) = [[timeUs=9516000, position=38301]]
|
||||
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
|
||||
track 0:
|
||||
total output bytes = 38160
|
||||
sample count = 117
|
||||
track duration = 9540000
|
||||
track duration = 2807972
|
||||
format 0:
|
||||
averageBitrate = 32000
|
||||
averageBitrate = 108719
|
||||
containerMimeType = audio/mpeg
|
||||
sampleMimeType = audio/mpeg
|
||||
maxInputSize = 4096
|
||||
|
@ -1,17 +1,17 @@
|
||||
seekMap:
|
||||
isSeekable = true
|
||||
duration = 9540000
|
||||
duration = 2807972
|
||||
getPosition(0) = [[timeUs=0, position=237]]
|
||||
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]]
|
||||
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]]
|
||||
getPosition(9540000) = [[timeUs=9516000, position=38301]]
|
||||
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
|
||||
track 0:
|
||||
total output bytes = 25344
|
||||
sample count = 80
|
||||
track duration = 9540000
|
||||
track duration = 2807972
|
||||
format 0:
|
||||
averageBitrate = 32000
|
||||
averageBitrate = 108719
|
||||
containerMimeType = audio/mpeg
|
||||
sampleMimeType = audio/mpeg
|
||||
maxInputSize = 4096
|
||||
@ -21,323 +21,323 @@ track 0:
|
||||
encoderPadding = 576
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]]
|
||||
sample 0:
|
||||
time = 3204000
|
||||
time = 943055
|
||||
flags = 1
|
||||
data = length 336, hash E917C122
|
||||
sample 1:
|
||||
time = 3228000
|
||||
time = 967055
|
||||
flags = 1
|
||||
data = length 336, hash 10ED1470
|
||||
sample 2:
|
||||
time = 3252000
|
||||
time = 991055
|
||||
flags = 1
|
||||
data = length 288, hash 706B8A7C
|
||||
sample 3:
|
||||
time = 3276000
|
||||
time = 1015055
|
||||
flags = 1
|
||||
data = length 336, hash 71FFE4A0
|
||||
sample 4:
|
||||
time = 3300000
|
||||
time = 1039055
|
||||
flags = 1
|
||||
data = length 336, hash D4160463
|
||||
sample 5:
|
||||
time = 3324000
|
||||
time = 1063055
|
||||
flags = 1
|
||||
data = length 336, hash EC557B14
|
||||
sample 6:
|
||||
time = 3348000
|
||||
time = 1087055
|
||||
flags = 1
|
||||
data = length 288, hash 5598CF8B
|
||||
sample 7:
|
||||
time = 3372000
|
||||
time = 1111055
|
||||
flags = 1
|
||||
data = length 336, hash 7E0AB41
|
||||
sample 8:
|
||||
time = 3396000
|
||||
time = 1135055
|
||||
flags = 1
|
||||
data = length 336, hash 1C585FEF
|
||||
sample 9:
|
||||
time = 3420000
|
||||
time = 1159055
|
||||
flags = 1
|
||||
data = length 336, hash A4A4855E
|
||||
sample 10:
|
||||
time = 3444000
|
||||
time = 1183055
|
||||
flags = 1
|
||||
data = length 336, hash CECA51D3
|
||||
sample 11:
|
||||
time = 3468000
|
||||
time = 1207055
|
||||
flags = 1
|
||||
data = length 288, hash 2D362DC5
|
||||
sample 12:
|
||||
time = 3492000
|
||||
time = 1231055
|
||||
flags = 1
|
||||
data = length 336, hash 9EB2609D
|
||||
sample 13:
|
||||
time = 3516000
|
||||
time = 1255055
|
||||
flags = 1
|
||||
data = length 336, hash 28FFB3FE
|
||||
sample 14:
|
||||
time = 3540000
|
||||
time = 1279055
|
||||
flags = 1
|
||||
data = length 288, hash 2AA2D216
|
||||
sample 15:
|
||||
time = 3564000
|
||||
time = 1303055
|
||||
flags = 1
|
||||
data = length 336, hash CDBC7032
|
||||
sample 16:
|
||||
time = 3588000
|
||||
time = 1327055
|
||||
flags = 1
|
||||
data = length 336, hash 25B13FE7
|
||||
sample 17:
|
||||
time = 3612000
|
||||
time = 1351055
|
||||
flags = 1
|
||||
data = length 336, hash DB6BB1E
|
||||
sample 18:
|
||||
time = 3636000
|
||||
time = 1375055
|
||||
flags = 1
|
||||
data = length 336, hash EBE951F4
|
||||
sample 19:
|
||||
time = 3660000
|
||||
time = 1399055
|
||||
flags = 1
|
||||
data = length 288, hash 9E2EBFF7
|
||||
sample 20:
|
||||
time = 3684000
|
||||
time = 1423055
|
||||
flags = 1
|
||||
data = length 336, hash 36A7D455
|
||||
sample 21:
|
||||
time = 3708000
|
||||
time = 1447055
|
||||
flags = 1
|
||||
data = length 336, hash 84545F8C
|
||||
sample 22:
|
||||
time = 3732000
|
||||
time = 1471055
|
||||
flags = 1
|
||||
data = length 336, hash F66F3045
|
||||
sample 23:
|
||||
time = 3756000
|
||||
time = 1495055
|
||||
flags = 1
|
||||
data = length 576, hash 5AB089EA
|
||||
sample 24:
|
||||
time = 3780000
|
||||
time = 1519055
|
||||
flags = 1
|
||||
data = length 336, hash 8868086
|
||||
sample 25:
|
||||
time = 3804000
|
||||
time = 1543055
|
||||
flags = 1
|
||||
data = length 336, hash D5EB6D63
|
||||
sample 26:
|
||||
time = 3828000
|
||||
time = 1567055
|
||||
flags = 1
|
||||
data = length 288, hash 7A5374B7
|
||||
sample 27:
|
||||
time = 3852000
|
||||
time = 1591055
|
||||
flags = 1
|
||||
data = length 336, hash BEB27A75
|
||||
sample 28:
|
||||
time = 3876000
|
||||
time = 1615055
|
||||
flags = 1
|
||||
data = length 336, hash E251E0FD
|
||||
sample 29:
|
||||
time = 3900000
|
||||
time = 1639055
|
||||
flags = 1
|
||||
data = length 288, hash D54C970
|
||||
sample 30:
|
||||
time = 3924000
|
||||
time = 1663055
|
||||
flags = 1
|
||||
data = length 336, hash 52C473B9
|
||||
sample 31:
|
||||
time = 3948000
|
||||
time = 1687055
|
||||
flags = 1
|
||||
data = length 336, hash F5F13334
|
||||
sample 32:
|
||||
time = 3972000
|
||||
time = 1711055
|
||||
flags = 1
|
||||
data = length 480, hash A5F1E987
|
||||
sample 33:
|
||||
time = 3996000
|
||||
time = 1735055
|
||||
flags = 1
|
||||
data = length 288, hash 453A1267
|
||||
sample 34:
|
||||
time = 4020000
|
||||
time = 1759055
|
||||
flags = 1
|
||||
data = length 288, hash 7C6C2EA9
|
||||
sample 35:
|
||||
time = 4044000
|
||||
time = 1783055
|
||||
flags = 1
|
||||
data = length 336, hash F4BFECA4
|
||||
sample 36:
|
||||
time = 4068000
|
||||
time = 1807055
|
||||
flags = 1
|
||||
data = length 336, hash 751A395A
|
||||
sample 37:
|
||||
time = 4092000
|
||||
time = 1831055
|
||||
flags = 1
|
||||
data = length 336, hash EE38DB02
|
||||
sample 38:
|
||||
time = 4116000
|
||||
time = 1855055
|
||||
flags = 1
|
||||
data = length 336, hash F18837E2
|
||||
sample 39:
|
||||
time = 4140000
|
||||
time = 1879055
|
||||
flags = 1
|
||||
data = length 336, hash ED36B78E
|
||||
sample 40:
|
||||
time = 4164000
|
||||
time = 1903055
|
||||
flags = 1
|
||||
data = length 336, hash B3D28289
|
||||
sample 41:
|
||||
time = 4188000
|
||||
time = 1927055
|
||||
flags = 1
|
||||
data = length 288, hash 8BDE28E1
|
||||
sample 42:
|
||||
time = 4212000
|
||||
time = 1951055
|
||||
flags = 1
|
||||
data = length 336, hash CFD5E966
|
||||
sample 43:
|
||||
time = 4236000
|
||||
time = 1975055
|
||||
flags = 1
|
||||
data = length 288, hash DC08E267
|
||||
sample 44:
|
||||
time = 4260000
|
||||
time = 1999055
|
||||
flags = 1
|
||||
data = length 336, hash 6530CB78
|
||||
sample 45:
|
||||
time = 4284000
|
||||
time = 2023055
|
||||
flags = 1
|
||||
data = length 336, hash 6CC6636E
|
||||
sample 46:
|
||||
time = 4308000
|
||||
time = 2047055
|
||||
flags = 1
|
||||
data = length 336, hash 613047C1
|
||||
sample 47:
|
||||
time = 4332000
|
||||
time = 2071055
|
||||
flags = 1
|
||||
data = length 288, hash CDC747BF
|
||||
sample 48:
|
||||
time = 4356000
|
||||
time = 2095055
|
||||
flags = 1
|
||||
data = length 336, hash AF22AA74
|
||||
sample 49:
|
||||
time = 4380000
|
||||
time = 2119055
|
||||
flags = 1
|
||||
data = length 384, hash 82F326AA
|
||||
sample 50:
|
||||
time = 4404000
|
||||
time = 2143055
|
||||
flags = 1
|
||||
data = length 384, hash EDA26C4D
|
||||
sample 51:
|
||||
time = 4428000
|
||||
time = 2167055
|
||||
flags = 1
|
||||
data = length 336, hash 94C643DC
|
||||
sample 52:
|
||||
time = 4452000
|
||||
time = 2191055
|
||||
flags = 1
|
||||
data = length 288, hash CB5D9C40
|
||||
sample 53:
|
||||
time = 4476000
|
||||
time = 2215055
|
||||
flags = 1
|
||||
data = length 336, hash 1E69DE3F
|
||||
sample 54:
|
||||
time = 4500000
|
||||
time = 2239055
|
||||
flags = 1
|
||||
data = length 336, hash 7E472219
|
||||
sample 55:
|
||||
time = 4524000
|
||||
time = 2263055
|
||||
flags = 1
|
||||
data = length 336, hash DA47B9FA
|
||||
sample 56:
|
||||
time = 4548000
|
||||
time = 2287055
|
||||
flags = 1
|
||||
data = length 336, hash DD0ABB7C
|
||||
sample 57:
|
||||
time = 4572000
|
||||
time = 2311055
|
||||
flags = 1
|
||||
data = length 288, hash DBF93FAC
|
||||
sample 58:
|
||||
time = 4596000
|
||||
time = 2335055
|
||||
flags = 1
|
||||
data = length 336, hash 243F4B2
|
||||
sample 59:
|
||||
time = 4620000
|
||||
time = 2359055
|
||||
flags = 1
|
||||
data = length 336, hash 2E881490
|
||||
sample 60:
|
||||
time = 4644000
|
||||
time = 2383055
|
||||
flags = 1
|
||||
data = length 288, hash 1C28C8BE
|
||||
sample 61:
|
||||
time = 4668000
|
||||
time = 2407055
|
||||
flags = 1
|
||||
data = length 336, hash C73E5D30
|
||||
sample 62:
|
||||
time = 4692000
|
||||
time = 2431055
|
||||
flags = 1
|
||||
data = length 288, hash 98B5BFF6
|
||||
sample 63:
|
||||
time = 4716000
|
||||
time = 2455055
|
||||
flags = 1
|
||||
data = length 336, hash E0135533
|
||||
sample 64:
|
||||
time = 4740000
|
||||
time = 2479055
|
||||
flags = 1
|
||||
data = length 336, hash D13C9DBC
|
||||
sample 65:
|
||||
time = 4764000
|
||||
time = 2503055
|
||||
flags = 1
|
||||
data = length 336, hash 63D524CA
|
||||
sample 66:
|
||||
time = 4788000
|
||||
time = 2527055
|
||||
flags = 1
|
||||
data = length 288, hash A28514C3
|
||||
sample 67:
|
||||
time = 4812000
|
||||
time = 2551055
|
||||
flags = 1
|
||||
data = length 336, hash 72B647FF
|
||||
sample 68:
|
||||
time = 4836000
|
||||
time = 2575055
|
||||
flags = 1
|
||||
data = length 336, hash 8F740AB1
|
||||
sample 69:
|
||||
time = 4860000
|
||||
time = 2599055
|
||||
flags = 1
|
||||
data = length 336, hash 5E3C7E93
|
||||
sample 70:
|
||||
time = 4884000
|
||||
time = 2623055
|
||||
flags = 1
|
||||
data = length 336, hash 121B913B
|
||||
sample 71:
|
||||
time = 4908000
|
||||
time = 2647055
|
||||
flags = 1
|
||||
data = length 336, hash 578FCCF2
|
||||
sample 72:
|
||||
time = 4932000
|
||||
time = 2671055
|
||||
flags = 1
|
||||
data = length 336, hash 5B5823DE
|
||||
sample 73:
|
||||
time = 4956000
|
||||
time = 2695055
|
||||
flags = 1
|
||||
data = length 384, hash D8B83F78
|
||||
sample 74:
|
||||
time = 4980000
|
||||
time = 2719055
|
||||
flags = 1
|
||||
data = length 240, hash E649682F
|
||||
sample 75:
|
||||
time = 5004000
|
||||
time = 2743055
|
||||
flags = 1
|
||||
data = length 96, hash C559A6F4
|
||||
sample 76:
|
||||
time = 5028000
|
||||
time = 2767055
|
||||
flags = 1
|
||||
data = length 96, hash 792796BC
|
||||
sample 77:
|
||||
time = 5052000
|
||||
time = 2791055
|
||||
flags = 1
|
||||
data = length 120, hash 8172CD0E
|
||||
sample 78:
|
||||
time = 5076000
|
||||
time = 2815055
|
||||
flags = 1
|
||||
data = length 120, hash F562B52F
|
||||
sample 79:
|
||||
time = 5100000
|
||||
time = 2839055
|
||||
flags = 1
|
||||
data = length 96, hash FF8D5B98
|
||||
tracksEnded = true
|
||||
|
@ -1,17 +1,17 @@
|
||||
seekMap:
|
||||
isSeekable = true
|
||||
duration = 9540000
|
||||
duration = 2807972
|
||||
getPosition(0) = [[timeUs=0, position=237]]
|
||||
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]]
|
||||
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]]
|
||||
getPosition(9540000) = [[timeUs=9516000, position=38301]]
|
||||
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
|
||||
track 0:
|
||||
total output bytes = 12624
|
||||
sample count = 42
|
||||
track duration = 9540000
|
||||
track duration = 2807972
|
||||
format 0:
|
||||
averageBitrate = 32000
|
||||
averageBitrate = 108719
|
||||
containerMimeType = audio/mpeg
|
||||
sampleMimeType = audio/mpeg
|
||||
maxInputSize = 4096
|
||||
@ -21,171 +21,171 @@ track 0:
|
||||
encoderPadding = 576
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]]
|
||||
sample 0:
|
||||
time = 6384000
|
||||
time = 1879045
|
||||
flags = 1
|
||||
data = length 336, hash F18837E2
|
||||
sample 1:
|
||||
time = 6408000
|
||||
time = 1903045
|
||||
flags = 1
|
||||
data = length 336, hash ED36B78E
|
||||
sample 2:
|
||||
time = 6432000
|
||||
time = 1927045
|
||||
flags = 1
|
||||
data = length 336, hash B3D28289
|
||||
sample 3:
|
||||
time = 6456000
|
||||
time = 1951045
|
||||
flags = 1
|
||||
data = length 288, hash 8BDE28E1
|
||||
sample 4:
|
||||
time = 6480000
|
||||
time = 1975045
|
||||
flags = 1
|
||||
data = length 336, hash CFD5E966
|
||||
sample 5:
|
||||
time = 6504000
|
||||
time = 1999045
|
||||
flags = 1
|
||||
data = length 288, hash DC08E267
|
||||
sample 6:
|
||||
time = 6528000
|
||||
time = 2023045
|
||||
flags = 1
|
||||
data = length 336, hash 6530CB78
|
||||
sample 7:
|
||||
time = 6552000
|
||||
time = 2047045
|
||||
flags = 1
|
||||
data = length 336, hash 6CC6636E
|
||||
sample 8:
|
||||
time = 6576000
|
||||
time = 2071045
|
||||
flags = 1
|
||||
data = length 336, hash 613047C1
|
||||
sample 9:
|
||||
time = 6600000
|
||||
time = 2095045
|
||||
flags = 1
|
||||
data = length 288, hash CDC747BF
|
||||
sample 10:
|
||||
time = 6624000
|
||||
time = 2119045
|
||||
flags = 1
|
||||
data = length 336, hash AF22AA74
|
||||
sample 11:
|
||||
time = 6648000
|
||||
time = 2143045
|
||||
flags = 1
|
||||
data = length 384, hash 82F326AA
|
||||
sample 12:
|
||||
time = 6672000
|
||||
time = 2167045
|
||||
flags = 1
|
||||
data = length 384, hash EDA26C4D
|
||||
sample 13:
|
||||
time = 6696000
|
||||
time = 2191045
|
||||
flags = 1
|
||||
data = length 336, hash 94C643DC
|
||||
sample 14:
|
||||
time = 6720000
|
||||
time = 2215045
|
||||
flags = 1
|
||||
data = length 288, hash CB5D9C40
|
||||
sample 15:
|
||||
time = 6744000
|
||||
time = 2239045
|
||||
flags = 1
|
||||
data = length 336, hash 1E69DE3F
|
||||
sample 16:
|
||||
time = 6768000
|
||||
time = 2263045
|
||||
flags = 1
|
||||
data = length 336, hash 7E472219
|
||||
sample 17:
|
||||
time = 6792000
|
||||
time = 2287045
|
||||
flags = 1
|
||||
data = length 336, hash DA47B9FA
|
||||
sample 18:
|
||||
time = 6816000
|
||||
time = 2311045
|
||||
flags = 1
|
||||
data = length 336, hash DD0ABB7C
|
||||
sample 19:
|
||||
time = 6840000
|
||||
time = 2335045
|
||||
flags = 1
|
||||
data = length 288, hash DBF93FAC
|
||||
sample 20:
|
||||
time = 6864000
|
||||
time = 2359045
|
||||
flags = 1
|
||||
data = length 336, hash 243F4B2
|
||||
sample 21:
|
||||
time = 6888000
|
||||
time = 2383045
|
||||
flags = 1
|
||||
data = length 336, hash 2E881490
|
||||
sample 22:
|
||||
time = 6912000
|
||||
time = 2407045
|
||||
flags = 1
|
||||
data = length 288, hash 1C28C8BE
|
||||
sample 23:
|
||||
time = 6936000
|
||||
time = 2431045
|
||||
flags = 1
|
||||
data = length 336, hash C73E5D30
|
||||
sample 24:
|
||||
time = 6960000
|
||||
time = 2455045
|
||||
flags = 1
|
||||
data = length 288, hash 98B5BFF6
|
||||
sample 25:
|
||||
time = 6984000
|
||||
time = 2479045
|
||||
flags = 1
|
||||
data = length 336, hash E0135533
|
||||
sample 26:
|
||||
time = 7008000
|
||||
time = 2503045
|
||||
flags = 1
|
||||
data = length 336, hash D13C9DBC
|
||||
sample 27:
|
||||
time = 7032000
|
||||
time = 2527045
|
||||
flags = 1
|
||||
data = length 336, hash 63D524CA
|
||||
sample 28:
|
||||
time = 7056000
|
||||
time = 2551045
|
||||
flags = 1
|
||||
data = length 288, hash A28514C3
|
||||
sample 29:
|
||||
time = 7080000
|
||||
time = 2575045
|
||||
flags = 1
|
||||
data = length 336, hash 72B647FF
|
||||
sample 30:
|
||||
time = 7104000
|
||||
time = 2599045
|
||||
flags = 1
|
||||
data = length 336, hash 8F740AB1
|
||||
sample 31:
|
||||
time = 7128000
|
||||
time = 2623045
|
||||
flags = 1
|
||||
data = length 336, hash 5E3C7E93
|
||||
sample 32:
|
||||
time = 7152000
|
||||
time = 2647045
|
||||
flags = 1
|
||||
data = length 336, hash 121B913B
|
||||
sample 33:
|
||||
time = 7176000
|
||||
time = 2671045
|
||||
flags = 1
|
||||
data = length 336, hash 578FCCF2
|
||||
sample 34:
|
||||
time = 7200000
|
||||
time = 2695045
|
||||
flags = 1
|
||||
data = length 336, hash 5B5823DE
|
||||
sample 35:
|
||||
time = 7224000
|
||||
time = 2719045
|
||||
flags = 1
|
||||
data = length 384, hash D8B83F78
|
||||
sample 36:
|
||||
time = 7248000
|
||||
time = 2743045
|
||||
flags = 1
|
||||
data = length 240, hash E649682F
|
||||
sample 37:
|
||||
time = 7272000
|
||||
time = 2767045
|
||||
flags = 1
|
||||
data = length 96, hash C559A6F4
|
||||
sample 38:
|
||||
time = 7296000
|
||||
time = 2791045
|
||||
flags = 1
|
||||
data = length 96, hash 792796BC
|
||||
sample 39:
|
||||
time = 7320000
|
||||
time = 2815045
|
||||
flags = 1
|
||||
data = length 120, hash 8172CD0E
|
||||
sample 40:
|
||||
time = 7344000
|
||||
time = 2839045
|
||||
flags = 1
|
||||
data = length 120, hash F562B52F
|
||||
sample 41:
|
||||
time = 7368000
|
||||
time = 2863045
|
||||
flags = 1
|
||||
data = length 96, hash FF8D5B98
|
||||
tracksEnded = true
|
||||
|
@ -1,17 +1,17 @@
|
||||
seekMap:
|
||||
isSeekable = true
|
||||
duration = 9540000
|
||||
duration = 2807972
|
||||
getPosition(0) = [[timeUs=0, position=237]]
|
||||
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]]
|
||||
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]]
|
||||
getPosition(9540000) = [[timeUs=9516000, position=38301]]
|
||||
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
|
||||
track 0:
|
||||
total output bytes = 96
|
||||
sample count = 1
|
||||
track duration = 9540000
|
||||
total output bytes = 0
|
||||
sample count = 0
|
||||
track duration = 2807972
|
||||
format 0:
|
||||
averageBitrate = 32000
|
||||
averageBitrate = 108719
|
||||
containerMimeType = audio/mpeg
|
||||
sampleMimeType = audio/mpeg
|
||||
maxInputSize = 4096
|
||||
@ -20,8 +20,4 @@ track 0:
|
||||
encoderDelay = 576
|
||||
encoderPadding = 576
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]]
|
||||
sample 0:
|
||||
time = 9516000
|
||||
flags = 1
|
||||
data = length 96, hash FF8D5B98
|
||||
tracksEnded = true
|
||||
|
@ -1,14 +1,17 @@
|
||||
seekMap:
|
||||
isSeekable = true
|
||||
duration = UNSET TIME
|
||||
duration = 2807972
|
||||
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
|
||||
track 0:
|
||||
total output bytes = 38160
|
||||
sample count = 117
|
||||
track duration = 2807972
|
||||
format 0:
|
||||
averageBitrate = 32000
|
||||
averageBitrate = 108719
|
||||
containerMimeType = audio/mpeg
|
||||
sampleMimeType = audio/mpeg
|
||||
maxInputSize = 4096
|
||||
|
@ -1,17 +1,17 @@
|
||||
seekMap:
|
||||
isSeekable = true
|
||||
duration = 9540000
|
||||
duration = 2807972
|
||||
getPosition(0) = [[timeUs=0, position=237]]
|
||||
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]]
|
||||
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]]
|
||||
getPosition(9540000) = [[timeUs=9516000, position=38301]]
|
||||
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
|
||||
track 0:
|
||||
total output bytes = 38160
|
||||
sample count = 117
|
||||
track duration = 9540000
|
||||
track duration = 2807972
|
||||
format 0:
|
||||
averageBitrate = 32000
|
||||
averageBitrate = 108719
|
||||
containerMimeType = audio/mpeg
|
||||
sampleMimeType = audio/mpeg
|
||||
maxInputSize = 4096
|
||||
|
@ -1,17 +1,17 @@
|
||||
seekMap:
|
||||
isSeekable = true
|
||||
duration = 9540000
|
||||
duration = 2807972
|
||||
getPosition(0) = [[timeUs=0, position=237]]
|
||||
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]]
|
||||
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]]
|
||||
getPosition(9540000) = [[timeUs=9516000, position=38301]]
|
||||
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
|
||||
track 0:
|
||||
total output bytes = 25344
|
||||
sample count = 80
|
||||
track duration = 9540000
|
||||
track duration = 2807972
|
||||
format 0:
|
||||
averageBitrate = 32000
|
||||
averageBitrate = 108719
|
||||
containerMimeType = audio/mpeg
|
||||
sampleMimeType = audio/mpeg
|
||||
maxInputSize = 4096
|
||||
@ -21,323 +21,323 @@ track 0:
|
||||
encoderPadding = 576
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]]
|
||||
sample 0:
|
||||
time = 3204000
|
||||
time = 943055
|
||||
flags = 1
|
||||
data = length 336, hash E917C122
|
||||
sample 1:
|
||||
time = 3228000
|
||||
time = 967055
|
||||
flags = 1
|
||||
data = length 336, hash 10ED1470
|
||||
sample 2:
|
||||
time = 3252000
|
||||
time = 991055
|
||||
flags = 1
|
||||
data = length 288, hash 706B8A7C
|
||||
sample 3:
|
||||
time = 3276000
|
||||
time = 1015055
|
||||
flags = 1
|
||||
data = length 336, hash 71FFE4A0
|
||||
sample 4:
|
||||
time = 3300000
|
||||
time = 1039055
|
||||
flags = 1
|
||||
data = length 336, hash D4160463
|
||||
sample 5:
|
||||
time = 3324000
|
||||
time = 1063055
|
||||
flags = 1
|
||||
data = length 336, hash EC557B14
|
||||
sample 6:
|
||||
time = 3348000
|
||||
time = 1087055
|
||||
flags = 1
|
||||
data = length 288, hash 5598CF8B
|
||||
sample 7:
|
||||
time = 3372000
|
||||
time = 1111055
|
||||
flags = 1
|
||||
data = length 336, hash 7E0AB41
|
||||
sample 8:
|
||||
time = 3396000
|
||||
time = 1135055
|
||||
flags = 1
|
||||
data = length 336, hash 1C585FEF
|
||||
sample 9:
|
||||
time = 3420000
|
||||
time = 1159055
|
||||
flags = 1
|
||||
data = length 336, hash A4A4855E
|
||||
sample 10:
|
||||
time = 3444000
|
||||
time = 1183055
|
||||
flags = 1
|
||||
data = length 336, hash CECA51D3
|
||||
sample 11:
|
||||
time = 3468000
|
||||
time = 1207055
|
||||
flags = 1
|
||||
data = length 288, hash 2D362DC5
|
||||
sample 12:
|
||||
time = 3492000
|
||||
time = 1231055
|
||||
flags = 1
|
||||
data = length 336, hash 9EB2609D
|
||||
sample 13:
|
||||
time = 3516000
|
||||
time = 1255055
|
||||
flags = 1
|
||||
data = length 336, hash 28FFB3FE
|
||||
sample 14:
|
||||
time = 3540000
|
||||
time = 1279055
|
||||
flags = 1
|
||||
data = length 288, hash 2AA2D216
|
||||
sample 15:
|
||||
time = 3564000
|
||||
time = 1303055
|
||||
flags = 1
|
||||
data = length 336, hash CDBC7032
|
||||
sample 16:
|
||||
time = 3588000
|
||||
time = 1327055
|
||||
flags = 1
|
||||
data = length 336, hash 25B13FE7
|
||||
sample 17:
|
||||
time = 3612000
|
||||
time = 1351055
|
||||
flags = 1
|
||||
data = length 336, hash DB6BB1E
|
||||
sample 18:
|
||||
time = 3636000
|
||||
time = 1375055
|
||||
flags = 1
|
||||
data = length 336, hash EBE951F4
|
||||
sample 19:
|
||||
time = 3660000
|
||||
time = 1399055
|
||||
flags = 1
|
||||
data = length 288, hash 9E2EBFF7
|
||||
sample 20:
|
||||
time = 3684000
|
||||
time = 1423055
|
||||
flags = 1
|
||||
data = length 336, hash 36A7D455
|
||||
sample 21:
|
||||
time = 3708000
|
||||
time = 1447055
|
||||
flags = 1
|
||||
data = length 336, hash 84545F8C
|
||||
sample 22:
|
||||
time = 3732000
|
||||
time = 1471055
|
||||
flags = 1
|
||||
data = length 336, hash F66F3045
|
||||
sample 23:
|
||||
time = 3756000
|
||||
time = 1495055
|
||||
flags = 1
|
||||
data = length 576, hash 5AB089EA
|
||||
sample 24:
|
||||
time = 3780000
|
||||
time = 1519055
|
||||
flags = 1
|
||||
data = length 336, hash 8868086
|
||||
sample 25:
|
||||
time = 3804000
|
||||
time = 1543055
|
||||
flags = 1
|
||||
data = length 336, hash D5EB6D63
|
||||
sample 26:
|
||||
time = 3828000
|
||||
time = 1567055
|
||||
flags = 1
|
||||
data = length 288, hash 7A5374B7
|
||||
sample 27:
|
||||
time = 3852000
|
||||
time = 1591055
|
||||
flags = 1
|
||||
data = length 336, hash BEB27A75
|
||||
sample 28:
|
||||
time = 3876000
|
||||
time = 1615055
|
||||
flags = 1
|
||||
data = length 336, hash E251E0FD
|
||||
sample 29:
|
||||
time = 3900000
|
||||
time = 1639055
|
||||
flags = 1
|
||||
data = length 288, hash D54C970
|
||||
sample 30:
|
||||
time = 3924000
|
||||
time = 1663055
|
||||
flags = 1
|
||||
data = length 336, hash 52C473B9
|
||||
sample 31:
|
||||
time = 3948000
|
||||
time = 1687055
|
||||
flags = 1
|
||||
data = length 336, hash F5F13334
|
||||
sample 32:
|
||||
time = 3972000
|
||||
time = 1711055
|
||||
flags = 1
|
||||
data = length 480, hash A5F1E987
|
||||
sample 33:
|
||||
time = 3996000
|
||||
time = 1735055
|
||||
flags = 1
|
||||
data = length 288, hash 453A1267
|
||||
sample 34:
|
||||
time = 4020000
|
||||
time = 1759055
|
||||
flags = 1
|
||||
data = length 288, hash 7C6C2EA9
|
||||
sample 35:
|
||||
time = 4044000
|
||||
time = 1783055
|
||||
flags = 1
|
||||
data = length 336, hash F4BFECA4
|
||||
sample 36:
|
||||
time = 4068000
|
||||
time = 1807055
|
||||
flags = 1
|
||||
data = length 336, hash 751A395A
|
||||
sample 37:
|
||||
time = 4092000
|
||||
time = 1831055
|
||||
flags = 1
|
||||
data = length 336, hash EE38DB02
|
||||
sample 38:
|
||||
time = 4116000
|
||||
time = 1855055
|
||||
flags = 1
|
||||
data = length 336, hash F18837E2
|
||||
sample 39:
|
||||
time = 4140000
|
||||
time = 1879055
|
||||
flags = 1
|
||||
data = length 336, hash ED36B78E
|
||||
sample 40:
|
||||
time = 4164000
|
||||
time = 1903055
|
||||
flags = 1
|
||||
data = length 336, hash B3D28289
|
||||
sample 41:
|
||||
time = 4188000
|
||||
time = 1927055
|
||||
flags = 1
|
||||
data = length 288, hash 8BDE28E1
|
||||
sample 42:
|
||||
time = 4212000
|
||||
time = 1951055
|
||||
flags = 1
|
||||
data = length 336, hash CFD5E966
|
||||
sample 43:
|
||||
time = 4236000
|
||||
time = 1975055
|
||||
flags = 1
|
||||
data = length 288, hash DC08E267
|
||||
sample 44:
|
||||
time = 4260000
|
||||
time = 1999055
|
||||
flags = 1
|
||||
data = length 336, hash 6530CB78
|
||||
sample 45:
|
||||
time = 4284000
|
||||
time = 2023055
|
||||
flags = 1
|
||||
data = length 336, hash 6CC6636E
|
||||
sample 46:
|
||||
time = 4308000
|
||||
time = 2047055
|
||||
flags = 1
|
||||
data = length 336, hash 613047C1
|
||||
sample 47:
|
||||
time = 4332000
|
||||
time = 2071055
|
||||
flags = 1
|
||||
data = length 288, hash CDC747BF
|
||||
sample 48:
|
||||
time = 4356000
|
||||
time = 2095055
|
||||
flags = 1
|
||||
data = length 336, hash AF22AA74
|
||||
sample 49:
|
||||
time = 4380000
|
||||
time = 2119055
|
||||
flags = 1
|
||||
data = length 384, hash 82F326AA
|
||||
sample 50:
|
||||
time = 4404000
|
||||
time = 2143055
|
||||
flags = 1
|
||||
data = length 384, hash EDA26C4D
|
||||
sample 51:
|
||||
time = 4428000
|
||||
time = 2167055
|
||||
flags = 1
|
||||
data = length 336, hash 94C643DC
|
||||
sample 52:
|
||||
time = 4452000
|
||||
time = 2191055
|
||||
flags = 1
|
||||
data = length 288, hash CB5D9C40
|
||||
sample 53:
|
||||
time = 4476000
|
||||
time = 2215055
|
||||
flags = 1
|
||||
data = length 336, hash 1E69DE3F
|
||||
sample 54:
|
||||
time = 4500000
|
||||
time = 2239055
|
||||
flags = 1
|
||||
data = length 336, hash 7E472219
|
||||
sample 55:
|
||||
time = 4524000
|
||||
time = 2263055
|
||||
flags = 1
|
||||
data = length 336, hash DA47B9FA
|
||||
sample 56:
|
||||
time = 4548000
|
||||
time = 2287055
|
||||
flags = 1
|
||||
data = length 336, hash DD0ABB7C
|
||||
sample 57:
|
||||
time = 4572000
|
||||
time = 2311055
|
||||
flags = 1
|
||||
data = length 288, hash DBF93FAC
|
||||
sample 58:
|
||||
time = 4596000
|
||||
time = 2335055
|
||||
flags = 1
|
||||
data = length 336, hash 243F4B2
|
||||
sample 59:
|
||||
time = 4620000
|
||||
time = 2359055
|
||||
flags = 1
|
||||
data = length 336, hash 2E881490
|
||||
sample 60:
|
||||
time = 4644000
|
||||
time = 2383055
|
||||
flags = 1
|
||||
data = length 288, hash 1C28C8BE
|
||||
sample 61:
|
||||
time = 4668000
|
||||
time = 2407055
|
||||
flags = 1
|
||||
data = length 336, hash C73E5D30
|
||||
sample 62:
|
||||
time = 4692000
|
||||
time = 2431055
|
||||
flags = 1
|
||||
data = length 288, hash 98B5BFF6
|
||||
sample 63:
|
||||
time = 4716000
|
||||
time = 2455055
|
||||
flags = 1
|
||||
data = length 336, hash E0135533
|
||||
sample 64:
|
||||
time = 4740000
|
||||
time = 2479055
|
||||
flags = 1
|
||||
data = length 336, hash D13C9DBC
|
||||
sample 65:
|
||||
time = 4764000
|
||||
time = 2503055
|
||||
flags = 1
|
||||
data = length 336, hash 63D524CA
|
||||
sample 66:
|
||||
time = 4788000
|
||||
time = 2527055
|
||||
flags = 1
|
||||
data = length 288, hash A28514C3
|
||||
sample 67:
|
||||
time = 4812000
|
||||
time = 2551055
|
||||
flags = 1
|
||||
data = length 336, hash 72B647FF
|
||||
sample 68:
|
||||
time = 4836000
|
||||
time = 2575055
|
||||
flags = 1
|
||||
data = length 336, hash 8F740AB1
|
||||
sample 69:
|
||||
time = 4860000
|
||||
time = 2599055
|
||||
flags = 1
|
||||
data = length 336, hash 5E3C7E93
|
||||
sample 70:
|
||||
time = 4884000
|
||||
time = 2623055
|
||||
flags = 1
|
||||
data = length 336, hash 121B913B
|
||||
sample 71:
|
||||
time = 4908000
|
||||
time = 2647055
|
||||
flags = 1
|
||||
data = length 336, hash 578FCCF2
|
||||
sample 72:
|
||||
time = 4932000
|
||||
time = 2671055
|
||||
flags = 1
|
||||
data = length 336, hash 5B5823DE
|
||||
sample 73:
|
||||
time = 4956000
|
||||
time = 2695055
|
||||
flags = 1
|
||||
data = length 384, hash D8B83F78
|
||||
sample 74:
|
||||
time = 4980000
|
||||
time = 2719055
|
||||
flags = 1
|
||||
data = length 240, hash E649682F
|
||||
sample 75:
|
||||
time = 5004000
|
||||
time = 2743055
|
||||
flags = 1
|
||||
data = length 96, hash C559A6F4
|
||||
sample 76:
|
||||
time = 5028000
|
||||
time = 2767055
|
||||
flags = 1
|
||||
data = length 96, hash 792796BC
|
||||
sample 77:
|
||||
time = 5052000
|
||||
time = 2791055
|
||||
flags = 1
|
||||
data = length 120, hash 8172CD0E
|
||||
sample 78:
|
||||
time = 5076000
|
||||
time = 2815055
|
||||
flags = 1
|
||||
data = length 120, hash F562B52F
|
||||
sample 79:
|
||||
time = 5100000
|
||||
time = 2839055
|
||||
flags = 1
|
||||
data = length 96, hash FF8D5B98
|
||||
tracksEnded = true
|
||||
|
@ -1,17 +1,17 @@
|
||||
seekMap:
|
||||
isSeekable = true
|
||||
duration = 9540000
|
||||
duration = 2807972
|
||||
getPosition(0) = [[timeUs=0, position=237]]
|
||||
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]]
|
||||
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]]
|
||||
getPosition(9540000) = [[timeUs=9516000, position=38301]]
|
||||
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
|
||||
track 0:
|
||||
total output bytes = 12624
|
||||
sample count = 42
|
||||
track duration = 9540000
|
||||
track duration = 2807972
|
||||
format 0:
|
||||
averageBitrate = 32000
|
||||
averageBitrate = 108719
|
||||
containerMimeType = audio/mpeg
|
||||
sampleMimeType = audio/mpeg
|
||||
maxInputSize = 4096
|
||||
@ -21,171 +21,171 @@ track 0:
|
||||
encoderPadding = 576
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]]
|
||||
sample 0:
|
||||
time = 6384000
|
||||
time = 1879045
|
||||
flags = 1
|
||||
data = length 336, hash F18837E2
|
||||
sample 1:
|
||||
time = 6408000
|
||||
time = 1903045
|
||||
flags = 1
|
||||
data = length 336, hash ED36B78E
|
||||
sample 2:
|
||||
time = 6432000
|
||||
time = 1927045
|
||||
flags = 1
|
||||
data = length 336, hash B3D28289
|
||||
sample 3:
|
||||
time = 6456000
|
||||
time = 1951045
|
||||
flags = 1
|
||||
data = length 288, hash 8BDE28E1
|
||||
sample 4:
|
||||
time = 6480000
|
||||
time = 1975045
|
||||
flags = 1
|
||||
data = length 336, hash CFD5E966
|
||||
sample 5:
|
||||
time = 6504000
|
||||
time = 1999045
|
||||
flags = 1
|
||||
data = length 288, hash DC08E267
|
||||
sample 6:
|
||||
time = 6528000
|
||||
time = 2023045
|
||||
flags = 1
|
||||
data = length 336, hash 6530CB78
|
||||
sample 7:
|
||||
time = 6552000
|
||||
time = 2047045
|
||||
flags = 1
|
||||
data = length 336, hash 6CC6636E
|
||||
sample 8:
|
||||
time = 6576000
|
||||
time = 2071045
|
||||
flags = 1
|
||||
data = length 336, hash 613047C1
|
||||
sample 9:
|
||||
time = 6600000
|
||||
time = 2095045
|
||||
flags = 1
|
||||
data = length 288, hash CDC747BF
|
||||
sample 10:
|
||||
time = 6624000
|
||||
time = 2119045
|
||||
flags = 1
|
||||
data = length 336, hash AF22AA74
|
||||
sample 11:
|
||||
time = 6648000
|
||||
time = 2143045
|
||||
flags = 1
|
||||
data = length 384, hash 82F326AA
|
||||
sample 12:
|
||||
time = 6672000
|
||||
time = 2167045
|
||||
flags = 1
|
||||
data = length 384, hash EDA26C4D
|
||||
sample 13:
|
||||
time = 6696000
|
||||
time = 2191045
|
||||
flags = 1
|
||||
data = length 336, hash 94C643DC
|
||||
sample 14:
|
||||
time = 6720000
|
||||
time = 2215045
|
||||
flags = 1
|
||||
data = length 288, hash CB5D9C40
|
||||
sample 15:
|
||||
time = 6744000
|
||||
time = 2239045
|
||||
flags = 1
|
||||
data = length 336, hash 1E69DE3F
|
||||
sample 16:
|
||||
time = 6768000
|
||||
time = 2263045
|
||||
flags = 1
|
||||
data = length 336, hash 7E472219
|
||||
sample 17:
|
||||
time = 6792000
|
||||
time = 2287045
|
||||
flags = 1
|
||||
data = length 336, hash DA47B9FA
|
||||
sample 18:
|
||||
time = 6816000
|
||||
time = 2311045
|
||||
flags = 1
|
||||
data = length 336, hash DD0ABB7C
|
||||
sample 19:
|
||||
time = 6840000
|
||||
time = 2335045
|
||||
flags = 1
|
||||
data = length 288, hash DBF93FAC
|
||||
sample 20:
|
||||
time = 6864000
|
||||
time = 2359045
|
||||
flags = 1
|
||||
data = length 336, hash 243F4B2
|
||||
sample 21:
|
||||
time = 6888000
|
||||
time = 2383045
|
||||
flags = 1
|
||||
data = length 336, hash 2E881490
|
||||
sample 22:
|
||||
time = 6912000
|
||||
time = 2407045
|
||||
flags = 1
|
||||
data = length 288, hash 1C28C8BE
|
||||
sample 23:
|
||||
time = 6936000
|
||||
time = 2431045
|
||||
flags = 1
|
||||
data = length 336, hash C73E5D30
|
||||
sample 24:
|
||||
time = 6960000
|
||||
time = 2455045
|
||||
flags = 1
|
||||
data = length 288, hash 98B5BFF6
|
||||
sample 25:
|
||||
time = 6984000
|
||||
time = 2479045
|
||||
flags = 1
|
||||
data = length 336, hash E0135533
|
||||
sample 26:
|
||||
time = 7008000
|
||||
time = 2503045
|
||||
flags = 1
|
||||
data = length 336, hash D13C9DBC
|
||||
sample 27:
|
||||
time = 7032000
|
||||
time = 2527045
|
||||
flags = 1
|
||||
data = length 336, hash 63D524CA
|
||||
sample 28:
|
||||
time = 7056000
|
||||
time = 2551045
|
||||
flags = 1
|
||||
data = length 288, hash A28514C3
|
||||
sample 29:
|
||||
time = 7080000
|
||||
time = 2575045
|
||||
flags = 1
|
||||
data = length 336, hash 72B647FF
|
||||
sample 30:
|
||||
time = 7104000
|
||||
time = 2599045
|
||||
flags = 1
|
||||
data = length 336, hash 8F740AB1
|
||||
sample 31:
|
||||
time = 7128000
|
||||
time = 2623045
|
||||
flags = 1
|
||||
data = length 336, hash 5E3C7E93
|
||||
sample 32:
|
||||
time = 7152000
|
||||
time = 2647045
|
||||
flags = 1
|
||||
data = length 336, hash 121B913B
|
||||
sample 33:
|
||||
time = 7176000
|
||||
time = 2671045
|
||||
flags = 1
|
||||
data = length 336, hash 578FCCF2
|
||||
sample 34:
|
||||
time = 7200000
|
||||
time = 2695045
|
||||
flags = 1
|
||||
data = length 336, hash 5B5823DE
|
||||
sample 35:
|
||||
time = 7224000
|
||||
time = 2719045
|
||||
flags = 1
|
||||
data = length 384, hash D8B83F78
|
||||
sample 36:
|
||||
time = 7248000
|
||||
time = 2743045
|
||||
flags = 1
|
||||
data = length 240, hash E649682F
|
||||
sample 37:
|
||||
time = 7272000
|
||||
time = 2767045
|
||||
flags = 1
|
||||
data = length 96, hash C559A6F4
|
||||
sample 38:
|
||||
time = 7296000
|
||||
time = 2791045
|
||||
flags = 1
|
||||
data = length 96, hash 792796BC
|
||||
sample 39:
|
||||
time = 7320000
|
||||
time = 2815045
|
||||
flags = 1
|
||||
data = length 120, hash 8172CD0E
|
||||
sample 40:
|
||||
time = 7344000
|
||||
time = 2839045
|
||||
flags = 1
|
||||
data = length 120, hash F562B52F
|
||||
sample 41:
|
||||
time = 7368000
|
||||
time = 2863045
|
||||
flags = 1
|
||||
data = length 96, hash FF8D5B98
|
||||
tracksEnded = true
|
||||
|
@ -1,17 +1,17 @@
|
||||
seekMap:
|
||||
isSeekable = true
|
||||
duration = 9540000
|
||||
duration = 2807972
|
||||
getPosition(0) = [[timeUs=0, position=237]]
|
||||
getPosition(1) = [[timeUs=0, position=237], [timeUs=24000, position=333]]
|
||||
getPosition(4770000) = [[timeUs=4752000, position=19245], [timeUs=4776000, position=19341]]
|
||||
getPosition(9540000) = [[timeUs=9516000, position=38301]]
|
||||
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
|
||||
track 0:
|
||||
total output bytes = 96
|
||||
sample count = 1
|
||||
track duration = 9540000
|
||||
total output bytes = 0
|
||||
sample count = 0
|
||||
track duration = 2807972
|
||||
format 0:
|
||||
averageBitrate = 32000
|
||||
averageBitrate = 108719
|
||||
containerMimeType = audio/mpeg
|
||||
sampleMimeType = audio/mpeg
|
||||
maxInputSize = 4096
|
||||
@ -20,8 +20,4 @@ track 0:
|
||||
encoderDelay = 576
|
||||
encoderPadding = 576
|
||||
metadata = entries=[TSSE: description=null: values=[Lavf58.29.100]]
|
||||
sample 0:
|
||||
time = 9516000
|
||||
flags = 1
|
||||
data = length 96, hash FF8D5B98
|
||||
tracksEnded = true
|
||||
|
@ -1,13 +1,17 @@
|
||||
seekMap:
|
||||
isSeekable = false
|
||||
duration = UNSET TIME
|
||||
isSeekable = true
|
||||
duration = 2807972
|
||||
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
|
||||
track 0:
|
||||
total output bytes = 38160
|
||||
sample count = 117
|
||||
track duration = 2807972
|
||||
format 0:
|
||||
averageBitrate = 32000
|
||||
averageBitrate = 108719
|
||||
containerMimeType = audio/mpeg
|
||||
sampleMimeType = audio/mpeg
|
||||
maxInputSize = 4096
|
||||
|
Loading…
x
Reference in New Issue
Block a user