【NodeJS】html通过video和canvas同时播放视频

背景:

在某些特殊情况下,会使用Canvas作为容器展示视频,但是不是简单的为了播放视频,而是使用Canvas传递鼠标、键盘事件,发生了一个事件,事件则是传递到NodeJS服务器上,而做出相应的回复。本文只是做了一个例子,通过Canvas播放视频。

正文:

1、html页面:index.html

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Video to Canvas Render</title>
</head>
<body>
    <video id="video" width="640" height="360" controls>
        <source src="video1.mp4" type="video/mp4">
        Your browser does not support the video tag.
    </video>
    <canvas id="canvas" width="640" height="360"></canvas>
    <script src="script.js"></script>
</body>
</html>

2、javascript:script.js

javascript 复制代码
document.addEventListener('DOMContentLoaded', function() {
    var video = document.getElementById('video');
    var canvas = document.getElementById('canvas');
    var ctx = canvas.getContext('2d');

    // 视频加载完成后,绑定事件监听器到视频的'playing'和'timeupdate'事件
    video.addEventListener('playing', function() {
        // 当视频开始播放时,绑定事件监听器到视频的'timeupdate'事件
        video.addEventListener('timeupdate', function() {
            // 在视频的每个帧可用时绘制到画布
            if (video.paused) return; // 如果视频暂停,则不绘制

            // 清除画布上的旧内容
            ctx.clearRect(0, 0, canvas.width, canvas.height);

            // 绘制视频帧
            ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
        });
    });
});

3、播放:

打开index.html的时候,会自动播放出来.

相关推荐
WYiQIU14 小时前
11月面了7.8家前端岗,兄弟们12月我先躺为敬...
前端·vue.js·react.js·面试·前端框架·飞书
谢尔登14 小时前
简单聊聊webpack摇树的原理
运维·前端·webpack
娃哈哈哈哈呀14 小时前
formData 传参 如何传数组
前端·javascript·vue.js
zhu_zhu_xia15 小时前
vue3+vite打包出现内存溢出问题
前端·vue
tsumikistep15 小时前
【前后端】接口文档与导入
前端·后端·python·硬件架构
顾道长生'15 小时前
(Arxiv-2025)ID-COMPOSER:具有分层身份保持的多主体视频合成
计算机视觉·音视频·composer
行走的陀螺仪16 小时前
.vscode 文件夹配置详解
前端·ide·vscode·编辑器·开发实践
2503_9284115616 小时前
11.24 Vue-组件2
前端·javascript·vue.js
Bigger16 小时前
🎨 用一次就爱上的图标定制体验:CustomIcons 实战
前端·react.js·icon
谢尔登17 小时前
原来Webpack在大厂中这样进行性能优化!
前端·webpack·性能优化