明白了,阿杰!你想用 Canvas 对 HTML5 <video> 的当前帧进行截图。我帮你整理一个完整的 示例代码,特点:
- 可选择视频播放某一时刻截图
- 支持下载截图
- 支持显示在页面上
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>视频截图示例</title>
<style>
body { font-family: Arial, sans-serif; padding:20px; }
video { width: 100%; max-width: 600px; display:block; margin-bottom:10px; }
canvas { border:1px solid #ccc; display:block; margin-top:10px; }
button { padding:6px 12px; margin-top:10px; }
</style>
</head>
<body>
<h2>Canvas 视频截图示例</h2>
<video id="video" controls>
<source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
您的浏览器不支持 video 标签。
</video>
<button id="captureBtn">截图当前帧</button>
<canvas id="canvas"></canvas>
<a id="downloadLink" style="display:block; margin-top:10px;">下载截图</a>
<script>
const video = document.getElementById('video');
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
const captureBtn = document.getElementById('captureBtn');
const downloadLink = document.getElementById('downloadLink');
captureBtn.addEventListener('click', ()=>{
// 设置 canvas 尺寸为视频尺寸
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
// 将当前视频帧绘制到 canvas
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
// 设置下载链接
downloadLink.href = canvas.toDataURL('image/png');
downloadLink.download = `screenshot_${Date.now()}.png`;
downloadLink.textContent = '点击下载截图';
});
</script>
</body>
</html>
🔹 功能说明
- 截图当前帧
ctx.drawImage(video, 0, 0, width, height)- 可以精确截取视频播放的任意一帧
- 保存图片
canvas.toDataURL('image/png')生成 Base64 图片- 可赋值给
<a>标签下载
- 自适应视频尺寸
canvas.width = video.videoWidthcanvas.height = video.videoHeight
🔹 拓展思路
- 可以增加 截图定时器,自动每隔几秒截图
- 可以结合 File API / WebSocket 上传截图
- 可以在截图上绘制 水印或标注
发表回复