UNPKG

@epiclabs/epic-video-player

Version:

Video player wrapper to support different video sources with an unified interface

108 lines (107 loc) 3.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Player = void 0; var tslib_1 = require("tslib"); var Utils = tslib_1.__importStar(require("./utils")); var Player = /** @class */ (function () { function Player(url, htmlPlayer, config) { var _this = this; this.url = url; this.htmlPlayer = htmlPlayer; this.config = config; this.updateStats = function () { _this.stats = { buffered: Utils.timeRangesToITimeRanges(Utils.getBuffered(_this.htmlPlayer)), droppedFrames: Utils.getDroppedFrames(_this.htmlPlayer), duration: Utils.getDuration(_this.htmlPlayer), loadTime: _this.stats.loadTime, played: Utils.timeRangesToITimeRanges(Utils.getPlayed(_this.htmlPlayer)), seekable: Utils.timeRangesToITimeRanges(Utils.getSeekable(_this.htmlPlayer)), }; }; this.loadStart = function () { _this.updateStats(); if (_this.stats.loadTime === -1) { _this.loadStartTime = new Date().getTime(); } }; this.loadEnd = function () { _this.updateStats(); if (_this.stats.loadTime === -1) { _this.stats.loadTime = (new Date().getTime() - _this.loadStartTime) / 1000; } _this.updateStats(); }; this.resetStats(); this.load(); this.initListeners(); } Player.prototype.getStats = function () { return this.stats; }; Player.prototype.pause = function () { this.htmlPlayer.pause(); }; Player.prototype.play = function () { return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.htmlPlayer.play()]; case 1: _a.sent(); return [2 /*return*/]; } }); }); }; Player.prototype.currentTime = function (secs) { if (secs !== undefined) { this.htmlPlayer.currentTime = secs; } else { return this.htmlPlayer.currentTime; } }; Player.prototype.volume = function (perc) { if (perc !== undefined) { this.htmlPlayer.volume = perc; } else { return this.htmlPlayer.volume; } }; Player.prototype.playbackRate = function (rate) { if (rate !== undefined) { this.htmlPlayer.playbackRate = rate; } else { return this.htmlPlayer.playbackRate; } }; Player.prototype.reset = function () { this.destroyListeners(); this.resetStats(); }; Player.prototype.resetStats = function () { this.stats = { buffered: [], droppedFrames: 0, duration: 0, loadTime: -1, played: [], seekable: [], }; }; Player.prototype.initListeners = function () { this.htmlPlayer.addEventListener('timeupdate', this.updateStats); this.htmlPlayer.addEventListener('loadstart', this.loadStart); this.htmlPlayer.addEventListener('canplay', this.loadEnd); }; Player.prototype.destroyListeners = function () { this.htmlPlayer.removeEventListener('timeupdate', this.updateStats); this.htmlPlayer.removeEventListener('loadstart', this.loadStart); this.htmlPlayer.removeEventListener('canplay', this.loadEnd); }; return Player; }()); exports.Player = Player;