diff --git a/docs/assets/example/canvas.js b/docs/assets/example/canvas.js index 256082915..2887ed712 100644 --- a/docs/assets/example/canvas.js +++ b/docs/assets/example/canvas.js @@ -12,6 +12,7 @@ var art = new Artplayer({ setting: true, loop: true, flip: true, + pip: true, playbackRate: true, aspectRatio: true, fullscreen: true, diff --git a/docs/uncompiled/artplayer-proxy-canvas/index.js b/docs/uncompiled/artplayer-proxy-canvas/index.js index 879344be7..3be11e90e 100644 --- a/docs/uncompiled/artplayer-proxy-canvas/index.js +++ b/docs/uncompiled/artplayer-proxy-canvas/index.js @@ -191,7 +191,7 @@ function artplayerProxyCanvas() { ctx.drawImage(bitmap, 0, 0, canvas.width, canvas.height); bitmap.close(); } else ctx.drawImage(video, 0, 0, canvas.width, canvas.height); - art.emit("artplayerProxyCanvas:draw", ctx); + art.emit("artplayerProxyCanvas:draw", ctx, video); } catch (error) { art.emit("artplayerProxyCanvas:error", error); } diff --git a/docs/uncompiled/artplayer-proxy-canvas/index.js.map b/docs/uncompiled/artplayer-proxy-canvas/index.js.map index 5c52b1655..d2e67a83e 100644 --- a/docs/uncompiled/artplayer-proxy-canvas/index.js.map +++ b/docs/uncompiled/artplayer-proxy-canvas/index.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["Desktop/github/ArtPlayer/packages/artplayer-proxy-canvas/src/index.js","Desktop/github/ArtPlayer/node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["export default function artplayerProxyCanvas() {\n return (art) => {\n const { constructor } = art;\n const { createElement } = constructor.utils;\n\n const canvas = createElement('canvas');\n const video = createElement('video');\n const ctx = canvas.getContext('2d');\n\n let animationId = null;\n\n const originalCanvasMethods = {};\n for (const prop in canvas) {\n if (typeof canvas[prop] === 'function') {\n originalCanvasMethods[prop] = canvas[prop].bind(canvas);\n }\n }\n\n for (const prop in video) {\n if (!(prop in canvas)) {\n Object.defineProperty(canvas, prop, {\n get() {\n const value = video[prop];\n return typeof value === 'function' ? value.bind(video) : value;\n },\n set(value) {\n video[prop] = value;\n },\n configurable: true,\n enumerable: true,\n });\n }\n }\n\n for (const prop in originalCanvasMethods) {\n canvas[prop] = function (...args) {\n if (prop in originalCanvasMethods) {\n return originalCanvasMethods[prop](...args);\n }\n return video[prop].apply(video, args);\n };\n }\n\n setupEventListeners();\n setupArtPlayerEvents();\n\n return canvas;\n\n function setupEventListeners() {\n const { events } = constructor.config;\n setTimeout(() => {\n events.forEach((event) => {\n art.proxy(video, event, (event) => {\n art.emit(`video:${event.type}`, event);\n });\n });\n });\n }\n\n async function draw() {\n try {\n if (typeof createImageBitmap !== 'undefined') {\n const bitmap = await createImageBitmap(video);\n ctx.drawImage(bitmap, 0, 0, canvas.width, canvas.height);\n bitmap.close();\n } else {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n }\n art.emit('artplayerProxyCanvas:draw', ctx);\n } catch (error) {\n art.emit('artplayerProxyCanvas:error', error);\n }\n }\n\n async function animation() {\n await draw();\n animationId = requestAnimationFrame(animation);\n }\n\n function resize() {\n const player = art.template?.$player;\n if (!player || art.option.autoSize) return;\n\n const aspectRatio = video.videoWidth / video.videoHeight;\n const containerWidth = player.clientWidth;\n const containerHeight = player.clientHeight;\n const containerRatio = containerWidth / containerHeight;\n\n let canvasWidth, canvasHeight;\n if (containerRatio > aspectRatio) {\n canvasHeight = containerHeight;\n canvasWidth = canvasHeight * aspectRatio;\n } else {\n canvasWidth = containerWidth;\n canvasHeight = canvasWidth / aspectRatio;\n }\n\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n\n const paddingLeft = (containerWidth - canvasWidth) / 2;\n const paddingTop = (containerHeight - canvasHeight) / 2;\n\n Object.assign(canvas.style, {\n padding: `${paddingTop}px ${paddingLeft}px`,\n });\n }\n\n function setupArtPlayerEvents() {\n art.on('video:loadedmetadata', () => {\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n });\n\n art.on('video:play', () => {\n cancelAnimationFrame(animationId);\n animation();\n });\n\n art.on('video:pause', () => {\n cancelAnimationFrame(animationId);\n });\n\n art.on('resize', () => {\n resize();\n draw();\n });\n\n art.on('destroy', () => {\n cancelAnimationFrame(animationId);\n });\n }\n };\n}\n\nif (typeof window !== 'undefined') {\n window['artplayerProxyCanvas'] = artplayerProxyCanvas;\n}\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (\n key === 'default' ||\n key === '__esModule' ||\n Object.prototype.hasOwnProperty.call(dest, key)\n ) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../../../../../"} \ No newline at end of file +{"mappings":"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","sources":["Desktop/github/ArtPlayer/packages/artplayer-proxy-canvas/src/index.js","Desktop/github/ArtPlayer/node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["export default function artplayerProxyCanvas() {\n return (art) => {\n const { constructor } = art;\n const { createElement } = constructor.utils;\n\n const canvas = createElement('canvas');\n const video = createElement('video');\n const ctx = canvas.getContext('2d');\n\n let animationId = null;\n\n const originalCanvasMethods = {};\n for (const prop in canvas) {\n if (typeof canvas[prop] === 'function') {\n originalCanvasMethods[prop] = canvas[prop].bind(canvas);\n }\n }\n\n for (const prop in video) {\n if (!(prop in canvas)) {\n Object.defineProperty(canvas, prop, {\n get() {\n const value = video[prop];\n return typeof value === 'function' ? value.bind(video) : value;\n },\n set(value) {\n video[prop] = value;\n },\n configurable: true,\n enumerable: true,\n });\n }\n }\n\n for (const prop in originalCanvasMethods) {\n canvas[prop] = function (...args) {\n if (prop in originalCanvasMethods) {\n return originalCanvasMethods[prop](...args);\n }\n return video[prop].apply(video, args);\n };\n }\n\n setupEventListeners();\n setupArtPlayerEvents();\n\n return canvas;\n\n function setupEventListeners() {\n const { events } = constructor.config;\n setTimeout(() => {\n events.forEach((event) => {\n art.proxy(video, event, (event) => {\n art.emit(`video:${event.type}`, event);\n });\n });\n });\n }\n\n async function draw() {\n try {\n if (typeof createImageBitmap !== 'undefined') {\n const bitmap = await createImageBitmap(video);\n ctx.drawImage(bitmap, 0, 0, canvas.width, canvas.height);\n bitmap.close();\n } else {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n }\n art.emit('artplayerProxyCanvas:draw', ctx, video);\n } catch (error) {\n art.emit('artplayerProxyCanvas:error', error);\n }\n }\n\n async function animation() {\n await draw();\n animationId = requestAnimationFrame(animation);\n }\n\n function resize() {\n const player = art.template?.$player;\n if (!player || art.option.autoSize) return;\n\n const aspectRatio = video.videoWidth / video.videoHeight;\n const containerWidth = player.clientWidth;\n const containerHeight = player.clientHeight;\n const containerRatio = containerWidth / containerHeight;\n\n let canvasWidth, canvasHeight;\n if (containerRatio > aspectRatio) {\n canvasHeight = containerHeight;\n canvasWidth = canvasHeight * aspectRatio;\n } else {\n canvasWidth = containerWidth;\n canvasHeight = canvasWidth / aspectRatio;\n }\n\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n\n const paddingLeft = (containerWidth - canvasWidth) / 2;\n const paddingTop = (containerHeight - canvasHeight) / 2;\n\n Object.assign(canvas.style, {\n padding: `${paddingTop}px ${paddingLeft}px`,\n });\n }\n\n function setupArtPlayerEvents() {\n art.on('video:loadedmetadata', () => {\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n });\n\n art.on('video:play', () => {\n cancelAnimationFrame(animationId);\n animation();\n });\n\n art.on('video:pause', () => {\n cancelAnimationFrame(animationId);\n });\n\n art.on('resize', () => {\n resize();\n draw();\n });\n\n art.on('destroy', () => {\n cancelAnimationFrame(animationId);\n });\n }\n };\n}\n\nif (typeof window !== 'undefined') {\n window['artplayerProxyCanvas'] = artplayerProxyCanvas;\n}\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (\n key === 'default' ||\n key === '__esModule' ||\n Object.prototype.hasOwnProperty.call(dest, key)\n ) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../../../../../"} \ No newline at end of file diff --git a/packages/artplayer-proxy-canvas/src/index.js b/packages/artplayer-proxy-canvas/src/index.js index 1abbeed57..8f040cfe7 100644 --- a/packages/artplayer-proxy-canvas/src/index.js +++ b/packages/artplayer-proxy-canvas/src/index.js @@ -66,7 +66,7 @@ export default function artplayerProxyCanvas() { } else { ctx.drawImage(video, 0, 0, canvas.width, canvas.height); } - art.emit('artplayerProxyCanvas:draw', ctx); + art.emit('artplayerProxyCanvas:draw', ctx, video); } catch (error) { art.emit('artplayerProxyCanvas:error', error); }