获取视频video第一个帧的图片作为视频的背景图片

获取视频video第一个帧的图片作为视频的背景图片

一般情况下,Android版本可自动获取视频的第一帧作为视频的背景图片,但ios是无法获得的,只能手动为其添加视频的背景图片。
制作这第一帧图片我使用的原理:拿到视频播放路径后,创建一个video标签,将路径传给src,使其自动播放时,截取展示的第一个图片,使用canvas将其画出来,

1、设置video背景图片的属性

在video中属性很多,为视频设置背景图片的属性为:poster,该属性的值就为图片的路径

2、上传本地视频,获取视频的宽高及播放长度等

通过loadeddata事件或onloadedmetadata事件 ,使用具体如下:

 video.onloadedmetadata = function () {
      const vLength = video.duration; //视频播放的长度
       console.log('vLength', vLength);
       imgWith = video.videoWidth;//视频播放的宽度
       imgHeight = video.videoHeight; // 视频播放的高度
  };
  // 或者
  video.addEventListener('loadeddata', function () {
       const vLength = video.duration; //视频播放的长度
       console.log('vLength', vLength);
       imgWith = video.videoWidth;//视频播放的宽度
       imgHeight = video.videoHeight; // 视频播放的高度
  });
  // 使用loadeddata 也是类似用法
3、实际代码操作
// 我在hooks下写的 
const getVideoBase64 = (url) => {
    return new Promise(function (resolve) {
      let dataURL = '';
      const video = document.createElement('video');

      video.setAttribute('crossOrigin', 'anonymous'); // 处理跨域
      video.setAttribute('src', url);
      video.setAttribute('preload', 'auto');
      video.addEventListener('loadeddata', function () {
        const canvas = document.createElement('canvas');
        console.log('video.clientWidth', video.videoWidth);// 视频宽
        console.log('video.clientHeight', video.videoHeight); // 视频高
        const width = video.videoWidth || 400; // canvas的尺寸和图片一样
        const height = video.videoHeight || 240;// 设置默认宽高为  400  240 
        canvas.width = width;
        canvas.height = height;
        canvas.getContext('2d').drawImage(video, 0, 0, width, height); // 绘制canvas
        dataURL = canvas.toDataURL('image/jpeg'); // 转换为base64
        resolve(dataURL);
      });
    });
  };


//调取getVideoBase64  获取图片的路径
// 利用async...await...来进行获取
const getImgFun = async() =>{
	const videoUrl = '' // 视频播放的路径
	const video = document.getElementById("video") //获取视频标签
	const urlImg = await getVideoBase64(videoUrl) //获取视频播放路径
	video.setAttribute('poster',urlImg)//给视频video属性poster设置值图片路径,即为视频展示的背景图片
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值