Vue视频播放进行+水印的截图

article/2025/9/18 5:47:53

需求

视频相关项目,有时候需要对视频进行截图的,图片一般加上水印。

这里展示下普通视频播放和直播视频播放的加水印方式。

资源

测试需要的视频资源用的 阿里视频中心

video播放视频

一些非直播、不复杂的视频播放需求,直接用这个就好了,特别是一些演示用的项目。

目前,<video> 元素支持三种视频格式:MP4WebMOgg

  • MP4:MPEG 4文件使用 H264 视频编解码器和AAC音频编解码器

  • WebM:WebM 文件使用 VP8 视频编解码器和 Vorbis 音频编解码器

  • Ogg :Ogg 文件使用 Theora 视频编解码器和 Vorbis音频编解码器

主要实现代码

具体可见 代码

<video id="video1" controls crossOrigin="Anonymous" class="image" width="520" height="320" style="object-fit: fill;"><source :src="url" type="video/mp4">您的浏览器不支持 video 标签。
</video>
captureClick() {const v = document.querySelector('#video1')// v.setAttribute('crossOrigin', 'anonymous')// v.crossOrigin = 'anonymous'const width = v.videoWidthconst height = v.videoHeightconst canvas = window.canvas = document.createElement('canvas')canvas.width = widthcanvas.height = heightconst ctx = canvas.getContext('2d')ctx.drawImage(v, 0, 0, width, height)ctx.rotate(-16 * Math.PI / 180)ctx.font = '100px 宋体'ctx.fillStyle = 'rgba(255, 255, 255, 1)'ctx.fillText('测试水印', 100, height - 200)const image = canvas.toDataURL('image/png')this.captureImg1 = image
}

效果如下:

在这里插入图片描述

Aliplayer播放视频

支持 MP4FLVM3U8MP3 格式的视频,支持H.264编码的视频。
Flash模式下支持 RTMP,但是Flash已经不更新了,就忽略了。详情参考文档

集成进项目可以用 vue-aliplayer-v2,也可以直接参考 文档。

Aliplayer功能展示,这里有代码看,不详细介绍了。

这个播放器本身就自带加水印截图的功能,按文档配置就好了。缺点也很明显,只可以文字,不好定制。需求不复杂的可以用这个。想自定义复杂水印的,可以参考下节 EasyPlayer.js播放视频相关来实现,原理都是一样的。

snapshotWatermark:{left:"100",top:"100",text:"测试水印",font:"italic bold 48px 宋体",strokeColor:"red",fillColor:'green'
}

EasyPlayer.js播放视频

Easyplayer 支持的视频格式就比较全面了,是目前找到的唯一个支持播放 H.265 格式视频的H5播放器 EasyPlayer.js,支持直播

网上使用这个播放器,大多数是用的旧版的方式,这里用的是最新版的方式。

注意:

  • 1、目前这个播放器的最新版本,高度没有自动充满父容器,所以通过scss强行设定下,例如,这里设定320px的高度(对应的选择器,用谷歌浏览器的开发者工具,看Elements就可以找到)
::v-deep .video-wrapper {padding-bottom: 0px !important;height: 320px !important;
}
  • 2、视频播放的截图,video都需要配置下跨域。所有第三方的H5视频播放器,找到对应的video对象设置下便可,原理都一样的。例如,Easyplayer.js的跨域设置如下:
this.player2 = this.$refs['video2'].player.el_.children[0]
this.player2.setAttribute('crossOrigin', 'Anonymous')

此设置一定要在截图前设置好,不然不生效的。

主要实现代码

具体可见 代码

<EasyPlayerref="video2"class="video-view":video-url="url":stretch="true"liveautoplayfluent />
captureClick2() {const width = this.player2.videoWidthconst height = this.player2.videoHeightconst canvas = window.canvas = document.createElement('canvas')canvas.width = widthcanvas.height = heightconst ctx = canvas.getContext('2d')ctx.drawImage(this.player2, 0, 0, width, height)ctx.rotate(-16 * Math.PI / 180)ctx.font = '100px 宋体'ctx.fillStyle = 'rgba(255, 255, 255, 1)'ctx.fillText('测试水印', 100, height - 200)const image = canvas.toDataURL('image/png')this.captureImg2 = image
}

效果如下:

在这里插入图片描述

代码总览

涉及的文件如下(具体参考代码):

|-- src|-- views|-- videoCaptureTest    // 实例所在|-- index.vue|-- index.scss|-- index.js

代码

代码总览的目录去代码里找着看就行了。

总结

以上,只是简单的展示了文字水印,想实现复杂的,参考canvas方法就行了,文字旋转、图片等都是可以的。


http://chatgpt.dhexx.cn/article/UCqjOJqC.shtml

相关文章

vue 视频 时间进度条组件

vue 视频 时间进度条组件 有些视频是以视频流的形式进行渲染的&#xff0c;没有视频滚动条&#xff0c;所以就写了24h的时间组件 实现思路&#xff1a; 1&#xff0c;24h的时间刻度线总宽度为12960px 2&#xff0c;点击24h线的某一点&#xff0c;获取这一点离左侧原点的距离&a…

vue视频通话(Agora声网)

文章目录 声网简介语音视频通话API互动直播API实时消息API实时录制API实时码流加速API水晶球Agora Analytics 质量监控平台 基于声网实现视频通话注册配置实现音视频通话基本逻辑创建对象加入频道创建轨道订阅轨道 基于以上步骤封装组件导入注册使用项目页面注意事项GitHub链接…

vue 视频播放插件VideoPlayer

vue 视频播放插件VideoPlayer 1.npm install vue-video-player --save 2.main.js引入 import VideoPlayer from vue-video-player import vue-video-player/src/custom-theme.css import video.js/dist/video-js.cssVue.use(VideoPlayer)

vue 视频播放

一、概述 基于 Vue 的一个轻量级视频播放组件&#xff0c;适配 PC 和移动端。 官方链接&#xff1a;https://webweifeng.github.io/vue-mini-player/ 特色 1.轻量级 HTML5 播放器&#xff0c;精美 UI 控件&#xff0c;简单易上手 2.提供以 npm 的形式安装提供全局组件 3.多格式…

VUE视频

1.Vue后台脚手架安装过程&#xff1a;node.js

vue 视频截屏

video播放视频&#xff0c;一键截屏功能实现&#xff08;2种方式&#xff09; 1.canvas <template><div class"hik-box"><canvas style"display:none;width:200px;height:200px" id"myCanvas"></canvas><video wid…

Vue视频学习

黑马程序员vue前端基础教程-4个小时带你快速入门vue_哔哩哔哩_bilibili vue的el挂载点 id选择器&#xff0c;class选择器&#xff0c;元素选择器&#xff0c;推荐使用id选择器&#xff0c;因为id选择器唯一 vue的数据对象 vue开发网页&#xff1a; v-text v-html:解析返回的…

Vue2视频播放(Video)

Vue3视频播放&#xff08;Video&#xff09; 可自定义设置以下属性&#xff1a; 视频文件url&#xff08;src&#xff09;&#xff0c;必传&#xff0c;默认 &#xff0c;支持网络地址https和相对地址require(...) 视频封面url&#xff08;poster&#xff09;&#xff0c;默…

vue实现视频播放器功能,你学会了吗

&#x1f48c; 作者简介 &#x1f4d6; 个人介绍&#xff1a;小伙伴们&#xff0c;大家好&#xff01;我是水香木鱼&#xff0c;【前端领域创作者】&#x1f61c;&#x1f4dc; CSDN主页&#xff1a;水香木鱼&#x1f4d1; 个人博客&#xff1a;陈春波&#x1f3a8; 系列专栏&…

测试开发工程师成长日记001 - 敏捷测试、CI/CD/CT、DecOps的一些介绍

始终都没有很坚定想去做一份职业&#xff0c;大概就是缺少对互联网的热爱与坚持&#xff0c;对于我个人而言&#xff0c;大概需要的是简单而明确的方向&#xff0c;比如考研&#xff1a;选中一个学校并开始各个科目的学习和延伸。但是&#xff0c;找工作完全不一样&#xff0c;…

浅谈弱网测试及QNET

最近工作中需要进行弱网测试&#xff0c;所以在此将自己遇到的一些问题记录一下。本文是基于QNET进行的弱网测试。**首先弱网测试是什么&#xff1f;**模拟各种弱网环境&#xff0c;借助丢包、延时等弱网场景测试对弱网的处理机制&#xff0c;以游戏为例&#xff0c;就是保证前…

shell脚本测试

目录 test命令进行测试 1.比较大小 2.关于文件的权限检测&#xff08;-x常用&#xff09; 3.1测试文件是否存在&#xff08;-f&#xff0c;-d&#xff09; 4.多种条件的判断&#xff08;-a -o常用&#xff09; 5.判断字符串是否相等 expr命令 数值比较符号 逻辑判断脚本…

【Cmake】Ctest测试工具

目录 前言 一、初识CTest 二、使用方法 三、完整的简单测试工程 附录 附录一 cmake命令 enable_testing add_test 前言 原文&#xff1a;CTest - https://www.cnblogs.com/457220157-FTD/p/4139149.html 一、初识CTest CTest是CMake集成的一个测试工具&#xff0c;在使…

软件测试常见面试题

1、软件的含义 程序、数据以及相关文档的集合。 2、测试与调试的区别是什么&#xff1f; 测试是测试人员进行&#xff0c;主要目标是发现、报告、跟踪缺陷&#xff1b; 调试是开发人员进行&#xff0c;主要目标是定位缺陷位置、分析缺陷原因、修复缺陷。 3、IEEE是什么意思…

Web服务稳定性测试 负载测试 可靠性测试 方案 测试报告

注&#xff1a; 1. 程序员做的测试 2. 测试报告文档原稿在上传审核中&#xff0c;请等待 审核好了&#xff1a;https://download.csdn.net/download/yiquan_yang/12694138 1 概述 1.1 背景 系统的稳定性是系统长期稳定运行能力&#xff0c;需要时间累积才能度量。平台的某些问…

NFC测试

NFC功能点介绍&#xff1a; NFC英文全称Near Field Communication&#xff0c;近距离无线通信。 NFC采用主动和被动两种读取模式&#xff0c;NFC应用模式分为三种&#xff1a; 1、NFC卡模式&#xff08;被读模式&#xff0c;手机终端可以模拟成为一张普通的非接触卡被pos机读取…

Python 接口并发测试详解

一、接口并发测试简介 1、性能测试简介 性能测试是通过自动化测试工具模拟多种正常、峰值及异常负载条件对系统的各项性能指标进行的测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,…

jmeter测试工具

文章目录 参考文章jmeter接口验签tomcat最大连接数jmeter参数彻底理解jmeter的ramp-up参数总结说明 持续时间的使用场景彻底理解ramp up2循环次数ramp-up线程数循环次数&#xff08;永远&#xff09;持续时间同步器里面的Timeout in milliseconds参数线程组参数 版本缺陷记录jm…

点餐系统测试

一、设计测试用例 二、提交BUG a)BUG 一 标题:兼容性差&#xff0c;只能在Chrome浏览器和火狐浏览器上使用 1.版本号&#xff1a;V0009 2.测试环境&#xff1a;Chrome 浏览器 版本号 96.0.4664.45 火狐 浏览器 版本号 97.0.1 操作系统&#xff1a;win10 3.测试数据…

接口 测试

一.接口概念 1.什么是接口(API) 接口:接口是为了提供一种服务 所有的接口统称为API,接口分为内部接口和外部接口 外部接口:测试被测系统和外部系统之间的接口 测试内部接口: 1.内部接口提供内部系统使用:开发人员自己开发的对自身系统提供的接口) 2.内部接口提供外部系统使用:…