video视频关键帧截取
程序员文章站
2024-03-26 08:30:29
...
hello!好久没有更新了!今天来聊聊视频的关键帧截取,和指定关键帧的截取并显示为缩略图。
好的,我知道有的同学肯定比较着急,直接上硬菜
// 视频播放js
/**
[email protected] (为.MP4的视频链接)
调用方式 videoPlaying(url).then(res=>{
// 这里就可以获取到你想要的视频帧图片
console.log(res)
})
*/
export const videoPlaying = function (url) {
// 第一步先创建video标签
let video = document.createElement("VIDEO");
// 设置缩略图的缩放比例
let slide = 0.5;
// 有的同学可能会出现跨域现象,这里设置
video.crossOrigin = "anonymous";
// 设置video标签的src属性 src为视频的播放地址
video.setAttribute("src", url);
// 截取自定义帧数(这里可以不设置,如果不设置有可能会截取白屏,建议设置为1或者自定的帧数)
video.currentTime = 13
// 这里使用 promise 原因是:因为canvas绘图需要时间,程序需要时间执行,采用异步返回
return new Promise((resolve, reject) => {
// 这里是video的监听函数,不懂的同学去w3c 或者 菜鸟教程 查看 (监听video就绪之后就开始使用canvas绘图)
video.addEventListener('loadeddata', function () {
// 绘图就不用我多说了吧,创建画板
let canvas = document.createElement("canvas");
// 设置画板宽高 比例
canvas.width = video.videoWidth * slide;
canvas.height = video.videoHeight * slide;
// 获取画板上下文执行绘图 直接把video 丢进去 就可以了
canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
// 这里可以自行扩展,我这里是直接返回base64的串
// let img = document.createElement("img");
// img.src = canvas.toDataURL("image/png");
// console.log('url', canvas.toDataURL("image/png"))
// 返回
resolve(canvas.toDataURL("image/png"))
});
})
}
以上是视频截取的主要核心函数,其他的根据自己的业务逻辑进行,这个是我在项目中的简单使用,后续会继续扩展,目前功能比较单一,希望能给各位同学提供帮助!
其中涉及到 video的监听方法:
定义和用法 (菜鸟教程TP)
当当前帧的数据已加载,但没有足够的数据来播放指定音频/视频的下一帧时,会发生 loadeddata 事件。
当音频/视频处于加载过程中时,会依次发生以下事件:
后续还会更新 觉得不错关注一波!一起交流
上一篇: Verilog1/2分频测试模块
下一篇: Animation参考(View动画)
推荐阅读
-
video视频关键帧截取
-
vue-video-player动态更新视频地址
-
【电商项目】---video标签视频自动播放
-
验证是否支持html5的Video标签及MP4视频播放 博客分类: web前端 html5验证videoMP4javascript
-
由html5视频播放引发的总结 博客分类: html5视频技术 html5video视频
-
HTML5新特性--video视频标签 博客分类: html5 html5video
-
html5结合flash实现视频文件在所有主流浏览器兼容播放 博客分类: html video flashvideohtml5
-
ffmpeg之视频截取图片 博客分类: 流媒体
-
php截取视频指定帧为图片,
-
视频网站视频数据衍生模型 博客分类: 数据map模型video衍生视频list JavaCMS数据模型video视频