xgplayer-mp4 2.0.4 → 2.0.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xgplayer-mp4",
3
- "version": "2.0.4",
3
+ "version": "2.0.5",
4
4
  "description": "xgplayer plugin for mp4 transform to fmp4",
5
5
  "main": "./dist/index.js",
6
6
  "scripts": {
@@ -8,7 +8,6 @@
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
- "release": "npm publish --registry=https://registry.npmjs.org",
12
11
  "test:watch": "karma start"
13
12
  },
14
13
  "repository": {
package/src/index.js CHANGED
@@ -13,9 +13,9 @@ const DESTROYED = 'DESTROYED';
13
13
  const sniffer = Player.sniffer;
14
14
 
15
15
  let isEnded = (player, mp4) => {
16
- if (mp4.meta.endTime - player.currentTime < 0.5) {
16
+ if (player.mse && mp4.meta.endTime - player.currentTime < 0.5) {
17
17
  // let range = player.getBufferedRange(player.buffered2)
18
- let offsetTime = player.duration - player.currentTime
18
+ let offsetTime = player.duration - player.currentTime
19
19
  if (offsetTime < 0.5) {
20
20
  player.mse.endOfStream()
21
21
  player._stopProgress()
@@ -62,7 +62,7 @@ class Mp4Player extends Player {
62
62
  })
63
63
  }
64
64
 
65
- _initMp4Kernal(){
65
+ _initMp4Kernal (){
66
66
  let player = this;
67
67
  let rule = player.config.pluginRule || function () { return true }
68
68
  if (MSE.isSupported('video/mp4; codecs="avc1.64001E, mp4a.40.5"')) {
@@ -74,7 +74,9 @@ class Mp4Player extends Player {
74
74
  return player.currentSrc
75
75
  },
76
76
  set (url) {
77
- player.mse.endOfStream()
77
+ if (player.mse) {
78
+ player.mse.endOfStream()
79
+ }
78
80
  player._onDestroy();
79
81
  player.config.autoplay = player.autoplay = true
80
82
  player.config.url = url
package/src/media/task.js CHANGED
@@ -110,7 +110,8 @@ class Task {
110
110
  }
111
111
 
112
112
  run () {
113
- if (this.xhr.readyState === 1) {
113
+ // 兼容有些情况下调用open方法后,readyState为0的问题
114
+ if (this.xhr.readyState === 1 || this.xhr.OPENED === 1) {
114
115
  this.running = true
115
116
  this.xhr.send()
116
117
  } else {
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 = new Parser(res)
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: util.seekSampleOffset(stsc, stco, stsz, start, mdatStart, stscObj)
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]) return false;
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
  })
@@ -5,6 +5,9 @@ Box.MP4DecConfigDescrTag = function (stream) {
5
5
  let box = new Box()
6
6
  let size
7
7
  box.type = stream.readUint8()
8
+ if (box.type !== 4) {
9
+ return box
10
+ }
8
11
  size = stream.readUint8()
9
12
  if (size === 0x80) {
10
13
  box.extend = true
@@ -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
@@ -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
- let box = Box.MP4ESDescrTag(stream)
9
- this.subBox.push(box)
10
- delete this.data
11
- stream = null
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
@@ -69,12 +69,11 @@ util.stscOffset = function (stsc, sample_order, stscObj) {
69
69
  // let chunk_start = stsc.entries.filter((item) => {
70
70
  // return item.first_sample <= sample_order && sample_order < item.first_sample + item.chunk_count * item.samples_per_chunk
71
71
  // })[0]
72
- let chunk_start = stscObj[sample_order]
72
+ let chunk_start = stscObj[sample_order];
73
73
  if (!chunk_start) {
74
74
  let last_chunk = stsc.entries.pop()
75
75
  stsc.entries.push(last_chunk)
76
76
  let chunk_offset = Math.floor((sample_order - last_chunk.first_sample) / last_chunk.samples_per_chunk)
77
- chunk_offset = Math.min(chunk_offset, last_chunk.chunk_count)
78
77
  let last_chunk_index = last_chunk.first_chunk + chunk_offset
79
78
  let last_chunk_first_sample = last_chunk.first_sample + last_chunk.samples_per_chunk * chunk_offset
80
79
  return {
@@ -95,7 +94,9 @@ util.stscOffset = function (stsc, sample_order, stscObj) {
95
94
 
96
95
  util.seekSampleOffset = function (stsc, stco, stsz, order, mdatStart, stscObj) {
97
96
  let chunkOffset = util.stscOffset(stsc, order + 1, stscObj)
98
- let result = stco.entries[chunkOffset.chunk_index - 1] + util.sum.apply(null, stsz.entries.slice(chunkOffset.samples_offset[0] - 1, chunkOffset.samples_offset[1] - 1)) - mdatStart
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
99
100
  if (result === undefined) {
100
101
  throw `result=${result},stco.length=${stco.entries.length},sum=${util.sum.apply(null, stsz.entries.slice(0, order))}`
101
102
  } else if (result < 0) {
@@ -118,7 +119,7 @@ util.seekSampleTime = function (stts, cttsObj, order) {
118
119
  }
119
120
  })
120
121
  if (cttsObj) {
121
- if (cttsObj[order]) {
122
+ if(cttsObj[order]){
122
123
  offset = cttsObj[order]
123
124
  }
124
125
  }
@@ -240,11 +241,11 @@ util.toUTF8 = function (str) {
240
241
  }
241
242
 
242
243
  util.bufferToString = function (value) {
243
- return ('0' + (Number(value).toString(16))).slice(-2).toUpperCase()
244
+ return ("0"+(Number(value).toString(16))).slice(-2).toUpperCase()
244
245
  }
245
246
  util.strToBuf = function (str) {
246
247
  let buffer = []
247
- for (let i = 0; i < str.length; i = i + 2) {
248
+ for(let i = 0; i < str.length; i = i + 2) {
248
249
  buffer.push(
249
250
  parseInt(str[i] + str[i + 1], 16)
250
251
  )
@@ -252,20 +253,20 @@ util.strToBuf = function (str) {
252
253
  return new Uint8Array(buffer)
253
254
  }
254
255
  util.str2hex = function (str) {
255
- if (str === '') {
256
- return ''
256
+ if(str === "") {
257
+ return ""
257
258
  }
258
- let arr = []
259
- for (let i = 0; i < str.length; i++) {
259
+ let arr = [];
260
+ for(let i = 0; i < str.length; i++) {
260
261
  arr.push(str.charCodeAt(i))
261
262
  }
262
263
  return arr
263
264
  }
264
265
  util.parse = function (a) {
265
266
  if (!Array.isArray(a)) {
266
- let arr = []
267
- let value = ''
268
- for (let i = 0; i < a.length; i++) {
267
+ let arr = [];
268
+ let value = '';
269
+ for(let i = 0; i < a.length; i++) {
269
270
  if (i % 2) {
270
271
  value = a[i - 1] + a[ i ]
271
272
  arr.push(parseInt(value, 16))
@@ -274,6 +275,6 @@ util.parse = function (a) {
274
275
  }
275
276
  return arr
276
277
  }
277
- return a.map(item => { return parseInt(item, 16) })
278
+ return a.map(item => {return parseInt(item, 16)})
278
279
  }
279
280
  export default util
package/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "2.0.4"
2
+ "version": "2.0.5"
3
3
  }
package/webpack.config.js CHANGED
@@ -41,7 +41,7 @@ const client = {
41
41
  library: 'Mp4Player',
42
42
  libraryTarget: 'window'
43
43
  },
44
- devtool: argv.watch ? 'source-map' : 'none',
44
+ // devtool: argv.watch ? 'source-map' : 'none',
45
45
  module: {
46
46
  rules: [
47
47
  {