前端截取视频第一帧作为封面

这篇具有很好参考价值的文章主要介绍了前端截取视频第一帧作为封面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

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无法对跨域的图片进行操作,这样解决了跨域问题。文章来源地址https://www.toymoban.com/news/detail-422136.html

完整代码

<!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.clientWidth
			canvas.height = video.clientHeight
			video.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>

到了这里,关于前端截取视频第一帧作为封面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JS 怎么获取视频第一帧作为封面图?

    要获取视频的第一帧作为封面图,你可以使用HTML5的 video 元素和 JavaScript 来实现。下面是一个简单的步骤: 在HTML中,创建一个 video 元素,并设置视频的路径或URL: 在JavaScript中,获取 video 元素的引用,并监听它的 loadedmetadata 事件(视频元数据加载完成时触发): 继续在JavaS

    2024年04月10日
    浏览(29)
  • video截取视频第一帧作为播放前默认图片

    重要!不设置会导致第一帧图片不显示 实现js 附上全部代码

    2024年02月12日
    浏览(34)
  • 纯前端播放文件流视频并预览并截取视频第一帧

    1、把文件流转为本地可以播放地址 调用 getFileURL 并传入文件流会返回一个地址,将地址赋值给 video 的 src 即可播放视频,无需上传至服务器。 2、截取视频第一帧 调用 getVideoBase64 并将第一步得到的url转给 getVideoBase64 即可得到视频第一帧图片, getVideoBase64 返回的片为 base64

    2023年04月09日
    浏览(27)
  • js截取video视频某一帧做封面的简单案例

    可以使用 canvas 元素来截取视频某一帧并生成封面。 首先,在 video  标签上设置视频源地址和自动播放属性: 然后,在 canvas  标签上定义宽高和样式,并通过 JavaScript 获取视频元素和 canvas 元素: 接着,定义一个函数来截取视频某一帧,并将其渲染到 canvas 上: 在需要生成

    2024年02月04日
    浏览(36)
  • FFmpeg批量提取视频的某一帧作为封面

    命令是这样的: 说明: -i input.flv 截取的视频的名字 -ss 00:00:02 这是视频的第2秒 -frames:v 1 这代表单独这1帧 out.png 要保存的截取的封面文件 整个命令实现的是:截取input视频从第2秒,然后只截取这1帧,作为画面,保存到out.png 上面这个已经满足了我想批量生成视频封面的目

    2024年02月09日
    浏览(29)
  • vue 获取上传视频的第一帧做为视频封面

    上一篇文章记录了vue上传视频,接下来,需要在上传成功后截取视频第一帧做为视频封面。 具体实现如下: 上传视频之后,在成功回调函数中拿到视频地址, video.src=url ,然后,使用canvas截取图片。 截取视频第一帧使用的是canvas,相关步骤如下: canvas 可以用来截取图片。

    2024年02月03日
    浏览(32)
  • uni-app从后端返回的mp4链接视频截取一帧为封面

    一、需求: 后端返回包含视频链接的数组对象,格式如下: 从上面的mp4视频中截取一帧设置为封面,如下图,下面的封面图从视频中截取而来。 二、代码实现: 按照上面的代码,其中posterList就是对应的每一个视频的封面base64数组,一切看起来都挺好,在H5正常运行,但是在

    2024年02月14日
    浏览(22)
  • Java实现截取视频第一帧

    目录 前言 一、通过Java借助第三方库实现 1.引用ffmpeg 使用maven,导入pom依赖:  工具类 2.引用jcodec 二、使用第三方存储自带的方法实现(如阿里云OSS、华为云OBS) 在实际项目中,会遇到上传视频后,需要截取视频的首帧或指定帧为图片,作为展示使用的需求。这个需求本身

    2024年02月06日
    浏览(29)
  • uniapp video(倍速功能、层级过高、视频第一帧做封面 等问题)

             由于上次写video组件的问题,过于划水,没讲清楚,导致自己花费了很多时间,重新踩坑,对自己很抱歉。 效果图如下:倍速的显示和隐藏,需在全屏的时候 和 显示控制组件时 代码逻辑 1. 实现倍速的核心是创建视频组件控制器,调用它的倍速方法 =》官方文档

    2024年02月08日
    浏览(27)
  • canvas截取多个视频的第一帧,第n秒画面

    业务涉及视频预览,不点击视频则不播放而是先展示视频的画面给到用户 “因为本人特别喜欢梅艳芳,所以也留存了很多她的视频,这里就以她的视频做测试了” 截取多个视频的第一帧,使用:Promise+loadeddata事件+canvas Promise来帮助我们顺序地拿到多个视频的第一帧画面 loa

    2023年04月08日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包