mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-08 19:06:15 -08:00
feat: Add sleep function for delayed frame drawing in artplayer-proxy-canvas
This commit is contained in:
1 parent
7bf8a00a7d
commit
c8b5282af9
3 files changed
+9
-12
No files matched your search
@@ -149,7 +149,7 @@ parcelHelpers.export(exports, "default", ()=>artplayerProxyCanvas);
|
||||
function artplayerProxyCanvas(callback) {
|
||||
return (art)=>{
|
||||
const { option, constructor } = art;
|
||||
const { createElement, def, append } = constructor.utils;
|
||||
const { createElement, def, append, sleep } = constructor.utils;
|
||||
const canvas = createElement("canvas");
|
||||
const ctx = canvas.getContext("2d");
|
||||
const video = createElement("video");
|
||||
@@ -253,20 +253,19 @@ function artplayerProxyCanvas(callback) {
|
||||
Object.assign(canvas.style, {
|
||||
padding: `${paddingTop}px ${paddingLeft}px`
|
||||
});
|
||||
// 重新绘制当前帧
|
||||
drawFrame();
|
||||
} catch (error) {
|
||||
console.error("Error in resize function:", error);
|
||||
}
|
||||
};
|
||||
// 在视频元数据加载完成后设置 canvas 尺寸并绘制第一帧
|
||||
art.on("video:loadedmetadata", ()=>{
|
||||
art.on("video:loadedmetadata", async ()=>{
|
||||
canvas.width = video.videoWidth;
|
||||
canvas.height = video.videoHeight;
|
||||
resize();
|
||||
});
|
||||
// 在视频数据可用时绘制第一帧
|
||||
art.on("video:canplay", ()=>{
|
||||
art.on("video:canplay", async ()=>{
|
||||
await sleep(300);
|
||||
drawFrame();
|
||||
});
|
||||
art.on("video:play", ()=>{
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"mappings":"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","sources":["packages/artplayer-proxy-canvas/src/index.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["export default function artplayerProxyCanvas(callback) {\n return (art) => {\n const { option, constructor } = art;\n const { createElement, def, append } = constructor.utils;\n\n const canvas = createElement('canvas');\n const ctx = canvas.getContext('2d');\n const video = createElement('video');\n const track = createElement('track');\n track.default = true;\n track.kind = 'metadata';\n append(video, track);\n\n let animationFrame = null;\n const { propertys, methods, prototypes, events } = constructor.config;\n const keys = [...propertys, ...methods, ...prototypes];\n\n // 存储 canvas 的原始属性\n const originalCanvasProperties = {};\n ['width', 'height'].forEach((prop) => {\n originalCanvasProperties[prop] = Object.getOwnPropertyDescriptor(HTMLCanvasElement.prototype, prop);\n });\n\n keys.forEach((key) => {\n if (key === 'width' || key === 'height') {\n def(canvas, key, {\n Line truncated
|
||||
{"mappings":"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","sources":["packages/artplayer-proxy-canvas/src/index.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["export default function artplayerProxyCanvas(callback) {\n return (art) => {\n const { option, constructor } = art;\n const { createElement, def, append, sleep } = constructor.utils;\n\n const canvas = createElement('canvas');\n const ctx = canvas.getContext('2d');\n const video = createElement('video');\n const track = createElement('track');\n track.default = true;\n track.kind = 'metadata';\n append(video, track);\n\n let animationFrame = null;\n const { propertys, methods, prototypes, events } = constructor.config;\n const keys = [...propertys, ...methods, ...prototypes];\n\n // 存储 canvas 的原始属性\n const originalCanvasProperties = {};\n ['width', 'height'].forEach((prop) => {\n originalCanvasProperties[prop] = Object.getOwnPropertyDescriptor(HTMLCanvasElement.prototype, prop);\n });\n\n keys.forEach((key) => {\n if (key === 'width' || key === 'height') {\n def(canvasLine truncated
|
||||
@@ -1,7 +1,7 @@
|
||||
export default function artplayerProxyCanvas(callback) {
|
||||
return (art) => {
|
||||
const { option, constructor } = art;
|
||||
const { createElement, def, append } = constructor.utils;
|
||||
const { createElement, def, append, sleep } = constructor.utils;
|
||||
|
||||
const canvas = createElement('canvas');
|
||||
const ctx = canvas.getContext('2d');
|
||||
@@ -119,23 +119,21 @@ export default function artplayerProxyCanvas(callback) {
|
||||
Object.assign(canvas.style, {
|
||||
padding: `${paddingTop}px ${paddingLeft}px`,
|
||||
});
|
||||
|
||||
// 重新绘制当前帧
|
||||
drawFrame();
|
||||
} catch (error) {
|
||||
console.error('Error in resize function:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 在视频元数据加载完成后设置 canvas 尺寸并绘制第一帧
|
||||
art.on('video:loadedmetadata', () => {
|
||||
art.on('video:loadedmetadata', async () => {
|
||||
canvas.width = video.videoWidth;
|
||||
canvas.height = video.videoHeight;
|
||||
resize();
|
||||
});
|
||||
|
||||
// 在视频数据可用时绘制第一帧
|
||||
art.on('video:canplay', () => {
|
||||
art.on('video:canplay', async () => {
|
||||
await sleep(300);
|
||||
drawFrame();
|
||||
});
|
||||
|
||||
|
||||
Reference in new issue
Block a user