【webview Android】视频获取首帧为封面

文章目录

    • 需求分析
    • 获得首帧
    • 其他方法

需求分析

客户端中h5上传视频,视频封面默认首帧。

遇到问题:原生的video现象如下

  • IOS会在加载好后显示首帧(没加载好显示黑屏,符合预期)
  • Android加载好后默认封面为一个奇怪的占位图(不符合预期)

在这里插入图片描述
需求:显示首帧。

获得首帧

前端截取视频指定帧为封面的3种方法 - 知乎

已知视频url,获得首帧图:

  /*** 获取视频的封面图信息* @param url 视频地址* @param second 秒数*/async function getVideoBase64(url: string, second: number = 0) {const video = document.createElement('video');video.setAttribute('crossOrigin', 'anonymous'); // 处理跨域video.setAttribute('src', url);video.preload = 'metadata'; // 确保浏览器会预加载视频元数据video.muted = true;// 等待视频元数据加载完成await new Promise((resolve, reject) => {video.onloadedmetadata = resolve;video.onerror = reject;});if (second > 0) {video.currentTime = second;// 确保seeked事件触发后再进行截图await new Promise((resolve) => {video.onseeked = resolve;});}const canvas = document.createElement('canvas');const context = canvas.getContext('2d');if (!context) throw new Error('Failed to get canvas context');canvas.width = video.videoWidth;canvas.height = video.videoHeight;context.drawImage(video, 0, 0, canvas.width, canvas.height);const base64 = canvas.toDataURL('image/jpeg');return base64;}

经过尝试,currentTime 为0时获得的图为黑屏,这里设置为0.2

拿到首帧图:

在这里插入图片描述
然后就是常规逻辑:

把图存起来,盖在video上,记录video是否被点击。
点击过的视频不会显示首帧封面了,因此点击过就隐藏图片等。

在拿到首帧图前,可以让上传控件状态与上传时一致(即一直loading)。
让用户以为还在上传视频,实际上在解析封面。

其他方法

如果是阿里云OSS云服务器,可以视频地址后加:

?x-oss-process=video/snapshot,t_1000,m_fast

上传到阿里云oss的视频如何获取第一帧作为视频封面_阿里云oss获取第一帧-CSDN博客

还有一些其他复杂方法,经实践,没有上述方法获取首帧封面快:

【前端】上传视频,截取第一帧图片_前端获取视频第一帧图片-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17643.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大脑网络与智力:基于图神经网络的静息态fMRI数据分析方法|文献速递-医学影像人工智能进展

Title 题目 Brain networks and intelligence: A graph neural network based approach toresting state fMRI data 大脑网络与智力:基于图神经网络的静息态fMRI数据分析方法 01 文献速递介绍 智力是一个复杂的构念,包含了多种认知过程。研究人员通…

DeepSeek如何重塑我的编程学习:计算机新生的AI实践

目录 🚀前言🌟邂逅DeepSeek:从困惑到惊喜💯初学编程的困境💯DeepSeek的优势 🖊️DeepSeek在编程学习中的运用💯注释💯算法逐步分析💯调试帮助💯跨语言迁移学习…

信息收集-Web应用JS架构URL提取数据匹配Fuzz接口WebPack分析自动化

知识点: 1、信息收集-Web应用-JS提取分析-人工&插件&项目 2、信息收集-Web应用-JS提取分析-URL&配置&逻辑 FUZZ测试 ffuf https://github.com/ffuf/ffuf 匹配插件 Hae https://github.com/gh0stkey/HaE JS提取 JSFinder https://github.com/Threez…

安科瑞光储充一体化微电网系统的设计与优化研究-安科瑞 蒋静

摘要:双碳能源技术是一种绿色、可持续的能源发展方向,光储充一体系统作为其中的重要组成部分,具有将光能转化为电能并进行储存和供电的功能。文章对光储充一体系统的设计与性能进行分析,以期为双碳能源技术的推广和应用提供技术支…

【BUG】Ubuntu|有nvcc,没有nvidia-smi指令,找不到nvidia-driver安装包

很奇怪,本来能使用的,放个假回来就用不了了。 排查了以下所有步骤最终解决。 我的Ubuntu版本:Ubuntu22 nvcc -v:有。如果没有的话你需要安装“sudo apt-get install nvidia-cuda-toolkit”,其他问题请去别的博客查。…

spring-ai快速集成deepseek大模型

一、Spring AI简介:Spring AI致力于简化AI项目的开发与部署流程,使Java开发者能够更高效地将AI技术集成到业务系统中。它提供了开箱即用的工具和接口,方便集成和管理各种AI模型。 目前,Spring AI 支持的 AI 平台包括:OpenAI (Chat…

进阶——第十六届蓝桥杯嵌入式熟练度练习(开发板输出占空比和频率)

定义变量 uint16_t PA6_frq,PA7_frq; uint16_t PA6_duty10,PA7_duty20; 开启定时器PWM HAL_TIM_PWM_Start(&htim16,TIM_CHANNEL_1);HAL_TIM_PWM_Start(&htim17,TIM_CHANNEL_1); 给变量赋值 PA6_frq80000000/8000/TIM16->ARR1;PA7_frq80000000/4000/TIM17->AR…

TCNE 网络安全

一.概况 CTF(Capture The Flag)在网络安全领域中指的是网络技术人员之间进行技术竞技的一种比赛形式,它起源于1996年的DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式,现已成为全球范围网…

信呼OA办公系统sql注入漏洞分析

漏洞描述 信呼OA办公系统uploadAction存在SQL注入漏洞,攻击者可利用该漏洞获取数据库敏感信息。 环境搭建 源码下载地址:https://github.com/rainrocka/xinhu 下载后解压到本地网站根目录下,配置好数据库,然后安装即可 默认密…

springboot如何将lib和jar分离

遇到一个问题&#xff0c;就是每次maven package或者maven install后target中的jar很大&#xff0c;少的50几MB&#xff0c;大的100多兆 优化前&#xff1a; 优化后&#xff1a; 优化前 优化后压缩率77.2MB4.65MB93% 具体方案&#xff1a; pom.xml中 <build><…

ThreadLocal源码分析

文章目录 1.核心数据结构 ThreadLocalMap1.静态内部类 Entry2.真正存储数据的是table数组 2.ThreadLocal.set()方法源码详解1.set2.getMap3.ThreadLocalMap.set4.createMap5.rehash6.resize 3.ThreadLocalMap.get()详解1.get2.ThreadLocalMap.getEntry3.getEntryAfterMiss 4.Th…

VUE环境搭建

node.js安装 node npm – node Package Management 安装完成后&#xff0c;需要设置&#xff1a; npm config set prefix "D:\nodejs"注意&#xff1a;“D:\nodejs” 此处为自己安装的node.js路径。管理员身份运行 切换镜像源 npm config set registry https://r…

卷积神经网络实战人脸检测与识别

文章目录 前言一、人脸识别一般过程二、人脸检测主流算法1. MTCNN2. RetinaFace3. CenterFace4. BlazeFace5. YOLO6. SSD7. CascadeCNN 三、人脸识别主流算法1.deepface2.FaceNet3.ArcFace4.VGGFace5.DeepID 四、人脸识别系统实现0.安装教程与资源说明1. 界面采用PyQt5框架2.人…

深度学习框架探秘|Keras 应用案例解析以及 Keras vs TensorFlow vs PyTorch

引言 上一篇文章《深度学习框架探秘&#xff5c;Keras&#xff1a;深度学习的魔法钥匙》 我们初步学习了 Keras&#xff0c;包括它是什么、具备哪些优势&#xff08;简洁易用的 API、强大的兼容性、广泛的应用领域&#xff09;&#xff0c;以及基本使用方法。本文&#xff0c;…

在Win11电脑上安装mysql并成功登录

首先,参照菜鸟教程的mysql安装教程https://www.runoob.com/mysql/mysql-install.html,进行的步骤如下: 1.进入mysql官网https://dev.mysql.com/downloads/mysql/,如下图所示,选择需要的版本并下载。 2.点击 Download 按钮进入下载页面,点击下图中的 No thanks, just sta…

如何正确安装Stable Diffusion Web UI以及对应的xFormers

本文是我总结的步骤&#xff0c;验证了几次保证是对的。因为正确的安装 Stable Diffusion Web UI 以及对应的 xFormers 实在是太麻烦了&#xff0c;官方和网上的步骤都是残缺和分散的&#xff0c;加上国内网络速度不理想&#xff0c;所以需要一些额外步骤&#xff0c;之前研究出…

大模型WebUI:Gradio全解12——使用Agents和Tools智能代理工具构建UI(1)

大模型WebUI&#xff1a;Gradio全解12——使用Agents和Tools智能代理工具构建UI&#xff08;1&#xff09; 前言本篇摘要12. 使用Agents和Tools智能代理工具构建UI12.1 transformers.agents原理及示例12.1.1 代理概念、类型和构建1. 代理概念2. 代理类型3. 如何构建代理&#x…

图像变换:了解透视变换原理及OpenCV实现

图像透视变换是一种将图像从一个视角转换到另一个视角的技术&#xff0c;通常用于校正拍摄角度引起的变形&#xff0c;或者模拟不同视角下的场景。 一、图像透视变换的原理 定义 透视变换&#xff08;Perspective Transformation&#xff09;是将一个平面内的点映射到另一个平…

超纯水设备的智能化控制系统为用户带来安全简便的操作体验

随着信息技术的发展&#xff0c;智能化已经成为工业装备的重要发展方向之一。超纯水设备在这方面也走在了前列&#xff0c;配备了高性能的PLC控制系统及人机交互界面&#xff0c;实现了全方位的智能监控和自动化操作。本文将重点介绍该设备的智能化控制系统&#xff0c;探讨它如…

Cursor AI开发微信小程序教程

1. 准备工作 在开始开发之前&#xff0c;需要完成以下准备工作&#xff1a; 1.1 安装微信开发者工具 前往微信开发者工具官网下载并安装适合操作系统的开发者工具。注册微信小程序账号&#xff0c;登录微信公众平台&#xff08;https://mp.weixin.qq.com&#xff09;&#…