前端视频加水印

前端视频加水印


借助 video.js 插件,npm地址: https://www.npmjs.com/package/video.js
方案一:
图片背景图

import videojs from 'video.js';
import 'video.js/dist/video-js.css'

mounted(){
	this.$nextTick(function(){
    	var player = videojs(this.$refs.videoPlayer);
	});
}
/* vjs-text-track-display 是video.js 使用之后插入的dom的class,这个div是定位铺在视频上方的,给它设置背景图,即可实现视频水印的效果*/
// bottom 设置成0
.vjs-text-track-display{
	bottom: 0;
    background: url("~@/assets/img/bg.png") repeat;
}

注意: video js 的控制条样式可以能会不生效,导致样式混乱,这个时候,需要个video标签加个class “video-js”

<video id="video" class="video-js" controls></video>

videojs默认就是时间是倒数的,并不是所谓的负数,如果你想要使用正常播放器的话

<style type="text/css">
	.video-js .vjs-time-control{display:block;}
	.video-js .vjs-remaining-time{display: none;}
</style>

方案二:
可实现自定义文字动态位置水印
额外又引入了另一个插件 videojs-dynamic-watermark, npm 地址: https://www.npmjs.com/package/videojs-dynamic-watermark

import videojs from 'video.js';
import 'video.js/dist/video-js.css'
import 'videojs-dynamic-watermark'

mounted(){
	this.$nextTick(function(){
    	var player = videojs(this.$refs.videoPlayer);
    	// 实现动态位置的文字水印,可以自定义水印文案内容,有设置项,可以参考npm里的说明
    	player.dynamicWatermark();
	});
}

以上,亲测有效。

### 实现视频全屏播放时添水印 为了在 Vue2 项目中的视频全屏播放期间添水印,可以采用以下方法: 创建一个覆盖层来作为水印,并通过监听视频进入和退出全屏事件控制该图层的显示隐藏。 #### HTML 结构设置 ```html <template> <div id="app"> <video ref="myVideo" controls @webkitfullscreenchange="toggleWatermark" @mozfullscreenchange="toggleWatermark" @msFullscreenChange="toggleWatermark" @fullscreenchange="toggleWatermark"> <!-- 视频--> </video> <!-- 水印容器 --> <div v-if="isFullScreen && showWaterMark" class="watermark"></div> </div> </template> ``` #### JavaScript 方法编写 ```javascript <script> export default { data() { return { isFullScreen: false, showWaterMark: true, // 控制是否展示水印,默认开启 }; }, methods: { // 判断当前是否处于全屏模式并切换水印可见性 toggleWatermark(event) { let videoElement = this.$refs.myVideo; this.isFullScreen = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement; if (this.isFullScreen === null){ this.isFullScreen = false; } console.log('Is FullScreen:', this.isFullScreen); } } }; </script> ``` #### CSS 样式设计 ```css <style scoped> .watermark{ position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-image: url('/path/to/watermark.png'); /* 设置水印图片路径 */ background-size: contain; background-repeat: no-repeat; pointer-events:none;/* 防止遮挡交互 */ z-index:9999; opacity:.75; display:flex; justify-content:center; align-items:center; font-size:larger; color:#fff; text-shadow:1px 1px 2px rgba(0,0,0,.8); } /* 对于不同浏览器的支持 */ @supports (-webkit-touch-callout: none) { .watermark{ background-color:red;} } @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none){.watermark{ background-color:green;}} </style> ``` 此方案利用了HTML5 Video API 和CSS样式组合,在检测到视频元素进入了全屏状态之后就显示出预设好的水印层;当退出全屏的时候则将其隐藏起来。需要注意的是对于不同的浏览器可能需要处理特定前缀版本的全屏变更事件[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值