H5 Vue 视频 video 支持预览图 poster

最近项目上要求文章中插入视频,并且视频需要支持预览图,给用户更好的视觉效果。本来以为加上poster就够了,但是没想到 ios 微信内置浏览器会有如下这种效果,很影响视觉体验。

在这里插入图片描述

优化步骤:
1、上传视频的时候,获取视频的宽高。

<div v-for="(item, idx) in materials" :key="idx">
  <video :ref="`videoView${idx}`" class="cover" :src="item.url" />
</div>
const videoView = this.$refs[`videoView${idx}`];
materialValue = { url, videoWidth: videoView.videoWidth, videoHeight: videoView.videoHeight };

2、添加poster的时候,根据视频宽高对封面图片进行缩放。

if (video?.poster) {
  // 343:移动端 video 的宽度
  const height = parseInt(343 / materialValue.videoWidth * materialValue.videoHeight, 10);
  video.poster = `${video.poster}?x-oss-process=image/resize,m_lfit,h_${height}/resize,m_pad,w_343,h_${height}`;
  
const videoEl = `<div>
  <video controls poster="${video.poster}" src="${video.url}" width="100%"></video>
  <p style="display:none">.</p>
</div>`;
}

最后的效果:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值