当前位置: 首页 > news >正文

uniapp使用视频地址获取视频封面

很多时候我们都需要使用视频的第一帧当作视频的封面,今天我们从uni-app的安卓app这个环境来实现下这个需求。文中需要你对uniapp的renderjs有一定了解,可以先看我的这篇文章初识renderjs

uniapp 安卓APP端(ios未测试)

方法:使用renderjs实现对DOM元素的操作,创建video元素获取视频转第一帧,使用canvas转为base64格式进行展示

<template><video :src="src" :poster="poster" :change:src="video.setPoster"></video>
</template><script>export default {data() {return {poster: '',src: 'https://oss-p56.xpccdn.com/prod/footage/preview/xpc/HHMFcJlnHMS3TBj.mp4'}},methods: {getPoster(poster) {this.poster = poster}}}
</script>
<script lang="renderjs" module="video">export default {methods: {setPoster(newV, oldV, ownerInstance) {let video = document.createElement("video");video.setAttribute('crossOrigin', 'anonymous'); //处理跨域video.setAttribute('src', newV);video.setAttribute('width', 1000);video.setAttribute('height', 500);// 表示可以下载整个视频文件,即使用户不希望使用它。这样才能获取到视频文件video.setAttribute('preload', 'auto');// loadeddata 事件在媒体当前播放位置的视频帧(通常是第一帧)加载完成后触发。video.addEventListener('loadeddata', function() {let canvas = document.createElement("canvas"),width = video.width, //canvas的尺寸和图片一样height = video.height;canvas.width = width;canvas.height = height;canvas.getContext("2d").drawImage(video, 0, 0, width, height); //绘制canvaslet poster = canvas.toDataURL('image/jpeg'); //转换为base64ownerInstance.callMethod('getPoster', poster)});}}}
</script>

展示

在这里插入图片描述

http://www.lryc.cn/news/111638.html

相关文章:

  • java操作PDF:转换、合成、切分
  • 递增子序列——力扣491
  • 解密!品牌独立站为何能成为外国消费者的心头爱?
  • 【HDFS】每天一个RPC系列----complete(二):客户端侧
  • 五、PC远程控制ESP32 LED灯
  • 详解PHP反射API
  • 打开虚拟机进行ip addr无网络连接
  • Spring Boot如何整合mybatisplus
  • webpack基础知识一:说说你对webpack的理解?解决了什么问题?
  • 小研究 - 基于 MySQL 数据库的数据安全应用设计(二)
  • 大数据-数据内容分类
  • Babel编译与Webpack
  • 0805hw
  • ROS实现机器人移动
  • Dockerfile构建LNMP镜像
  • 总结七大排序!
  • 没有fastjson,rust怎么方便的解析提取复杂json呢?
  • Docker制作SpringBoot镜像
  • 力扣:53. 最大子数组和(Python3)
  • 利用appium抓取app中的信息
  • 数据结构:双向链表的实现(C实现)
  • linuxARM裸机学习笔记(4)----GPIO中断以及定时器中断实验
  • 第十二次CCF计算机软件能力认证
  • ceph pg inconsistent修复(unexpected clone)
  • 供求重构是产业互联网的核心 个体崛起是产业互联网的终点
  • torchvision.datasets数据加载失败
  • 【UEC++学习】UE网络 - Replication、RPC
  • C语言案例 按序输出三个整数-02
  • 区块链实验室(16) - FISCO BCOS实验环境
  • Java事件监听机制