xgplayer-mp4 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/index.js +2 -1
- package/browser/index.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +5 -4
- package/src/mp4.js +14 -5
- package/src/parse/box/MP4DecConfigDescrTag.js +3 -0
- package/src/parse/box/MP4DecSpecificDescrTag.js +4 -0
- package/src/parse/box/esds.js +9 -4
- package/src/util/index.js +3 -1
- package/version.json +1 -1
- package/webpack.config.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xgplayer-mp4",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "xgplayer plugin for mp4 transform to fmp4",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
"build": "node ./src/version.js && webpack --progress --display-chunks -p",
|
|
9
9
|
"watch": "webpack --progress --display-chunks -p --watch",
|
|
10
10
|
"test": "karma start --single-run",
|
|
11
|
-
"test:watch": "karma start"
|
|
11
|
+
"test:watch": "karma start",
|
|
12
|
+
"publish": "npm publish --registry=https://registry.npmjs.org"
|
|
12
13
|
},
|
|
13
14
|
"repository": {
|
|
14
15
|
"type": "git",
|
|
@@ -36,8 +37,8 @@
|
|
|
36
37
|
"deepmerge": "^2.0.1",
|
|
37
38
|
"event-emitter": "^0.3.5"
|
|
38
39
|
},
|
|
39
|
-
"
|
|
40
|
-
"xgplayer": "^0.
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"xgplayer": "^2.0.0"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
|
43
44
|
"babel-core": "^6.26.3",
|
package/src/mp4.js
CHANGED
|
@@ -254,7 +254,13 @@ class MP4 {
|
|
|
254
254
|
if (nextBox) {
|
|
255
255
|
if (nextBox.type === 'moov') {
|
|
256
256
|
self.getData(moovStart, moovStart + nextBox.size + 28).then(res => {
|
|
257
|
-
let parsed
|
|
257
|
+
let parsed
|
|
258
|
+
// try {
|
|
259
|
+
parsed = new Parser(res)
|
|
260
|
+
// }catch(e) {
|
|
261
|
+
|
|
262
|
+
// }
|
|
263
|
+
|
|
258
264
|
self._boxes = self._boxes.concat(parsed.boxes)
|
|
259
265
|
moov = parsed.boxes.filter(box => box.type === 'moov')
|
|
260
266
|
if (moov.length) {
|
|
@@ -301,7 +307,6 @@ class MP4 {
|
|
|
301
307
|
let stsz = util.findBox(trak, 'stsz') // sample-size
|
|
302
308
|
let stts = util.findBox(trak, 'stts') // sample-time
|
|
303
309
|
let stco = util.findBox(trak, 'stco') // chunk-offset
|
|
304
|
-
|
|
305
310
|
let cttsObj = type === 'video' ? this._cttsObj : null;
|
|
306
311
|
let stscObj = type === 'video' ? this._stscVideoObj : this._stscAudioObj;
|
|
307
312
|
let mdatStart = this.mdatStart
|
|
@@ -328,11 +333,12 @@ class MP4 {
|
|
|
328
333
|
})
|
|
329
334
|
}
|
|
330
335
|
} else {
|
|
336
|
+
let offset = util.seekSampleOffset(stsc, stco, stsz, start, mdatStart, stscObj)
|
|
331
337
|
samples = {
|
|
332
338
|
idx: start,
|
|
333
339
|
size: stsz.entries[start],
|
|
334
340
|
time: util.seekSampleTime(stts, cttsObj, start),
|
|
335
|
-
offset:
|
|
341
|
+
offset: offset
|
|
336
342
|
}
|
|
337
343
|
}
|
|
338
344
|
return samples
|
|
@@ -475,7 +481,7 @@ class MP4 {
|
|
|
475
481
|
end = videoNextFrame.offset
|
|
476
482
|
if (this.audioTrak) {
|
|
477
483
|
let audioNextFrame = this.getSamplesByOrders('audio', this.audioKeyFrames[fragIndex + 1].order, 0)
|
|
478
|
-
end = Math.max(end, audioNextFrame.offset)
|
|
484
|
+
end = Math.max(end, audioNextFrame.offset || 0)
|
|
479
485
|
}
|
|
480
486
|
}
|
|
481
487
|
if (window.isNaN(start) || (end !== undefined && window.isNaN(end))) {
|
|
@@ -487,7 +493,10 @@ class MP4 {
|
|
|
487
493
|
loadFragment (fragIndex) {
|
|
488
494
|
let self = this
|
|
489
495
|
let range = this.getFragRange(fragIndex)
|
|
490
|
-
if(range === [0, 0])
|
|
496
|
+
if(range === [0, 0]) {
|
|
497
|
+
debugger
|
|
498
|
+
return false;
|
|
499
|
+
}
|
|
491
500
|
return this.getData(range[0], range[1]).then((dat) => {
|
|
492
501
|
return self.createFragment(new Uint8Array(dat), range[0] - this.mdatStart, fragIndex)
|
|
493
502
|
})
|
|
@@ -4,6 +4,10 @@ Box.MP4DecSpecificDescrTag = function (stream) {
|
|
|
4
4
|
let box = new Box()
|
|
5
5
|
let size, dataSize
|
|
6
6
|
box.type = stream.readUint8()
|
|
7
|
+
if (box.type !== 5) {
|
|
8
|
+
stream.position = stream.position - 1
|
|
9
|
+
return box
|
|
10
|
+
}
|
|
7
11
|
size = stream.readUint8()
|
|
8
12
|
if (size === 0x80) {
|
|
9
13
|
box.extend = true
|
package/src/parse/box/esds.js
CHANGED
|
@@ -5,8 +5,13 @@ Box.esds = function () {
|
|
|
5
5
|
let stream = new Stream(this.data)
|
|
6
6
|
this.version = stream.readUint8()
|
|
7
7
|
this.flag = Stream.readByte(stream.dataview, 3)
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
try {
|
|
9
|
+
let box = Box.MP4ESDescrTag(stream)
|
|
10
|
+
this.subBox.push(box)
|
|
11
|
+
delete this.data
|
|
12
|
+
stream = null
|
|
13
|
+
}catch(e) {
|
|
14
|
+
console.error(e)
|
|
15
|
+
}
|
|
16
|
+
|
|
12
17
|
}
|
package/src/util/index.js
CHANGED
|
@@ -94,7 +94,9 @@ util.stscOffset = function (stsc, sample_order, stscObj) {
|
|
|
94
94
|
|
|
95
95
|
util.seekSampleOffset = function (stsc, stco, stsz, order, mdatStart, stscObj) {
|
|
96
96
|
let chunkOffset = util.stscOffset(stsc, order + 1, stscObj)
|
|
97
|
-
let
|
|
97
|
+
let sum = util.sum.apply(null, stsz.entries.slice(chunkOffset.samples_offset[0] - 1, chunkOffset.samples_offset[1] - 1))
|
|
98
|
+
let ss = stco.entries[chunkOffset.chunk_index - 1]
|
|
99
|
+
let result = ss + sum - mdatStart
|
|
98
100
|
if (result === undefined) {
|
|
99
101
|
throw `result=${result},stco.length=${stco.entries.length},sum=${util.sum.apply(null, stsz.entries.slice(0, order))}`
|
|
100
102
|
} else if (result < 0) {
|
package/version.json
CHANGED