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

flv视频格式批量截取封面图(不占内存版)--其他视频格式也通用

flv视频格式批量截取封面图(不占内存版)--其他视频格式也通用

  • 需求(实现的效果)
  • 功能实现
    • html
    • css
    • js

需求(实现的效果)

批量显示视频,后端若返回有imgUrl,则直接显示图1,
若无,则需要根据视频地址自己截取,截取中显示图2,
截取过程中如图3,截取完直接返回图片信息,如图1格式,未返回的仍显示加载动画,如图2

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

功能实现

需要使用插件播放、截取flv格式视频。当前使用的是mpegts.js
具体使用可移步 vue使用mpegts.js教程

html

<div:key="ind"v-for="(ite, ind) in objects"class="description-content"><divv-if="ite.fileUrl"class="imgurlExit"><!-- 显示图片封面背景 --><imgv-if="ite.imgUrl":src="ite.imgUrl"class="descriptionImg"/><!-- 无图片、纯黑背景 --><divclass="descriptionImg"v-else></div><!-- 播放图标 --><a-icontype="play-circle"class="centerIcon"v-if="ite.imgUrl"/><!-- 加载动画 --><imgsrc="@/assets/images/initImg.gif"class="centerIcon"v-else/></div><divclass="descriptionImg"v-else>未抓取到视频</div></div>

css

   .description-content {width: 220px;margin: 0 20px;margin-top: 20px;.imgurlExit {position: relative;height: 180px;.centerIcon {position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);color: #fff;font-size: 40px;}}.descriptionImg {width: 220px;height: 180px;background: #000;color: #fff;font-weight: 800;text-align: center;line-height: 180px;border-radius: 10px;}}

js

mpegts.js具体使用可移步 vue使用mpegts.js教程

import mpegts from "mpegts.js";// 获取数据时进行判断 item.fileUrl存在且item.imgUrl不存在时。生成图片信息并返回更新数据async getData() {const res = await getList({});if (res.success) {this.objects = res.data; //objects 为data中定义的数据this.$nextTick(() => {this.objects.map((item) => {if (item.fileUrl && !item.imgUrl) {this.getImage(item.fileUrl).then((res) => {item.imgUrl = res;});}});});}},// 获取视频的图片getImage(url) {return new Promise((resolve, reject) => {const extension = url.split("."); //获取类型const videoElement = document.createElement("video");videoElement.muted = true; // 静音videoElement.autoplay = true; // 自动播放if (mpegts.isSupported()) {// mpegts 具体用法可移步首页教程const flvPlayer = mpegts.createPlayer({type: extension[extension.length - 1],url,isLive: true,isAutoPlay: true,isContinue: true,lazyLoad: true,hasAudio: false,},{enableWorker: true,enableStashBuffer: false,stashInitialSize: 128,});flvPlayer.attachMediaElement(videoElement);flvPlayer.load(); //加载setTimeout(() => {flvPlayer.play().then(() => {this.destory(flvPlayer);}).catch((err) => {this.destory(flvPlayer);console.log("err", err);});});}// 监听视频数据加载事件videoElement.addEventListener("loadeddata", function () {// 播放及暂停const canvasElement = document.createElement("canvas");const ctx = canvasElement.getContext("2d");canvasElement.width = 220;canvasElement.height = 180;// 绘制当前帧到 canvasif (ctx) {ctx.drawImage(videoElement, 0, 0, canvasElement.width, canvasElement.height);}const imageDataUrl = canvasElement.toDataURL();resolve(imageDataUrl);videoElement.pause();// 移除video元素 注 document.createElemet创建的元素需要挂载到具体的dom才可以进行删除document.body.appendChild(videoElement);document.body.appendChild(canvasElement);document.body.removeChild(videoElement);document.body.removeChild(canvasElement);});});}, // 销毁 mpegts 对象destory(player) {if (player) {try {player.pause();player.unload();player.detachMediaElement();player.destroy();player = null;} catch (e) {// console.log(e);}}},

相关文章:

flv视频格式批量截取封面图(不占内存版)--其他视频格式也通用

flv视频格式批量截取封面图&#xff08;不占内存版&#xff09;--其他视频格式也通用 需求&#xff08;实现的效果&#xff09;功能实现htmlcssjs 需求&#xff08;实现的效果&#xff09; 批量显示视频&#xff0c;后端若返回有imgUrl,则直接显示图1&#xff0c; 若无&#xf…...

【鸿蒙】大模型对话应用(三):跨Ability跳转页面

Demo介绍 本demo对接阿里云和百度的大模型API&#xff0c;实现一个简单的对话应用。 DecEco Studio版本&#xff1a;DevEco Studio 3.1.1 Release HarmonyOS SDK版本&#xff1a;API9 关键点&#xff1a;ArkTS、ArkUI、UIAbility、网络http请求、列表布局、层叠布局 页面跳…...

明道云入选亿欧智库《AIGC入局与低代码产品市场的发展研究》

2023年12月27日&#xff0c;亿欧智库正式发布**《AIGC入局与低代码产品市场的发展研究》**。该报告剖析了低代码/零代码市场的现状和发展趋势&#xff0c;深入探讨了大模型技术对此领域的影响和发展洞察。其中&#xff0c;亿欧智库将明道云作为标杆产品进行了研究和分析。 明…...

【深度学习】SDXL TensorRT Dockerfile Docker容器

文章目录 过程SDXL TensorRT构建SDXL TensorRT LCM 调度器过程 docker push kevinchina/deeplearning:cuda12.1torch2.1.1 FROM nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04 ENV DEBIAN_FRONTEND=noninteractive# 安装基本软件包 RUN apt-get update && \apt-get u…...

深入了解 Ansible:全面掌握自动化 IT 环境的利器

本文以详尽的篇幅介绍了 Ansible 的方方面面&#xff0c;旨在帮助读者从入门到精通。无论您是初学者还是有一定经验的 Ansible 用户&#xff0c;都可以在本文中找到对应的内容&#xff0c;加深对 Ansible 的理解和应用。愿本文能成为您在 Ansible 自动化旅程中的良师益友&#…...

PPT、PDF全文档翻译相关产品调研笔记

主要找一下是否有比较给力的全文档翻译 文章目录 1 百度翻译2 小牛翻译3 腾讯交互翻译4 DeepL5 languagex6 云译科技7 快翻:qtrans8 simplifyai9 officetranslator10 火山引擎翻译-无文档翻译1 百度翻译 地址: https://fanyi.baidu.com/ 配套的比较完善,对于不同行业也有区…...

JavaScript 垃圾回收的常用策略和内存管理

垃圾回收 ​ JavaScript 是使用垃圾回收的语言&#xff0c;也就是说执行环境负责在代码执行时管理内存。在 C 和 C等语言中&#xff0c;跟踪内存使用对开发者来说是个很大的负担&#xff0c;也是很多问题的来源。JavaScript 为开发者卸下了这个负担&#xff0c;通过自动内存管…...

如何结合ChatGPT生成个人魔法咒语词库

3.6.1 ChatGPT辅助力AI绘画 3.6.1.1 给定主题让ChatGPT直接描述 上面给了一个简易主题演示一下&#xff0c;这是完全我没有细化的提问&#xff0c;然后把直接把这些关键词组合在一起。 关键词&#xff1a; 黄山的美景&#xff0c;生机勃勃&#xff0c;湛蓝天空&#xff0c;青…...

瑞_23种设计模式_抽象工厂模式

文章目录 1 抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;1.1 概念1.2 介绍1.3 小结1.4 结构 2 案例一2.1 案例需求2.2 代码实现 3 案例二3.1 需求3.2 实现 4 总结4.1 抽象工厂模式优缺点4.2 抽象工厂模式使用场景4.3 抽象工厂模式VS工厂方法模式4.4 抽象工厂…...

比瓴科技入围软件供应链安全赛道!为关键信息基础设施安全建设注入新动力

1月20日&#xff0c;中关村华安关键信息基础设施安全保护联盟会员大会暨关键信息基础设施安全保护论坛在北京成功举办&#xff0c;比瓴科技作为会员单位受邀出席。 本次论坛发布了《关键信息基础设施安全保护支撑能力白皮书&#xff08;2023&#xff09;》&#xff0c;比瓴科技…...

回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小二乘支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小二乘支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于OOA-LSSVM鱼鹰算法优化最小二乘支持向量机的数据多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于OOA-LSSVM鱼鹰算法…...

初级通信工程师-通信业务

1、 通信与通信行业 ● 通信产业链&#xff1a; 从经济布局(供给侧)的角度来考察 一 个行业&#xff1b;通信产业链最基本 元素是通信设备制造商、通信运营商&#xff1b;完整的通信产业链包括通信设备制造商、通信 运营商、芯片及元器件供应商、通信设施工程建造商、通信信息…...

Python—数据可视化Seaborn大全:参数详解与实战案例全解析【第52篇—python:Seaborn大全】

文章目录 Seaborn库常用绘图详解与实战引言安装与导入一、散点图参数说明实战案例 二、直方图参数说明实战案例 三、线性关系图参数说明实战案例 四、热力图参数说明实战案例 五、分布图参数说明实战案例 六、箱线图参数说明实战案例 七、联合分布图参数说明实战案例 八、小提琴…...

手机上0.2秒出图、当前速度之最,谷歌打造超快扩散模型MobileDiffusion

目录 前言导读 论文介绍 模型优化 宏观设计 微观设计 实验与应用 移动端基准测试 下游任务测试 生图效果展示 总结 前言导读 在手机等移动端侧运行 Stable Diffusion 等文生图生成式 AI 大模型已经成为业界追逐的热点之一&#xff0c;其中生成速度是主要的制约因素。…...

浅谈WPF之UniformGrid和ItemsControl

在日常开发中&#xff0c;有些布局非常具有规律性&#xff0c;比如相同的列宽&#xff0c;行高&#xff0c;均匀的排列等&#xff0c;为了简化开发&#xff0c;WPF提供了UniformGrid布局和ItemsControl容器&#xff0c;本文以一个简单的小例子&#xff0c;简述&#xff0c;如何…...

SEO系列--robots.txt的用法

原文网址&#xff1a;SEO系列--robots.txt的用法-CSDN博客 简介 本文介绍网站的robots.txt文件的用法。 Robots是站点与搜索引擎爬虫沟通的重要渠道&#xff0c;站点通过robots文件声明本网站中不想被搜索引擎抓取的部分或者只让搜索引擎抓取指定内容。 搜索引擎使用spider…...

环形链表(快慢指针)

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环…...

vue day06

1、路由模块封装 2、声明式导航 实现导航高亮效果 直接通过这两个类名对相应标签设置样式 点击a链接进入my页面时&#xff0c;a链接 我的音乐高亮&#xff0c;同时my下的a、b页面中的 我的音乐也有router-link-active类&#xff0c;但没有精确匹配的类&#xff08;只有my页…...

ffmpeg 输入文件,输入出udp-ts 指定pid、Programid ts流参数

要使用FFmpeg将输入文件转换为UDP传输流&#xff08;TS&#xff09;并指定特定的PID、Program ID以及其他TS流参数&#xff0c;您可以使用以下命令&#xff1a; ffmpeg -i input_file -c:v libx264 -preset ultrafast -tune zerolatency -f mpegts -map 0:v:0 -map 0:a:0 -pid …...

操作系统透视:从历史沿革到现代应用,剖析Linux与网站服务架构

目录 操作系统 windows macos Linux 服务器搭建网站 关于解释器的流程 curl -I命令 名词解释 dos bash/terminal&#xff0c;(终端) nginx/apache&#xff08;Linux平台下的&#xff09; iis&#xff08;Windows平台下的&#xff09; GUI(图形化管理接口&#xff…...

Spring原理(Bean的生命周期)

一、Bean的作用域Bean 的作⽤域是指 Bean 在 Spring 框架中的某种⾏为模式。⽐如单例作⽤域: 表⽰ Bean 在整个 Spring 中只有⼀份, 它是全局共享的. 那么当其他⼈修改了这个值之后, 那么另⼀个⼈读取到的就是被修改的值作用域说明singleton每个SpringIoc容器内同名称的Bean只有…...

Verilog实战:手把手教你实现8B/10B编码与解码(附完整代码)

Verilog实战&#xff1a;从零构建8B/10B编解码器的工程化实现 在高速串行通信领域&#xff0c;数据完整性如同精密钟表的齿轮咬合——任何微小的时序偏差都可能导致整个系统崩溃。8B/10B编码技术正是解决这一痛点的关键钥匙&#xff0c;它通过精心设计的编码规则&#xff0c;确…...

OpenClaw智能家居控制:Qwen3.5-9B通过HomeAssistant管理IoT设备

OpenClaw智能家居控制&#xff1a;Qwen3.5-9B通过HomeAssistant管理IoT设备 1. 为什么需要AI管理智能家居&#xff1f; 去年冬天的一个深夜&#xff0c;我被空调异常启动的声音惊醒。打开手机查看HomeAssistant日志&#xff0c;发现是温湿度传感器误报触发了自动化规则。这件…...

测试小白福音:在快马上通过实战代码轻松攻克软件测试面试题

作为一名刚入门的软件测试新手&#xff0c;面对各种面试题时常常感到一头雾水。最近我发现了一个特别实用的学习方法 - 通过动手实践来理解测试理论。今天就来分享一下我的经验。 从基础概念入手 刚开始学习时&#xff0c;我连黑盒测试和白盒测试的区别都搞不清楚。后来发现&…...

linux (CentOS 7) 一次性安装中文手册的完整命令

一&#xff0c;一次性第一步&#xff1a;安装 CentOS 7 专属的中文语言包 man 手册包yum install -y kde-l10n-Chinese man-pages-zh-CN第二步&#xff1a;刷新语言环境&#xff0c;让配置生效export LANGzh_CN.UTF-8第三步&#xff1a;验证&#xff0c;直接执行中文 man lsma…...

python pyoxidizer

# 关于PyOxidizer的一些思考 最近在Python打包工具领域&#xff0c;有个工具引起了不小的讨论&#xff0c;那就是PyOxidizer。如果你经常需要将Python代码打包成可执行文件&#xff0c;或者部署到没有Python环境的机器上&#xff0c;可能会对这个工具感兴趣。 它到底是什么 PyO…...

Spring Data 2026 最佳实践:简化数据访问

Spring Data 2026 最佳实践&#xff1a;简化数据访问别叫我大神&#xff0c;叫我 Alex 就好。一、引言 大家好&#xff0c;我是 Alex。Spring Data 作为 Spring 生态系统中的重要组成部分&#xff0c;一直以其简化数据访问的能力而受到开发者的喜爱。随着 Spring Data 2026 的发…...

DevOps 实践与自动化:从开发到运维的无缝衔接

DevOps 实践与自动化&#xff1a;从开发到运维的无缝衔接 前言 作为一个在数据深渊里捞了十几年 Bug 的女码农&#xff0c;我深知 DevOps 在现代软件开发中的重要性。DevOps 不仅是一种技术实践&#xff0c;更是一种文化和思维方式&#xff0c;它强调开发和运维团队的紧密协作&…...

嵌入式实时系统AnOs的分时分区架构解析

1. AnOs&#xff1a;嵌入式分时分区实时系统解析作为一名在嵌入式领域摸爬滚打多年的工程师&#xff0c;第一次看到AnOs这个项目时眼前一亮。它让我想起了十年前在军工项目中调试VxWorks 653的经历——那种严格的分区保护和实时调度机制&#xff0c;在工业控制、航空航天等高安…...

OpenClaw从入门到应用——频道:IRC

通过OpenClaw实现副业收入&#xff1a;《OpenClaw赚钱实录&#xff1a;从“养龙虾“到可持续变现的实践指南》 Quick start 在 ~/.openclaw/openclaw.json 中启用 IRC 配置。至少设置以下内容&#xff1a; theme{"theme":{"light":"min-light"…...