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

文章目录

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

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

js 复制代码
<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 = true
  videoElement.value.playsInline = true

  status.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.videoWidth
  canvas.height = videoElement.value.videoHeight
  const 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>

核心代码

js 复制代码
  // 解决封面黑屏问题
  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 })
  })
相关推荐
数据线2 天前
ESP32-CAM通过WiFi传输视频
wifi·esp32·视频
视频技术分享4 天前
音视频SDK:驱动实时互动时代的核心技术引擎
实时互动·音视频·语音识别·实时音视频·视频编解码·视频
私人珍藏库8 天前
[Windows] 视频剪辑编辑软件中文绿色版ShotCut v25.12.31
pc·视频·工具·软件·win·辅助
jbk331110 天前
豆包改写、ai配音,用剪映10分钟翻译一条解说视频:实现字幕、画面、语音三者对齐实操教程
视频·剪辑软件·剪映自动化软件
信也科技布道师11 天前
互动视频技术在销售AI培训中的最佳实践
人工智能·ai·视频
zymill13 天前
flvAnalyser --- AVS系列视频标准ES分析使用指南
音视频·实时音视频·视频编解码·视频·智能电视·avs3
草明14 天前
一个将本地视频/音频转换为文字或字幕文件的命令行工具
音频·视频·文本
jbk331115 天前
维多视频批量工具实现视频随机变速、批量视频镜头抽帧图片、文件批量智能管理等功能教程
自动化·视频·剪辑软件
独自归家的兔15 天前
通义万相-文生视频 Text2Video
人工智能·视频
咕噜船长18 天前
使用Qwen3-VL模型批量标注视频内容(视频理解)
人工智能·pytorch·深度学习·音视频·视频