视频播放器DPlayer
监听竖屏和横屏(webfullscreen、fullscreen),更改水印范围,在竖屏的时候没问题,在横屏的时候看不到水印
/** 水印添加方法 */
let setWatermark = (str1, str2, container) => {
let id = '1.23452384164.123412415';
if (container === undefined) {
return;
}
if (document.getElementById(id) !== null) {
document.body.removeChild(document.getElementById(id));
}
// 设置局部水印
var containerWidth = container.offsetWidth; // 获取父容器宽
var containerHeight = container.offsetHeight; // 获取父容器高
container.style.position = 'relative'; // 设置布局为相对布局
var top = Math.random() * (containerHeight - 92);
var left = Math.random() * (containerWidth - 548);
let can = document.createElement('canvas');
// 设置canvas画布大小
can.width = 294;
// can.width = 334;
can.height = 90;
let cans = can.getContext('2d');
cans.rotate((-20 * Math.PI) / 180); // 水印旋转角度
cans.font = '15px Vedana';
// cans.font = '20px Vedana';
cans.fillStyle = '#FFFF00 ';
// cans.fillStyle = '#AAAAAA';
// cans.textAlign = 'center';
cans.border = '1px solid red';
cans.textBaseline = 'Middle';
cans.fillText(str1, can.width / 2, can.height); // 水印在画布的位置x,y轴
cans.fillText(str2, can.width / 2, can.height + 22);
let div = document.createElement('div');
div.id = id;
div.style.pointerEvents = 'none';
div.style.top = top + 'px';
div.style.left = left + 'px';
div.style.opacity = '0.15';
div.style.position = 'fixed';
div.style.zIndex = '400000';
div.style.width = '294px';
// div.style.width = '394px';
div.style.height = '90px';
div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat';
// document.body.appendChild(div);
container.appendChild(div);
console.log('container', container);
return id;
};
// 添加水印方法
export const setWaterMark = (str1, str2, container) => {
let id = setWatermark(str1, str2, container);
if (document.getElementById(id) === null) {
id = setWatermark(str1, str2, container, isfullscreen);
}
};
// 移除水印方法
export const removeWatermark = () => {
let id = '1.23452384164.123412415';
if (document.getElementById(id) !== null) {
document.body.removeChild(document.getElementById(id));
}
};
这段代码是添加水印到视频播放器中的方法,实现的功能是在视频播放器的指定容器中添加一个带有随机位置和旋转角度的水印。在竖屏模式下可以正常显示,但是在横屏模式下水印无法显示。
这里是一些可能引起问题的代码行:
1. `container.style.position = 'relative';`
这行代码将容器的布局样式设置为相对布局,这会导致水印位置的计算出现问题,因为它是相对于父容器定位的。
2. `div.style.position = 'fixed';`
这行代码将水印的定位方式设置为固定定位,这将导致水印的位置无法正确地响应容器大小的变化。
3. `div.style.width = '294px';`
这行代码为水印容器设置了一个固定的宽度,在横屏模式下,宽度可能会超出容器的大小。
解决方法是检查代码中的容器布局和定位,以确保水印可以正确地响应容器大小的变化。在横屏模式下,可以考虑重新计算水印的位置和旋转角度。
DPlayer是一款基于HTML5的Web视频播放器,支持多种流行的视频格式以及强大的功能和定制能力。在使用 DPlayer 进行全屏播放时,可以通过添加水印来保护版权和营销宣传。
如果在全屏播放时 DPlayer 的水印没有显示,可能有以下几种原因:
使用的 DPlayer 版本过旧:如果 DPlayer 版本过旧,可能存在一些已知的 bug 或问题,影响水印的显示。建议使用最新的 DPlayer 版本,或更新到最近的稳定版本。
水印样式或位置设置不正确:DPlayer 支持自定义水印的样式、位置等属性,可能是设置的位置不正确或样式属性被覆盖导致水印未显示。需要确保水印在正确的位置,并优先级较高,不被其他样式属性覆盖。
浏览器兼容性问题:不同浏览器对 HTML5 和 CSS3 的支持程度不同,可能存在兼容性问题。可以尝试使用其他浏览器进行全屏播放或调整水印的样式和位置等属性。
需要注意的是,在添加水印时,需要注意版权及其它合法权益的人身、财产等合法权益,谨慎对待涉及商业、版权等问题的内容,不要侵犯他人权益。