diff --git a/docs/assets/example/thumbnail.js b/docs/assets/example/thumbnail.js index e950c7e98..3f741d34a 100644 --- a/docs/assets/example/thumbnail.js +++ b/docs/assets/example/thumbnail.js @@ -1,3 +1,7 @@ +if (window.lastThumbnail) { + window.lastThumbnail.destroy(); +} + var $popups = document.querySelector('.popups'); var $popinner = document.querySelector('.popinner'); var $artplayer = document.querySelector('.artplayer-app'); @@ -10,39 +14,43 @@ var thumbnail = new ArtplayerToolThumbnail({ width: 160, // 宽度 height: 90, // 高度 column: 10, // 列数 + begin: 0, // 开始 + end: NaN, // 结束 }); -thumbnail.on('file', function(file) { +window.lastThumbnail = thumbnail; + +thumbnail.on('file', function (file) { console.log('Read video successfully: ' + file.name); }); -thumbnail.on('video', function(video) { +thumbnail.on('video', function (video) { console.log('Video size: ' + video.videoWidth + ' x ' + video.videoHeight); console.log('Video duration: ' + video.duration + 's'); thumbnail.start(); }); -thumbnail.on('canvas', function(canvas) { +thumbnail.on('canvas', function (canvas) { console.log('Build canvas successfully'); console.log('Canvas size: ' + canvas.width + ' x ' + canvas.height); console.log('Preview density: ' + thumbnail.density + ' p/s'); }); -thumbnail.on('update', function(url, percentage) { +thumbnail.on('update', function (url, percentage) { console.log('Processing: ' + Math.floor(percentage.toFixed(2) * 100) + '%'); $popups.style.display = 'flex'; $popinner.style.backgroundImage = 'url(' + url + ')'; }); -thumbnail.on('download', function(name) { +thumbnail.on('download', function (name) { console.log('Start download preview: ' + name); }); -thumbnail.on('done', function() { +thumbnail.on('done', function () { $popups.style.display = 'none'; thumbnail.download(); console.log('Build preview image complete'); - Artplayer.instances.forEach(function(art) { + Artplayer.instances.forEach(function (art) { art.destroy(true); }); diff --git a/docs/uncompiled/artplayer-tool-thumbnail.js b/docs/uncompiled/artplayer-tool-thumbnail.js index 59d1c7921..93e4fa2b9 100644 --- a/docs/uncompiled/artplayer-tool-thumbnail.js +++ b/docs/uncompiled/artplayer-tool-thumbnail.js @@ -1,7 +1,7 @@ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, global.ArtplayerToolThumbnail = factory()); + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ArtplayerToolThumbnail = factory()); }(this, (function () { 'use strict'; function _classCallCheck(instance, Constructor) { @@ -30,30 +30,6 @@ var createClass = _createClass; - function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; - } - - var _typeof_1 = createCommonjsModule(function (module) { - function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); } - - function _typeof(obj) { - if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") { - module.exports = _typeof = function _typeof(obj) { - return _typeof2(obj); - }; - } else { - module.exports = _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); - }; - } - - return _typeof(obj); - } - - module.exports = _typeof; - }); - function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); @@ -64,27 +40,10 @@ var assertThisInitialized = _assertThisInitialized; - function _possibleConstructorReturn(self, call) { - if (call && (_typeof_1(call) === "object" || typeof call === "function")) { - return call; - } - - return assertThisInitialized(self); + function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; } - var possibleConstructorReturn = _possibleConstructorReturn; - - var getPrototypeOf = createCommonjsModule(function (module) { - function _getPrototypeOf(o) { - module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - - module.exports = _getPrototypeOf; - }); - var setPrototypeOf = createCommonjsModule(function (module) { function _setPrototypeOf(o, p) { module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { @@ -115,6 +74,47 @@ var inherits = _inherits; + var _typeof_1 = createCommonjsModule(function (module) { + function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + module.exports = _typeof = function _typeof(obj) { + return typeof obj; + }; + } else { + module.exports = _typeof = function _typeof(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); + } + + module.exports = _typeof; + }); + + function _possibleConstructorReturn(self, call) { + if (call && (_typeof_1(call) === "object" || typeof call === "function")) { + return call; + } + + return assertThisInitialized(self); + } + + var possibleConstructorReturn = _possibleConstructorReturn; + + var getPrototypeOf = createCommonjsModule(function (module) { + function _getPrototypeOf(o) { + module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); + } + + module.exports = _getPrototypeOf; + }); + function E () { // Keep this empty so it's easier to inherit from // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3) @@ -202,11 +202,15 @@ return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b)); } - var ArtplayerToolThumbnail = - /*#__PURE__*/ - function (_Emitter) { + function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn(this, result); }; } + + function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + var ArtplayerToolThumbnail = /*#__PURE__*/function (_Emitter) { inherits(ArtplayerToolThumbnail, _Emitter); + var _super = _createSuper(ArtplayerToolThumbnail); + function ArtplayerToolThumbnail() { var _this; @@ -214,13 +218,14 @@ classCallCheck(this, ArtplayerToolThumbnail); - _this = possibleConstructorReturn(this, getPrototypeOf(ArtplayerToolThumbnail).call(this)); + _this = _super.call(this); _this.processing = false; _this.option = {}; _this.setup(Object.assign({}, ArtplayerToolThumbnail.DEFAULTS, option)); _this.video = ArtplayerToolThumbnail.creatVideo(); + _this.duration = 0; _this.inputChange = _this.inputChange.bind(assertThisInitialized(_this)); _this.ondrop = _this.ondrop.bind(assertThisInitialized(_this)); @@ -272,7 +277,7 @@ this.option.fileInput = newFileInput; } - ['delay', 'number', 'width', 'height', 'column'].forEach(function (item) { + ['delay', 'number', 'width', 'height', 'column', 'begin', 'end'].forEach(function (item) { _this2.errorHandle(typeof _this2.option[item] === 'number', "The '".concat(item, "' is not a number")); }); this.option.delay = clamp(delay, 10, 1000); @@ -317,12 +322,19 @@ value: function start() { var _this4 = this; + if (!this.video.duration) return sleep(1000).then(this.start); var _this$option2 = this.option, width = _this$option2.width, height = _this$option2.height, number = _this$option2.number, - delay = _this$option2.delay; - this.density = number / this.video.duration; + delay = _this$option2.delay, + begin = _this$option2.begin, + end = _this$option2.end; + this.option.begin = clamp(begin, 0, this.video.duration); + this.option.end = clamp(end || this.video.duration, begin, this.video.duration); + this.errorHandle(this.option.end > this.option.begin, "End time must be greater than the start time"); + this.duration = this.option.end - this.option.begin; + this.density = number / this.duration; this.errorHandle(this.file && this.video, 'Please select the video file first'); this.errorHandle(!this.processing, 'There is currently a task in progress, please wait a moment...'); this.errorHandle(this.density <= 1, "The preview density cannot be greater than 1, but got ".concat(this.density)); @@ -381,10 +393,10 @@ number = _this$option3.number, width = _this$option3.width, height = _this$option3.height, - column = _this$option3.column; - var duration = this.video.duration; - var timeGap = duration / number; - var timePoints = [timeGap]; + column = _this$option3.column, + begin = _this$option3.begin; + var timeGap = this.duration / number; + var timePoints = [begin + timeGap]; while (timePoints.length < number) { var last = timePoints[timePoints.length - 1]; @@ -484,7 +496,9 @@ number: 60, width: 160, height: 90, - column: 10 + column: 10, + begin: 0, + end: 0 }; } }]); diff --git a/docs/uncompiled/artplayer-tool-thumbnail.js.map b/docs/uncompiled/artplayer-tool-thumbnail.js.map index 115ebeb9a..be47194b4 100644 --- a/docs/uncompiled/artplayer-tool-thumbnail.js.map +++ b/docs/uncompiled/artplayer-tool-thumbnail.js.map @@ -1 +1 @@ -{"version":3,"file":"artplayer-tool-thumbnail.js","sources":["../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/classCallCheck.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/createClass.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/typeof.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/_@babel_runtime@7.7.4@@babel/runtime/helpers/inherits.js","../../packages/artplayer-tool-thumbnail/node_modules/tiny-emitter/index.js","../../packages/artplayer-tool-thumbnail/src/utils.js","../../packages/artplayer-tool-thumbnail/src/index.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","export function sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport function runPromisesInSeries(ps) {\n return ps.reduce((p, next) => p.then(next), Promise.resolve());\n}\n\nexport function getFileName(name) {\n const nameArray = name.split('.');\n nameArray.pop();\n return nameArray.join('.');\n}\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}","import Emitter from 'tiny-emitter';\nimport { runPromisesInSeries, sleep, getFileName, clamp } from './utils';\n\nclass ArtplayerToolThumbnail extends Emitter {\n constructor(option = {}) {\n super();\n this.processing = false;\n this.option = {};\n this.setup(Object.assign({}, ArtplayerToolThumbnail.DEFAULTS, option));\n this.video = ArtplayerToolThumbnail.creatVideo();\n this.inputChange = this.inputChange.bind(this);\n this.ondrop = this.ondrop.bind(this);\n this.option.fileInput.addEventListener('change', this.inputChange);\n this.option.fileInput.addEventListener('dragover', ArtplayerToolThumbnail.ondragover);\n this.option.fileInput.addEventListener('drop', ArtplayerToolThumbnail.ondrop);\n }\n\n static get DEFAULTS() {\n return {\n delay: 300,\n number: 60,\n width: 160,\n height: 90,\n column: 10,\n };\n }\n\n static ondragover(e) {\n e.preventDefault();\n }\n\n ondrop(e) {\n e.preventDefault();\n const file = e.dataTransfer.files[0];\n this.loadVideo(file);\n }\n\n setup(option = {}) {\n this.option = Object.assign({}, this.option, option);\n const { fileInput, delay, number, width, height, column } = this.option;\n\n this.errorHandle(fileInput instanceof Element, \"The 'fileInput' is not a Element\");\n\n if (!(fileInput.tagName === 'INPUT' && fileInput.type === 'file')) {\n fileInput.style.position = 'relative';\n const newFileInput = document.createElement('input');\n newFileInput.type = 'file';\n newFileInput.style.position = 'absolute';\n newFileInput.style.width = '100%';\n newFileInput.style.height = '100%';\n newFileInput.style.left = '0';\n newFileInput.style.top = '0';\n newFileInput.style.right = '0';\n newFileInput.style.bottom = '0';\n newFileInput.style.opacity = '0';\n fileInput.appendChild(newFileInput);\n this.option.fileInput = newFileInput;\n }\n\n ['delay', 'number', 'width', 'height', 'column'].forEach(item => {\n this.errorHandle(typeof this.option[item] === 'number', `The '${item}' is not a number`);\n });\n\n this.option.delay = clamp(delay, 10, 1000);\n this.option.number = clamp(number, 10, 1000);\n this.option.width = clamp(width, 10, 1000);\n this.option.height = clamp(height, 10, 1000);\n this.option.column = clamp(column, 1, 1000);\n return this;\n }\n\n static creatVideo() {\n const video = document.createElement('video');\n video.style.position = 'absolute';\n video.style.top = '-9999px';\n video.style.left = '-9999px';\n video.muted = true;\n video.controls = true;\n document.body.appendChild(video);\n return video;\n }\n\n inputChange() {\n const file = this.option.fileInput.files[0];\n this.loadVideo(file);\n }\n\n loadVideo(file) {\n const { delay } = this.option;\n if (file) {\n const canPlayType = this.video.canPlayType(file.type);\n this.errorHandle(\n canPlayType === 'maybe' || canPlayType === 'probably',\n `Playback of this file format is not supported: ${file.type}`,\n );\n const videoUrl = URL.createObjectURL(file);\n this.videoUrl = videoUrl;\n this.file = file;\n this.emit('file', this.file);\n this.video.src = videoUrl;\n sleep(delay)\n .then(() => {\n this.emit('video', this.video);\n })\n .catch(err => {\n this.emit('error', err.message);\n throw err;\n });\n }\n }\n\n start() {\n const { width, height, number, delay } = this.option;\n this.density = number / this.video.duration;\n this.errorHandle(this.file && this.video, 'Please select the video file first');\n this.errorHandle(!this.processing, 'There is currently a task in progress, please wait a moment...');\n this.errorHandle(this.density <= 1, `The preview density cannot be greater than 1, but got ${this.density}`);\n const screenshotDate = this.creatScreenshotDate();\n const canvas = this.creatCanvas();\n const context2D = canvas.getContext('2d');\n this.emit('canvas', canvas);\n const promiseList = screenshotDate.map((item, index) => () => {\n this.video.currentTime = item.time;\n return new Promise(resolve => {\n sleep(delay)\n .then(() => {\n context2D.drawImage(this.video, item.x, item.y, width, height);\n canvas.toBlob(blob => {\n if (this.thumbnailUrl) {\n URL.revokeObjectURL(this.thumbnailUrl);\n }\n this.thumbnailUrl = URL.createObjectURL(blob);\n this.emit('update', this.thumbnailUrl, (index + 1) / number);\n resolve();\n });\n })\n .catch(err => {\n throw err;\n });\n });\n });\n this.processing = true;\n return runPromisesInSeries(promiseList)\n .then(() =>\n sleep(delay * 2)\n .then(() => {\n this.processing = false;\n this.emit('done');\n })\n .catch(err => {\n this.processing = false;\n this.emit('error', err.message);\n throw err;\n }),\n )\n .catch(err => {\n this.processing = false;\n this.emit('error', err.message);\n throw err;\n });\n }\n\n creatScreenshotDate() {\n const { number, width, height, column } = this.option;\n const { duration } = this.video;\n const timeGap = duration / number;\n const timePoints = [timeGap];\n while (timePoints.length < number) {\n const last = timePoints[timePoints.length - 1];\n timePoints.push(last + timeGap);\n }\n return timePoints.map((item, index) => ({\n time: item - timeGap / 2,\n x: (index % column) * width,\n y: Math.floor(index / column) * height,\n }));\n }\n\n creatCanvas() {\n const { number, width, height, column } = this.option;\n const canvas = document.createElement('canvas');\n const context2D = canvas.getContext('2d');\n canvas.width = width * column;\n canvas.height = Math.ceil(number / column) * height + 30;\n context2D.fillStyle = 'black';\n context2D.fillRect(0, 0, canvas.width, canvas.height);\n context2D.font = '14px Georgia';\n context2D.fillStyle = '#fff';\n context2D.fillText(\n `From: https://artplayer.org/, Number: ${number}, Width: ${width}, Height: ${height}, Column: ${column}`,\n 10,\n canvas.height - 11,\n );\n return canvas;\n }\n\n download() {\n this.errorHandle(\n this.file && this.thumbnailUrl,\n 'Download does not seem to be ready, please create preview first',\n );\n this.errorHandle(!this.processing, 'There is currently a task in progress, please wait a moment...');\n const elink = document.createElement('a');\n const name = `${getFileName(this.file.name)}.png`;\n elink.download = name;\n elink.href = this.thumbnailUrl;\n document.body.appendChild(elink);\n elink.click();\n document.body.removeChild(elink);\n this.emit('download', name);\n return this;\n }\n\n errorHandle(condition, msg) {\n if (!condition) {\n this.emit('error', msg);\n throw new Error(msg);\n }\n }\n\n destroy() {\n this.option.fileInput.removeEventListener('change', this.inputChange);\n this.option.fileInput.removeEventListener('dragover', ArtplayerToolThumbnail.ondragover);\n this.option.fileInput.removeEventListener('drop', ArtplayerToolThumbnail.ondrop);\n document.body.removeChild(this.video);\n if (this.videoUrl) {\n URL.revokeObjectURL(this.videoUrl);\n }\n if (this.thumbnailUrl) {\n URL.revokeObjectURL(this.thumbnailUrl);\n }\n this.emit('destroy');\n }\n}\n\nexport default ArtplayerToolThumbnail;\n"],"names":["_typeof","sleep","ms","Promise","resolve","setTimeout","runPromisesInSeries","ps","reduce","p","next","then","getFileName","name","nameArray","split","pop","join","clamp","num","a","b","Math","max","min","ArtplayerToolThumbnail","option","processing","setup","Object","assign","DEFAULTS","video","creatVideo","inputChange","bind","ondrop","fileInput","addEventListener","ondragover","e","preventDefault","file","dataTransfer","files","loadVideo","delay","number","width","height","column","errorHandle","Element","tagName","type","style","position","newFileInput","document","createElement","left","top","right","bottom","opacity","appendChild","forEach","item","canPlayType","videoUrl","URL","createObjectURL","emit","src","catch","err","message","density","duration","screenshotDate","creatScreenshotDate","canvas","creatCanvas","context2D","getContext","promiseList","map","index","currentTime","time","drawImage","x","y","toBlob","blob","thumbnailUrl","revokeObjectURL","timeGap","timePoints","length","last","push","floor","ceil","fillStyle","fillRect","font","fillText","elink","download","href","body","click","removeChild","condition","msg","Error","removeEventListener","muted","controls","Emitter"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"artplayer-tool-thumbnail.js","sources":["../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/classCallCheck.js","../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/createClass.js","../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/inherits.js","../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/typeof.js","../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/_@babel_runtime@7.12.5@@babel/runtime/helpers/getPrototypeOf.js","../../packages/artplayer-tool-thumbnail/node_modules/tiny-emitter/index.js","../../packages/artplayer-tool-thumbnail/src/utils.js","../../packages/artplayer-tool-thumbnail/src/index.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","var _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","export function sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport function runPromisesInSeries(ps) {\n return ps.reduce((p, next) => p.then(next), Promise.resolve());\n}\n\nexport function getFileName(name) {\n const nameArray = name.split('.');\n nameArray.pop();\n return nameArray.join('.');\n}\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}","import Emitter from 'tiny-emitter';\nimport { runPromisesInSeries, sleep, getFileName, clamp } from './utils';\n\nclass ArtplayerToolThumbnail extends Emitter {\n constructor(option = {}) {\n super();\n this.processing = false;\n this.option = {};\n this.setup(Object.assign({}, ArtplayerToolThumbnail.DEFAULTS, option));\n this.video = ArtplayerToolThumbnail.creatVideo();\n this.duration = 0;\n this.inputChange = this.inputChange.bind(this);\n this.ondrop = this.ondrop.bind(this);\n this.option.fileInput.addEventListener('change', this.inputChange);\n this.option.fileInput.addEventListener('dragover', ArtplayerToolThumbnail.ondragover);\n this.option.fileInput.addEventListener('drop', ArtplayerToolThumbnail.ondrop);\n }\n\n static get DEFAULTS() {\n return {\n delay: 300,\n number: 60,\n width: 160,\n height: 90,\n column: 10,\n begin: 0,\n end: 0,\n };\n }\n\n static ondragover(e) {\n e.preventDefault();\n }\n\n ondrop(e) {\n e.preventDefault();\n const file = e.dataTransfer.files[0];\n this.loadVideo(file);\n }\n\n setup(option = {}) {\n this.option = Object.assign({}, this.option, option);\n const { fileInput, delay, number, width, height, column } = this.option;\n\n this.errorHandle(fileInput instanceof Element, \"The 'fileInput' is not a Element\");\n\n if (!(fileInput.tagName === 'INPUT' && fileInput.type === 'file')) {\n fileInput.style.position = 'relative';\n const newFileInput = document.createElement('input');\n newFileInput.type = 'file';\n newFileInput.style.position = 'absolute';\n newFileInput.style.width = '100%';\n newFileInput.style.height = '100%';\n newFileInput.style.left = '0';\n newFileInput.style.top = '0';\n newFileInput.style.right = '0';\n newFileInput.style.bottom = '0';\n newFileInput.style.opacity = '0';\n fileInput.appendChild(newFileInput);\n this.option.fileInput = newFileInput;\n }\n\n ['delay', 'number', 'width', 'height', 'column', 'begin', 'end'].forEach((item) => {\n this.errorHandle(typeof this.option[item] === 'number', `The '${item}' is not a number`);\n });\n\n this.option.delay = clamp(delay, 10, 1000);\n this.option.number = clamp(number, 10, 1000);\n this.option.width = clamp(width, 10, 1000);\n this.option.height = clamp(height, 10, 1000);\n this.option.column = clamp(column, 1, 1000);\n return this;\n }\n\n static creatVideo() {\n const video = document.createElement('video');\n video.style.position = 'absolute';\n video.style.top = '-9999px';\n video.style.left = '-9999px';\n video.muted = true;\n video.controls = true;\n document.body.appendChild(video);\n return video;\n }\n\n inputChange() {\n const file = this.option.fileInput.files[0];\n this.loadVideo(file);\n }\n\n loadVideo(file) {\n const { delay } = this.option;\n if (file) {\n const canPlayType = this.video.canPlayType(file.type);\n this.errorHandle(\n canPlayType === 'maybe' || canPlayType === 'probably',\n `Playback of this file format is not supported: ${file.type}`,\n );\n const videoUrl = URL.createObjectURL(file);\n this.videoUrl = videoUrl;\n this.file = file;\n this.emit('file', this.file);\n this.video.src = videoUrl;\n sleep(delay)\n .then(() => {\n this.emit('video', this.video);\n })\n .catch((err) => {\n this.emit('error', err.message);\n throw err;\n });\n }\n }\n\n start() {\n if (!this.video.duration) return sleep(1000).then(this.start);\n const { width, height, number, delay, begin, end } = this.option;\n this.option.begin = clamp(begin, 0, this.video.duration);\n this.option.end = clamp(end || this.video.duration, begin, this.video.duration);\n this.errorHandle(this.option.end > this.option.begin, `End time must be greater than the start time`);\n this.duration = this.option.end - this.option.begin;\n this.density = number / this.duration;\n this.errorHandle(this.file && this.video, 'Please select the video file first');\n this.errorHandle(!this.processing, 'There is currently a task in progress, please wait a moment...');\n this.errorHandle(this.density <= 1, `The preview density cannot be greater than 1, but got ${this.density}`);\n const screenshotDate = this.creatScreenshotDate();\n const canvas = this.creatCanvas();\n const context2D = canvas.getContext('2d');\n this.emit('canvas', canvas);\n const promiseList = screenshotDate.map((item, index) => () => {\n this.video.currentTime = item.time;\n return new Promise((resolve) => {\n sleep(delay)\n .then(() => {\n context2D.drawImage(this.video, item.x, item.y, width, height);\n canvas.toBlob((blob) => {\n if (this.thumbnailUrl) {\n URL.revokeObjectURL(this.thumbnailUrl);\n }\n this.thumbnailUrl = URL.createObjectURL(blob);\n this.emit('update', this.thumbnailUrl, (index + 1) / number);\n resolve();\n });\n })\n .catch((err) => {\n throw err;\n });\n });\n });\n this.processing = true;\n return runPromisesInSeries(promiseList)\n .then(() =>\n sleep(delay * 2)\n .then(() => {\n this.processing = false;\n this.emit('done');\n })\n .catch((err) => {\n this.processing = false;\n this.emit('error', err.message);\n throw err;\n }),\n )\n .catch((err) => {\n this.processing = false;\n this.emit('error', err.message);\n throw err;\n });\n }\n\n creatScreenshotDate() {\n const { number, width, height, column, begin } = this.option;\n const timeGap = this.duration / number;\n const timePoints = [begin + timeGap];\n while (timePoints.length < number) {\n const last = timePoints[timePoints.length - 1];\n timePoints.push(last + timeGap);\n }\n return timePoints.map((item, index) => ({\n time: item - timeGap / 2,\n x: (index % column) * width,\n y: Math.floor(index / column) * height,\n }));\n }\n\n creatCanvas() {\n const { number, width, height, column } = this.option;\n const canvas = document.createElement('canvas');\n const context2D = canvas.getContext('2d');\n canvas.width = width * column;\n canvas.height = Math.ceil(number / column) * height + 30;\n context2D.fillStyle = 'black';\n context2D.fillRect(0, 0, canvas.width, canvas.height);\n context2D.font = '14px Georgia';\n context2D.fillStyle = '#fff';\n context2D.fillText(\n `From: https://artplayer.org/, Number: ${number}, Width: ${width}, Height: ${height}, Column: ${column}`,\n 10,\n canvas.height - 11,\n );\n return canvas;\n }\n\n download() {\n this.errorHandle(\n this.file && this.thumbnailUrl,\n 'Download does not seem to be ready, please create preview first',\n );\n this.errorHandle(!this.processing, 'There is currently a task in progress, please wait a moment...');\n const elink = document.createElement('a');\n const name = `${getFileName(this.file.name)}.png`;\n elink.download = name;\n elink.href = this.thumbnailUrl;\n document.body.appendChild(elink);\n elink.click();\n document.body.removeChild(elink);\n this.emit('download', name);\n return this;\n }\n\n errorHandle(condition, msg) {\n if (!condition) {\n this.emit('error', msg);\n throw new Error(msg);\n }\n }\n\n destroy() {\n this.option.fileInput.removeEventListener('change', this.inputChange);\n this.option.fileInput.removeEventListener('dragover', ArtplayerToolThumbnail.ondragover);\n this.option.fileInput.removeEventListener('drop', ArtplayerToolThumbnail.ondrop);\n document.body.removeChild(this.video);\n if (this.videoUrl) {\n URL.revokeObjectURL(this.videoUrl);\n }\n if (this.thumbnailUrl) {\n URL.revokeObjectURL(this.thumbnailUrl);\n }\n this.emit('destroy');\n }\n}\n\nexport default ArtplayerToolThumbnail;\n"],"names":["_typeof","sleep","ms","Promise","resolve","setTimeout","runPromisesInSeries","ps","reduce","p","next","then","getFileName","name","nameArray","split","pop","join","clamp","num","a","b","Math","max","min","ArtplayerToolThumbnail","option","processing","setup","Object","assign","DEFAULTS","video","creatVideo","duration","inputChange","bind","ondrop","fileInput","addEventListener","ondragover","e","preventDefault","file","dataTransfer","files","loadVideo","delay","number","width","height","column","errorHandle","Element","tagName","type","style","position","newFileInput","document","createElement","left","top","right","bottom","opacity","appendChild","forEach","item","canPlayType","videoUrl","URL","createObjectURL","emit","src","catch","err","message","start","begin","end","density","screenshotDate","creatScreenshotDate","canvas","creatCanvas","context2D","getContext","promiseList","map","index","currentTime","time","drawImage","x","y","toBlob","blob","thumbnailUrl","revokeObjectURL","timeGap","timePoints","length","last","push","floor","ceil","fillStyle","fillRect","font","fillText","elink","download","href","body","click","removeChild","condition","msg","Error","removeEventListener","muted","controls","Emitter"],"mappings":"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"} \ No newline at end of file diff --git a/packages/artplayer-tool-thumbnail/src/index.js b/packages/artplayer-tool-thumbnail/src/index.js index 2f463e6f6..c4dd09431 100644 --- a/packages/artplayer-tool-thumbnail/src/index.js +++ b/packages/artplayer-tool-thumbnail/src/index.js @@ -8,6 +8,7 @@ class ArtplayerToolThumbnail extends Emitter { this.option = {}; this.setup(Object.assign({}, ArtplayerToolThumbnail.DEFAULTS, option)); this.video = ArtplayerToolThumbnail.creatVideo(); + this.duration = 0; this.inputChange = this.inputChange.bind(this); this.ondrop = this.ondrop.bind(this); this.option.fileInput.addEventListener('change', this.inputChange); @@ -22,6 +23,8 @@ class ArtplayerToolThumbnail extends Emitter { width: 160, height: 90, column: 10, + begin: 0, + end: 0, }; } @@ -57,7 +60,7 @@ class ArtplayerToolThumbnail extends Emitter { this.option.fileInput = newFileInput; } - ['delay', 'number', 'width', 'height', 'column'].forEach(item => { + ['delay', 'number', 'width', 'height', 'column', 'begin', 'end'].forEach((item) => { this.errorHandle(typeof this.option[item] === 'number', `The '${item}' is not a number`); }); @@ -102,7 +105,7 @@ class ArtplayerToolThumbnail extends Emitter { .then(() => { this.emit('video', this.video); }) - .catch(err => { + .catch((err) => { this.emit('error', err.message); throw err; }); @@ -110,8 +113,13 @@ class ArtplayerToolThumbnail extends Emitter { } start() { - const { width, height, number, delay } = this.option; - this.density = number / this.video.duration; + if (!this.video.duration) return sleep(1000).then(this.start); + const { width, height, number, delay, begin, end } = this.option; + this.option.begin = clamp(begin, 0, this.video.duration); + this.option.end = clamp(end || this.video.duration, begin, this.video.duration); + this.errorHandle(this.option.end > this.option.begin, `End time must be greater than the start time`); + this.duration = this.option.end - this.option.begin; + this.density = number / this.duration; this.errorHandle(this.file && this.video, 'Please select the video file first'); this.errorHandle(!this.processing, 'There is currently a task in progress, please wait a moment...'); this.errorHandle(this.density <= 1, `The preview density cannot be greater than 1, but got ${this.density}`); @@ -121,11 +129,11 @@ class ArtplayerToolThumbnail extends Emitter { this.emit('canvas', canvas); const promiseList = screenshotDate.map((item, index) => () => { this.video.currentTime = item.time; - return new Promise(resolve => { + return new Promise((resolve) => { sleep(delay) .then(() => { context2D.drawImage(this.video, item.x, item.y, width, height); - canvas.toBlob(blob => { + canvas.toBlob((blob) => { if (this.thumbnailUrl) { URL.revokeObjectURL(this.thumbnailUrl); } @@ -134,7 +142,7 @@ class ArtplayerToolThumbnail extends Emitter { resolve(); }); }) - .catch(err => { + .catch((err) => { throw err; }); }); @@ -147,13 +155,13 @@ class ArtplayerToolThumbnail extends Emitter { this.processing = false; this.emit('done'); }) - .catch(err => { + .catch((err) => { this.processing = false; this.emit('error', err.message); throw err; }), ) - .catch(err => { + .catch((err) => { this.processing = false; this.emit('error', err.message); throw err; @@ -161,10 +169,9 @@ class ArtplayerToolThumbnail extends Emitter { } creatScreenshotDate() { - const { number, width, height, column } = this.option; - const { duration } = this.video; - const timeGap = duration / number; - const timePoints = [timeGap]; + const { number, width, height, column, begin } = this.option; + const timeGap = this.duration / number; + const timePoints = [begin + timeGap]; while (timePoints.length < number) { const last = timePoints[timePoints.length - 1]; timePoints.push(last + timeGap);