获取多个视频的第一帧作为缩略图

831 阅读1分钟

获取多个视频的第一帧作为缩略图

创建自定义函数

function getVideoBase64(url) {
    return  new Promise (function(resolve,reject) {
        //resolve是一个函数 将异步代码成功的结果传入即可
        //reject也是一个函数 是用来传入异步代码失败的自定义结果
        let dataURL = ""
        //创建vide标签 为获取视频第一帧作为缩略图做准备
        let video = document.createElement("video")
        video.setAttribute("crossOrigin","anonymous")//处理跨域
        video.setAttribute("src",url)
        video.setAttribute("width",400)
        video.setAttribute("height",240)
        video.setAttribute("preload","auto")
        //loadeddata事件 加载当前帧会执行loadeddata事件
        video.addEventListener("loadeddata",function () {
            //创建画布 画布可以做到截取视频的第一帧绘制画布上
            let canvas = document.createElement("canvas")
 canvas.width = video.width
            canvas.height = video.height
            camvas.getContext("2d").drawImage(video,0,0,width,height)//绘制
            dataURL = canvas.toDataURL("image/jpeg")//转换成base64
            //将拿到的dataURL地址传入这个resolve函数 很重要 通过这个resolve函数,实例出来的对象调用then方法可以拿到这个resolve的结果
            resolve(dataURL)//这resolve函数是用来传入异步代码成功的结果的
        })
    })
}

html 代码

<img src>

js代码

//调用getVideoBase64得到Promise对象

getVideoBase64(传入视频的url).then((data)=>{ 
//data是拿到成功的结果  将data赋值给img的src属性
 img.src = data
}
)