Vue视频播放进行+水印的截图
需求
视频相关项目,有时候需要对视频进行截图的,图片一般加上水印。
这里展示下普通视频播放和直播视频播放的加水印方式。
资源
测试需要的视频资源用的 阿里视频中心
video播放视频
一些非直播、不复杂的视频播放需求,直接用这个就好了,特别是一些演示用的项目。
目前,<video>
元素支持三种视频格式:MP4、WebM、Ogg。
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播放视频
支持 MP4、FLV、M3U8、MP3 格式的视频,支持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
方法就行了,文字旋转、图片等都是可以的。
Vue视频播放进行+水印的截图相关推荐
- 比心app源码,vue 视频播放
比心app源码,vue 视频播放实现的相关代码 安装 npm i vue-video-player -S 引入 import { videoPlayer } from 'vue-video-playe ...
- vue 视频播放(使用vue-video-player)
vue 视频播放(使用vue-video-player) 安装 npm i vue-video-player -S 引入 import { videoPlayer } from 'vue-video- ...
- vue 视频播放插件VideoPlayer
vue 视频播放插件VideoPlayer 1.npm install vue-video-player --save 2.main.js引入 import VideoPlayer from 'vue ...
- video标签设计vue视频播放器组件
文章目录 1.video播放器组件设计 2.在弹窗中运用视频组件 3.小结 1.video播放器组件设计 啥也别说了,上代码: <template> <div><meta ...
- Vue视频播放组件(Video)
可自定义设置以下属性: 视频文件url(videoUrl),必传 视频封面url(videoCover),默认为null 视频播放器宽度(width),默认为800px 视频播放器高度(height) ...
- vue视频播放组件vue-mini-player
vue-mini-player 官方文档:vue-mini-player: 基于Vue的一个轻量级HTML5视频播放组件,适配PC和移动端
- vue 项目实现水印效果
如图所示 话不多说,直接上代码 基于vue的架构中,在网页中添加水印效果,具体实现代码如下: 创建 warterMark.js 用于放生成水印的操作, 建议在utils 文件下 // warterMa ...
- 前端Vue页面加水印方法(带源码)
目录 方案一 tool.js index.vue 效果 方案二 watermark.js index.vue 效果 最后 方案一 可能会报错,解决办法,下面网址 地址 tool.js 创建utils ...
- vue 视频播放插件vue-video-player自定义样式、自动播放设置、设置一开始全屏播放视频
1.背景 项目中有涉及视频播放的需求,并且UI设计了样式,与原生的视频video组件有差异,所以使用了vue-video-player插件,并对vue-video-player进行样式改造,自定义播放 ...
最新文章
- 大年初七,发paper、学Python...分享一下你的学习计划吧~
- Jquery各版本下载
- 大话云计算——认识云——“瑞友杯”虚拟化征文
- spark写mysql优化简书_spark——通过jdbc连接数据库中遇到的问题
- linux暗转旧版java_Java旧版不断发展
- placeholder的使用
- data的值 如何初始化vue_Vue原理解析(九):搞懂computed和watch原理,减少使用场景思考时间...
- 微型计算机生产制约因素,精品解析:广东省东莞市2019-2020学年高三下学期第一次统考(5月)模拟考试文科综合地理试题...
- 基于java洗浴中心管理系统_Java小白也能听懂的线程池的内部原理:老王的洗浴中心...
- printf 输出字符串 需要加上 c_str()
- 你愿意一辈子当一个打工的吗
- anaconda怎么打开python3.7,使用anaconda更新到python 3.7
- Win10/Win7下添加Protel 99 SE库文件
- ios yylabel 加载html,iOS关于YYLabel的富文本点击事件
- Ubuntu cd 命令
- CSS中的em运用详解,1em等于多少像素?
- 争议带货达人董明珠:直播带货476亿 却被质疑经销商刷单
- 杂项:MIME(多用途互联网邮件扩展类型)百科
- java echarts 生成图片_java如何在后台生成echarts图表?实际代码展示
- 漫画行业有妖气:曾经的一哥,今日的难兄