纯前端播放文件流视频并预览并截取视频第一帧

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

纯前端播放文件流视频并预览并截取视频第一帧

1、把文件流转为本地可以播放地址

调用getFileURL并传入文件流会返回一个地址,将地址赋值给videosrc即可播放视频,无需上传至服务器。

getFileURL(file) {
    var url = null;
    if (window.createObjectURL != undefined) { // basic
        url = window.createObjectURL(file);
    } else if (window.URL != undefined) { // mozilla(firefox)
        url = window.URL.createObjectURL(file);
    } else if (window.webkitURL != undefined) { // webkit or chrome
        url = window.webkitURL.createObjectURL(file);
    }
    return url;
},
2、截取视频第一帧

调用getVideoBase64并将第一步得到的url转给getVideoBase64即可得到视频第一帧图片,getVideoBase64返回的片为base64格式。

注释canvas.toDataURL(type, encoderOptions)type为图片格式,encoderOptions为图片质量(取值为0-1),图片格式为png图片相对会大一些,如果图片为jpeg那么图片相对会小很多,图片为jpeg转换成base64长度会小很多,当然图片质量越小base64长度也会越小。文章来源地址https://www.toymoban.com/news/detail-408074.html

getVideoBase64(url) {
    return new Promise(function(resolve, reject) {
        let dataURL = '';
        let video = document.createElement("video");
        video.setAttribute('crossorigin', 'anonymous'); //处理跨域
        video.setAttribute('src', url);
        video.setAttribute('width', 222);
        video.setAttribute('height', 148);
        video.setAttribute('controls', 'controls');
        video.currentTime = 1  //视频时长,一定要设置,不然大概率白屏
        video.addEventListener('loadeddata', function(e) {
            let canvas = document.createElement("canvas"),
            width = video.width, //canvas的尺寸和图片一样
            height = video.height;
            canvas.width = width;
            canvas.height = height;
            canvas.getContext("2d").drawImage(video, 0, 0, width, height); //绘制canvas
            dataURL = canvas.toDataURL('image/jpeg',0.3); //转换为base64
            var img = document.createElement("img");
            img.src = dataURL
            video.setAttribute('poster', dataURL);
            resolve(dataURL);
        });
    })
}

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

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

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

相关文章

  • js(ts)截取视频第一帧作为封面图

    直接上代码: 这里有三个地方需要注意: 1. 需要加上 preload 属性 这是防止截图结果为黑屏的关键一步 2. canvas宽高的设置 网络上其它文章的代码都直接读取 video.width 和 video.height ,会导致如果是竖视频截取出来的封面图在横显示时会变形 3. 判断图片有效性 有时候截取到的图

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

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

    2023年04月08日
    浏览(43)
  • vue2实现截取视频第一帧图像作为开始封面

    要在Vue中实现截取视频的第一帧作为封面,你可以使用HTML5的元素和Canvas API来实现。loadeddata事件监听必须在视频加载完成后执行,然后通过Canvas的drawImage方法将视频帧绘制到Canvas上,并使用toDataURL方法将Canvas内容转换为Base64编码的图像数据URL 在你的Vue组件中,使用元素来加

    2024年02月12日
    浏览(36)
  • uni-app App和H5平台上传视频截取视频第一帧生成图片

    提示:因为uni-app中renderjs仅支持App和H5平台,所以该方案仅支持当前这两个平台。 this.request为本人封装的接口请求方法,可以替换成个人的接口请求方法,如有需要可在下方留言 因为uni-app App端没有dom概念,不支持dom操作,并且uni-app的canvas不支持绘制video。renderjs完美解决了

    2023年04月09日
    浏览(57)
  • get两个js小技能——JS截取视频第一帧&图片转Base64

    由于开发之前做的VisualDrag拖拽模板优化的时候,拖拽进去的图片、视频文件等需要进行截图作为封面,目前采用的截图方法是htme2canvas,使用canvas进行的截图操作,所以就会遇到这样的问题,视频和图片图床简单的使用标签加入canvas画布里面无法正确的截图成功。最后采取的

    2024年02月12日
    浏览(37)
  • JS 截取视频某一帧图片 实现视频截图

    第一步:创建video用于存放需要截取的视频文件 第二步:创建canvas画布,用于绘制截取到的图片 1,定义创建一个 canvas 标签; 2,指定 canvas 标签的宽高; 3, 调用canvas元素中的 getContext() 方法(返回一个用于在画布上绘图的环境)。 要注意的是 drawImage() 的第一个参数不再是player而

    2024年02月12日
    浏览(45)
  • js截取video视频某一帧做封面的简单案例

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

    2024年02月04日
    浏览(54)
  • 前端Vue自定义轮播图视频播放组件 仿京东商品详情轮播图视频Video播放效果 可图片预览

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月15日
    浏览(54)
  • opencv视频截取每一帧并保存为图片python代码CV2实现练习

    当涉及到视频处理时,Python中的OpenCV库提供了强大的功能,可以方便地从视频中截取每一帧并将其保存为图片。这是一个很有趣的练习,可以让你更深入地了解图像处理和多媒体操作。 使用OpenCV库,你可以轻松地读取视频文件,并在循环中逐帧读取视频的每一帧。随后,你可

    2024年02月12日
    浏览(55)
  • 逻辑_gif图片在每次页面打开时恢复到第一帧播放

    在页面嵌入一个gif动画,每次进入页面时先展示gif动画(UI可以控制GIF图片为单次不循环播放)。 ---------------------------渲染页面------------------------- 发现页面第一次打开(或刷新页面)时能正常展示,当打开其他页面再返回该页面时 gif会从上次播放的最后一帧开始继续播放 ! 这违

    2024年02月11日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包