export function getVideoImage(videoUrl, duration) {
return new Promise((resolve, reject) => {
const video = document.createElement("video");
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
// 加载视频
video.crossOrigin = "anonymous"; // 处理跨域
video.src = videoUrl;
video.preload = "auto";
video.addEventListener("loadeddata", () => {
// 设置 canvas 尺寸与视频一致
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
// 在 canvas 中绘制视频第一帧
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
// 获取绘制的图像数据
const imageData = canvas.toDataURL("image/png");
// 释放资源
URL.revokeObjectURL(video.src);
resolve(imageData);
});
video.addEventListener("error", (error) => {
reject(error);
});
// 加载视频元信息
video.addEventListener("loadedmetadata", () => {
// 设置视频播放时长
const videoDuration = video.duration;
// 将视频播放时间设置为 duration
if (duration && videoDuration > duration) {
video.currentTime = duration;
}
});
});
}
js获取视频某一帧
最新推荐文章于 2024-09-05 16:22:02 发布
本文介绍了一个JavaScript函数getVideoImage,它接收视频URL和可选的播放时长,通过创建`<video>`和`<canvas>`元素,实现在指定时长内截取视频的第一帧并将其转换为Base64编码的图片。函数还处理了跨域问题和资源管理。
摘要由CSDN通过智能技术生成