视频播放器DPlayer全屏水印不显示?

在h5中用视频播放器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));

}

};


回答:

原因:
我设置水印的时候,把画布放在document.body或传过来的container节点节点下,
由于视频播放器全屏的时候会置于最顶层,这是会把画布盖住
解决方案:把视频元素节点跟画布放在同一层

<view

class="video"

id="directrecordwp"

>

<view id="dplayer"></view>

</view>

  this.videoDp = new Dplayer({

//播放器的一些参数

container: document.getElementById('dplayer'),

autoplay: true, //是否自动播放

theme: '#65E1C0', //主题色

loop: false, //视频是否循环播放

lang: 'zh-cn',

screenshot: false, //是否开启截图

hotkey: false, //是否开启热键

preload: 'auto', //视频是否预加载

volume: 1, //默认音量

mutex: false, //阻止多个播放器同时播放,当前播放器播放时暂停其他播放器

video: {

url: vm.videoUrl + vm.videoDetail.videoUrl, //视频地址

type: 'customHls',

customType: {

customHls: function (video, player) {

const hls = new Hls(); //实例化Hls 用于解析m3u8

hls.loadSource(video.src);

hls.attachMedia(video);

},

},

},

});

Watermark (设置水印方法)中的document.body.appendChild(div)改为document.getElementById('dplayer').appendChild(div)


回答:

这是官方文档看看操作对吗:https://dplayer.diygod.dev/zh/guide.html

以上是 视频播放器DPlayer全屏水印不显示? 的全部内容, 来源链接: utcz.com/p/934348.html

回到顶部