@stremio/stremio-video 0.0.67 → 0.0.69

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": "@stremio/stremio-video",
3
- "version": "0.0.67",
3
+ "version": "0.0.69",
4
4
  "description": "Abstraction layer on top of different media players",
5
5
  "author": "Smart Code OOD",
6
6
  "main": "src/index.js",
@@ -463,32 +463,26 @@ function TizenVideo(options) {
463
463
  }
464
464
  case 'selectedSubtitlesTrackId': {
465
465
  if (stream !== null) {
466
- if ((currentSubTrack || '').indexOf('EMBEDDED_') === 0) {
467
- if ((propValue || '').indexOf('EMBEDDED_') === -1) {
468
- renderSubtitle(1, '');
469
- disabledSubs = true;
470
- onPropChanged('selectedSubtitlesTrackId');
471
- return;
472
- }
473
- disabledSubs = false;
466
+ if ((propValue || '').indexOf('EMBEDDED_') === -1 || !propValue) {
467
+ renderSubtitle(1, '');
468
+ disabledSubs = true;
469
+ onPropChanged('selectedSubtitlesTrackId');
470
+ return;
471
+ }
474
472
 
475
- currentSubTrack = propValue;
473
+ var subtitlesTracks = getProp('subtitlesTracks');
474
+ var selectedSubtitlesTrack = subtitlesTracks
475
+ .find(function(track) {
476
+ return track.id === propValue;
477
+ });
476
478
 
477
- var subtitlesTracks = getProp('subtitlesTracks');
478
- var selectedSubtitlesTrack = subtitlesTracks
479
- .find(function(track) {
480
- return track.id === propValue;
481
- });
479
+ if (selectedSubtitlesTrack) {
480
+ disabledSubs = false;
481
+ currentSubTrack = propValue;
482
482
 
483
- AVPlay.setSelectTrack('TEXT', parseInt(currentSubTrack.replace('EMBEDDED_', '')));
483
+ AVPlay.setSelectTrack('TEXT', parseInt(selectedSubtitlesTrack.id.replace('EMBEDDED_', '')));
484
484
 
485
- if (selectedSubtitlesTrack) {
486
- events.emit('subtitlesTrackLoaded', selectedSubtitlesTrack);
487
- onPropChanged('selectedSubtitlesTrackId');
488
- }
489
- } else if (!propValue) {
490
- renderSubtitle(1, '');
491
- disabledSubs = true;
485
+ events.emit('subtitlesTrackLoaded', selectedSubtitlesTrack);
492
486
  onPropChanged('selectedSubtitlesTrackId');
493
487
  }
494
488
  }
@@ -33,39 +33,48 @@ function VidaaVideo(options) {
33
33
  };
34
34
  videoElement.ontimeupdate = function() {
35
35
  onPropChanged('time');
36
+ onPropChanged('buffered');
36
37
  };
37
38
  videoElement.ondurationchange = function() {
38
39
  onPropChanged('duration');
39
40
  };
40
41
  videoElement.onwaiting = function() {
41
42
  onPropChanged('buffering');
43
+ onPropChanged('buffered');
42
44
  };
43
45
  videoElement.onseeking = function() {
44
46
  onPropChanged('time');
45
47
  onPropChanged('buffering');
48
+ onPropChanged('buffered');
46
49
  };
47
50
  videoElement.onseeked = function() {
48
51
  onPropChanged('time');
49
52
  onPropChanged('buffering');
53
+ onPropChanged('buffered');
50
54
  };
51
55
  videoElement.onstalled = function() {
52
56
  onPropChanged('buffering');
57
+ onPropChanged('buffered');
53
58
  };
54
59
  videoElement.onplaying = function() {
55
60
  onPropChanged('time');
56
61
  onPropChanged('buffering');
62
+ onPropChanged('buffered');
57
63
  };
58
64
  videoElement.oncanplay = function() {
59
65
  onPropChanged('buffering');
66
+ onPropChanged('buffered');
60
67
  };
61
68
  videoElement.canplaythrough = function() {
62
69
  onPropChanged('buffering');
70
+ onPropChanged('buffered');
63
71
  };
64
72
  videoElement.onloadedmetadata = function() {
65
73
  onPropChanged('loaded');
66
74
  };
67
75
  videoElement.onloadeddata = function() {
68
76
  onPropChanged('buffering');
77
+ onPropChanged('buffered');
69
78
  };
70
79
  videoElement.onvolumechange = function() {
71
80
  onPropChanged('volume');
@@ -105,6 +114,7 @@ function VidaaVideo(options) {
105
114
  time: false,
106
115
  duration: false,
107
116
  buffering: false,
117
+ buffered: false,
108
118
  subtitlesTracks: false,
109
119
  selectedSubtitlesTrackId: false,
110
120
  audioTracks: false,
@@ -154,6 +164,20 @@ function VidaaVideo(options) {
154
164
 
155
165
  return videoElement.readyState < videoElement.HAVE_FUTURE_DATA;
156
166
  }
167
+ case 'buffered': {
168
+ if (stream === null) {
169
+ return null;
170
+ }
171
+
172
+ var time = videoElement.currentTime !== null && isFinite(videoElement.currentTime) ? videoElement.currentTime : 0;
173
+ for (var i = 0; i < videoElement.buffered.length; i++) {
174
+ if (videoElement.buffered.start(i) <= time && time <= videoElement.buffered.end(i)) {
175
+ return Math.floor(videoElement.buffered.end(i) * 1000);
176
+ }
177
+ }
178
+
179
+ return Math.floor(time * 1000);
180
+ }
157
181
  case 'subtitlesTracks': {
158
182
  if (stream === null) {
159
183
  return [];
@@ -411,6 +435,7 @@ function VidaaVideo(options) {
411
435
  onPropChanged('time');
412
436
  onPropChanged('duration');
413
437
  onPropChanged('buffering');
438
+ onPropChanged('buffered');
414
439
  if (videoElement.textTracks) {
415
440
  videoElement.textTracks.onaddtrack = function() {
416
441
  setTimeout(function() {
@@ -469,6 +494,7 @@ function VidaaVideo(options) {
469
494
  onPropChanged('time');
470
495
  onPropChanged('duration');
471
496
  onPropChanged('buffering');
497
+ onPropChanged('buffered');
472
498
  onPropChanged('subtitlesTracks');
473
499
  onPropChanged('selectedSubtitlesTrackId');
474
500
  onPropChanged('audioTracks');
@@ -550,7 +576,7 @@ VidaaVideo.canPlayStream = function(stream) {
550
576
  VidaaVideo.manifest = {
551
577
  name: 'VidaaVideo',
552
578
  external: false,
553
- props: ['stream', 'loaded', 'paused', 'time', 'duration', 'buffering', 'audioTracks', 'selectedAudioTrackId', 'subtitlesTracks', 'selectedSubtitlesTrackId', 'volume', 'muted', 'playbackSpeed'],
579
+ props: ['stream', 'loaded', 'paused', 'time', 'duration', 'buffering', 'buffered', 'audioTracks', 'selectedAudioTrackId', 'subtitlesTracks', 'selectedSubtitlesTrackId', 'volume', 'muted', 'playbackSpeed'],
554
580
  commands: ['load', 'unload', 'destroy'],
555
581
  events: ['propValue', 'propChanged', 'ended', 'error', 'subtitlesTrackLoaded', 'audioTrackLoaded']
556
582
  };