概述

1.做项目的时候突然想截取视频第一帧,作为视频的封面,然后搜了很多博客都发现得到空白的图片,最后得到了解决。

2.方法:通过创建canvas标签,利用其drawImage() 方法在画布上绘制该视频,然后运用toDataURL方法转换canvas上的图片为base64格式,并将base64格式的图片作为video标签的poster属性。

3.浏览器:chrome

代码关键

video.currentTime = 1

currentTime 属性设置或返回视频播放的当前位置(以秒计)。当设置该属性时,播放会跳跃到指定的位置。一定要设置该属性,不然会得到空白的图片。

知识点

video.onloadeddata

onloadeddata 事件在当前帧的数据加载完成且还没有足够的数据播放视频/音频(audio/video)的下一帧时触发。在当前帧的数据可用时执行相应 JavaScript代码。

canvas.toDataURL

是返回一个包含图片展示的 数据URL。可以使用 type 参数其类型,默认为 PNG 格式。图片的分辨率为96dpi。

video.setAttribute(‘crossOrigin’, ‘anonymous’)

canvas无法对跨域的图片进行操作,这样解决了跨域问题。

完整代码

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>capture screen</title></head><body><video id="video" controls="controls"><source src="./0130_1.mp4"></video><div id="output"></div><script type="text/javascript">(function(){var video, output;output = document.getElementById("output");var canvas = document.createElement('canvas')var img = document.createElement("img");video = document.getElementById('video')video.setAttribute('crossOrigin', 'anonymous')video.currentTime = 1 canvas.width = video.clientWidthcanvas.height = video.clientHeightvideo.onloadeddata = (() => {canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height)var dataURL = canvas.toDataURL('image/png')img.src = dataURL;img.width = 400;img.height = 300;output.appendChild(img);})})();</script></body>
</html>

前端截取视频第一帧作为封面相关推荐

  1. vue截取视频第一帧做封面图

    利用画布canvas来截取第一帧作为图片 cutPicture(item) {let video = document.createElement("video");video.s ...

  2. vue 截取视频第一帧

    最近自己写项目,在项目中涉及功能点又截取视频帧的点:需求澄清:移动端封面展示,平台上传图片(多张上传)取第一张上传图片为封面图:如上传视频则截取视频第一帧作为封面图: 实现思路:h5  video标签 ...

  3. php ffmpeg截图,php ffmpeg截取视频第一帧保存为图片的方法

    php ffmpeg截取视频第一帧保存为图片的方法 $xiangmupath = $this->getxiangmupath(); $filename = 'chengshi'; $cmd = ...

  4. 前端开发如何获取视频第一帧作为封面

    首先说明一下,浏览器或者手机需要支持video标签. 从H5本身来说,这里用到了video的一个属性,poster(规定视频下载时显示的图像,或者在用户点击播放按钮前显示的图像.). 然后还有一个vi ...

  5. windows下PHP截取视频第一帧

    php截取视频第一帧,需要配合第三方软件实现,php执行windowsShell命令,进行图片处理 首先下载第三方软件ffmpeg http://www.ffmpeg.org/download.htm ...

  6. 安卓截取视频第一帧的方法

    视频app大多是需要有一张相关视频的图片做封面展示的.下面是可以直接从视频的url取到视频的第一帧图片的方法: Bitmap bitmap = ThumbnailUtils.createVideoTh ...

  7. PHP截取视频第一帧

    安装ffmpeg 第一步:下载ffmpeg:http://ffmpeg.org/releases/ffmpeg-3.4.1.tar.gz wget http://www.ffmpeg.org/rele ...

  8. ffmpeg截取视频第一帧

    public function getVideoCover($file_info, $time, $dir_video, $size, $dir) { try { $time = $time ? $t ...

  9. php截取视频第一帧为图片,把视频变成一帧一帧的图片(ae怎么把视频变成单帧) 视频截图视频画面每帧图片截取...

    AE怎么把视频变成单帧?这是小编今天要与大家讨论及解决的一个问题.在视频后期处理中,有时为实现某个场景效果,需要把视频中的某帧变成静态帧图片:或者需要视频截图视频画面每帧图片截取出来,把视频变成一帧一 ...

  10. js截取视频第一帧图片

    const getVideoBase64 = (url: any) => {//url为视频链接地址return new Promise(function (resolve, reject) { ...

最新文章

  1. 安装SQL提示重启电脑失败,解决办法
  2. 计算机控制系统脉冲传递函数,第6.2课 (理解)计算机控制系统理论基础—脉冲传递函数.pdf...
  3. saas- -m ihrm 项目_Convertlab等企业入选腾讯SaaS加速器二期名单
  4. jquery各类资源整理
  5. ProxyToken:微软 Exchange 服务器中的认证绕过新漏洞,可窃取用户邮件
  6. 坐飞机也能享受百兆宽带了,这个技术是怎么实现的?
  7. php语句过滤掉html标签_php过滤HTML标签、属性等正则表达式
  8. 点对点协议(PPP)
  9. BZOJ1301 字符加密Cipher (后缀数组)
  10. C# 类中的静态代码块
  11. webpower携手穷游,解析大数据、营销智能化与用户的关系
  12. oracle 选项,oracle startup的选项-Oracle
  13. 【SONY PS2模拟器】[PCSX2 V0.93 R7完美教程]+最新版模拟器
  14. LTE上行物理层传输机制(5)-CQI的传输方式
  15. java二维数组货柜,装箱布局三维可视化控件开发sup*/sup
  16. 使用国外著名大学数字图书馆资源方法
  17. const定义及初始化约束
  18. 大数据毕设题目推荐 - 最新大数据毕设选题 - 毕业设计项目方向课题
  19. 最全面的shiro知识点学习
  20. 【珍藏版】 2012Java开发工程师必备精品资料(115个)

热门文章

  1. Gallery3D笔记
  2. Embarcadero官方出品Delphi入门教程学习视频:2小时轻松掌握Delphi快速开发跨平台应用程序APP软件菜鸟教程
  3. Demo3D详解-----附下载地址
  4. android imagebutton 动画,来自ImageButton的图像没有在Android Studio的模拟器上显示
  5. Java学生成绩管理系统(一次学会java类及容器使用,内含java编程小tips)
  6. 小狼毫输入法配置(搜狗词库+u模式+皮肤+同步)
  7. 技巧心得:DOS学习心得(一)
  8. 版本管理SVN的使用——SmartSVN使用
  9. 新浪微博API使用入门:申请应用、授权、使用官方java版本SDK
  10. 测试两个主机之间的连通性_如何使用知行EDI系统模拟连通性测试?