浏览器网页JavaScript实现视频截图并下载,base64图片下载,video标签、hls.js、flv.js和webrtc等方式播放的视频进行截图并下载

news/2024/11/7 16:43:50/

前言

上一章中已经实现了base64下载:浏览器网页JavaScript实现Base64转图片并下载。
以前一般截图都是在后台进行截图,前端直接获取现成的图片就可以了,现代浏览器网页可以做的事情越来越多,所以可以直接在网页上对视频进行截图,本章就讲讲如何实现JavaScript网页视频截图并下载原理和代码实现。

网页截图实现原理

1、创建canvas画板
2、将video标签当前播放画面绘制到canvas画板
3、利用canvas特性,将当前canvas画板画面转成base64图片
4、创建a标签
5、利用a标签的特性,将base64图片赋值到a标签实现下载截图
6、删除a标签

功能代码实现

实现分为两块,一块是视频截图,第二块是实现图片下载

截图实现

var canvas = document.createElement('canvas');
var img = new Image();/**
*视频截图并下载
* @param videoDomId 视频video标签的id
* @param width 下载的图片宽度
* @param height 下载的图片高度
* @param fileName 文件名(例如:截图.png)
*/
const screenshot = function (videoDomId,width,height,fileName) {canvas.width = width;//决定图片宽度canvas.height = height;//图片高度img.onload = (function () {const video_player=document.getElementById(videoDomId);canvas.getContext('2d').drawImage(video_player, 0, 0, canvas.width, canvas.height)img.src = canvas.toDataURL('image/png').replace('image/png', 'image/octet-stream')const screenShotImg = img.src.replace(/^data:image\/[^;]+/, 'data:application/octet-stream')//图片下载saveImage(screenShotImg, fileName)})()
}

图片下载实现代码

/**
*将base64赋值到a标签并下载截图
* @param data base64图片
* @param filename 下载截图名称
*/
const saveImage = function (data, filename) {let saveLink = document.createElement('a');saveLink.style = "display: none";saveLink.href = data;saveLink.download = filename;let event = document.createEvent('MouseEvents');event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);saveLink.dispatchEvent(event);setTimeout(()=>function(){document.body.removeChild(saveLink);//删除临时a节点},500);
}

这样调用**screenshot()**方法即可下载某个video标签正在播放的画面截图。
如果video未播放,则截图是全黑的画面。

hls.js、flv.js和webrtc等方式播放的视频截图

hls.js、flv.js、videojs(内部还是hls.js和flv.js)等播放器,其实都是利用mse转封装方法,将ts、flv的视频格式转成mp4格式塞给video标签进行播放,根本上都有一个video标签,所以直接传对应video标签的id即可复用上述代码进行截图下载。

如果觉得博主写得还不错,欢迎“关注、点赞、收藏”一键三连!


http://www.ppmy.cn/news/644167.html

相关文章

逼真版仿英雄联盟纯html+css+jqueryLOL网页版

前言: 为了提高自己的编码兴趣,最近使用html,css,JQuery做了一个仿版的《英雄联盟》,虽然自己主修的是后端,但是技多压身。纯属也是自己的一个兴趣。上一节简单的介绍了仿版的《网易云音乐》,那么这次就简单介绍《简仿…

利用浏览器Fvd Downloader插件下载网页视频、音乐

转自:http://jingyan.baidu.com/article/92255446ac2704851648f40c.html 注意百度传课的视频通过这种方式不能正常下载,下载下来的文件是加密的,后缀名为encs.flv,通过各种视频播放播放器打不开,应该是加密了&#xf…

基于Java+SpringBoot+vue的高校学生党员发展管理系统设计与实现

博主介绍:✌擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案…

Mac下的几个免费杀毒软件

ClamXav www.clamxav.com AdwareMedic www.adwaremedic.com Sophos - home edition www.sophos.com 本文转simmy51CTO博客,原文链接:http://blog.51cto.com/helpdesk/1582818,如需转载请自行联系原作者

苹果遭“打脸”:最安全的 iPhone 却被间谍软件“攻破”!

整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 上周末,国外多家知名媒体共同披露了一款名为“飞马(Pegasus)”的手机间谍软件——由以色列软件监控公司 NSO 开发,用于监视记者、律师和政治家等较有影…

苹果手机中病毒显示无服务器,iPhone手机真的不会“中毒”?出现这3个状况就要小心了...

说到安全性最强大的手机,很多小伙伴首先就会想到iPhone。因为很多人都会用iPhone的iOS系统跟Android系统做比较,经常会听到Android系统的用户反映自己的手机中了病毒,却很少听到iPhone的用户说自己的手机中过病毒。并且,因为iPhon…

苹果手机中病毒显示无服务器,苹果手机浏览器提示中毒,如图?

方法1:中毒严重的情况 1 病毒也分很多种,当苹果手机中毒严重,杀毒软件也没有效果,已经无法正常使用了,必须抹掉IPHONE以及数据,重新恢复到出厂设置的初始状态,必须重新开始的情况下,…

【亲测】python 安装 pillow报错 如何处理

今天在新系统上安装pillow库,提示错误: WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connection broken by SSLError(SSLEOFError(8, EOF occurred in violation of protocol (_ssl.c:997))): /simple/…