做開發的時候碰到需要上傳視頻封面的問題,跟后臺討論了一波決定用前端截取,然后上傳 視頻封面,由于我這邊做了相冊功能,所有的圖片都由相冊統一管理,省的每次都的重復上傳,所以我用的直接是 url渲染后的視頻對象 ,你也可以自己js創建video對象下面代碼也有
<canvas id='mycanvas' v-show='false' ></canvas>
findvideocover() {
const video = document.getElementById("upvideo"); // 獲取視頻對象
// const video = document.createElement("video") // 也可以自己創建video
// video.src='http://mall.private.netcente.com/cf0eec5e-6b17-4966-be4d-8b1b516970d9?e=1588057847&token=ew7Ezvrwgr2v8GBps2vP0TJFLK2G90ewUGzeFKam:IyXlq6S97GLEq7EiR27V6kU4dgg=' // url地址 url跟 視頻流是一樣的
var canvas = document.getElementById('mycanvas') // 獲取 canvas 對象
const ctx = canvas.getContext('2d'); // 繪制2d
video.crossOrigin = 'anonymous' // 解決跨域問題,也就是提示污染資源無法轉換視頻
video.currentTime = 1 // 第一幀
video.oncanplay = () => {
canvas.width = video.clientWidth; // 獲取視頻寬度
canvas.height = video.clientHeight; //獲取視頻高度
// 利用canvas對象方法繪圖
ctx.drawImage(video, 0, 0, video.clientWidth,video.clientHeight)
// 轉換成base64形式
console.log(canvas.toDataURL ("image/png"))
this.videoImg = canvas.toDataURL ("image/png") // 截取后的視頻封面
}
},
比較坑爹的就是后面發現青牛云直接提供了截取視頻第一幀的方法,我寫的又被棄用了