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

解决获取视频第一帧黑屏问题

文章目录

  • 解决获取视频第一帧黑屏问题
    • 核心代码

解决获取视频第一帧黑屏问题

废话不多说,直接上代码:

<script setup>
const status = ref('请点击“添加视频”按钮添加视频')
const videoElement = ref(document.createElement('video'))
const currentImageSource = ref(null)async function getImageByVideo() {videoElement.value.src = 'https://upload.wikimedia.org/wikipedia/commons/transcoded/c/c4/Physicsworks.ogv/Physicsworks.ogv.240p.vp9.webm'videoElement.value.crossOrigin = 'anonymous' // 处理跨域videoElement.value.preload = 'metadata'videoElement.value.muted = truevideoElement.value.playsInline = truestatus.value = '视频加载中...'// 解决封面黑屏问题await new Promise((resolve) => {videoElement.value.addEventListener('loadeddata', resolve, { once: true })})// 设置当前时间确保获取有效帧videoElement.value.currentTime = 0.01// 等待视频跳转到指定时间await new Promise((resolve) => {videoElement.value.addEventListener('seeked', resolve, { once: true })})// 获取视频帧作为封面const canvas = document.createElement('canvas')canvas.width = videoElement.value.videoWidthcanvas.height = videoElement.value.videoHeightconst ctx = canvas.getContext('2d')ctx.drawImage(videoElement.value, 0, 0, canvas.width, canvas.height)// 创建封面图像const img = new Image()img.src = canvas.toDataURL('image/jpeg')img.onload = () => {currentImageSource.value = img}
}
</script>

核心代码

  // 解决封面黑屏问题await new Promise((resolve) => {videoElement.value.addEventListener('loadeddata', resolve, { once: true })})// 设置当前时间确保获取有效帧videoElement.value.currentTime = 0.01// 等待视频跳转到指定时间await new Promise((resolve) => {videoElement.value.addEventListener('seeked', resolve, { once: true })})
http://www.xdnf.cn/news/12300.html

相关文章:

  • figma 和蓝湖 有什么区别
  • win中将pdf转为图片
  • 使用 Python 自动化 Word 文档样式复制与内容生成
  • 应用案例 | 设备分布广, 现场维护难? 宏集Cogent DataHub助力分布式锅炉远程运维, 让现场变“透明”
  • 32单片机——基本定时器
  • NVIDIA Dynamo:数据中心规模的分布式推理服务框架深度解析
  • 深入了解JavaScript当中如何确定值的类型
  • 第二十八章 RTC——实时时钟
  • 使用 Ansible 在 Windows 服务器上安装 SSL 证书
  • Neo4j 集群管理:原理、技术与最佳实践深度解析
  • 基于J2EE架构的在线考试系统设计与实现【源码+文档】
  • Keepalived双主模式的高可用性解决方案!
  • caliper config.yaml 文件配置,解释了每个配置项的作用和注意事项
  • 越狱蒸馏-可再生安全基准测试
  • 七、数据库的完整性
  • mysql+keepalived
  • 李沐《动手学深度学习》d2l安装教程
  • pikachu靶场通关笔记17 CSRF关卡03-CSRF(Token)
  • Java持久层技术对比:Hibernate、MyBatis与JPA的选择与应用
  • 重构城市应急指挥布控策略 ——无人机智能视频监控的破局之道
  • 【HarmonyOS 5】教育开发实践详解以及详细代码案例
  • 抽象工厂模式深度解析:从原理到与应用实战
  • ​​高频通信与航天电子的材料革命:猎板PCB高端压合基材技术解析​​
  • CentOS 7 如何安装llvm-project-10.0.0?
  • Matlab实现任意伪彩色图像可视化显示
  • 机器学习KNN算法全解析:从原理到实战
  • rk3588 区分两个相同的usb相机
  • 数据库管理与高可用-MySQL主从复制与读写分离
  • Redux 实践与中间件应用
  • 分布式Session处理的五大主流方案解析