1

我想将 div 类显示为 PiP(画中画)。我用谷歌搜索了很多,但只是如何在视频中启用,而不是自定义 div。

在我的环境中,可以使用js、CSS和HTML。我想使用 PiP 的 div 会逐秒更改。

4

1 回答 1

5

不,画中画仅适用于 <video>。

您可以做的是在 <video> 中流式传输 <canvas> 并在那里使用 PiP。
您现在可以在此 <canvas> 中绘制任何您想要的内容,甚至可以重现 HTML 内容

const target = document.getElementById('target');
const source = document.createElement('canvas');
const ctx = source.getContext('2d');
ctx.font = "50px Arial";
ctx.textAlign = "center";
ctx.textBaseline = "middle";
anim();

const stream = source.captureStream();
target.srcObject = stream;

const btn = document.getElementById('btn');
if( target.requestPictureInPicture ) {
  btn.onclick = e => target.requestPictureInPicture();
}
else {
  btn.disabled = true;
}

function anim() {
  ctx.fillStyle = "white";
  ctx.fillRect( 0, 0, source.width, source.height );
  ctx.fillStyle = "black";
  ctx.fillText( new Date().toTimeString().split(' ')[0], source.width / 2, source.height / 2 );
  requestAnimationFrame( anim );
}
<video id="target" controls muted autoplay></video>
<button id="btn">request PiP</button>

于 2020-04-19T08:05:12.513 回答