Document Picture-in-Picture API が登場する前は、ピクチャー イン ピクチャー ウィンドウに配置できるのは HTML の <video>
要素のみでした。この新しい API を使用すると、任意の HTML コンテンツを表示する「常に表示状態のウィンドウ」を開くことができます。この機能は、パソコン版 Chrome 111 以降、オリジン トライアルとしてご利用いただけます。
新しい API は、既存の <video>
用 Picture-in-Picture API よりもはるかに多くの機能を提供します。たとえば、字幕、再生リスト、時間スクラブ、動画に高評価 / 低評価を付けるなどのカスタム コントロールとインプットを提供することで、ピクチャー イン ピクチャーの動画プレーヤー エクスペリエンスを向上させることができます。
ピクチャー イン ピクチャーでドキュメント全体を作成することで、ビデオ会議用ウェブアプリで複数の動画ストリームを 1 つのピクチャー イン ピクチャー ウィンドウにまとめることができます。キャンバスのハッキングに頼る必要はありません。また、メッセージの送信、他のユーザーのミュート、挙手などのカスタム コントロールも利用できます。
次のコード スニペットは、カスタム動画プレーヤーでピクチャー イン ピクチャーを切り替える方法を示しています。
async function togglePictureInPicture() {
// Close Picture-in-Picture window if any.
if (documentPictureInPicture.window) {
documentPictureInPicture.window.close();
return;
}
// Open a Picture-in-Picture window.
const pipWindow = await documentPictureInPicture.requestWindow({
initialAspectRatio: 640 / 360,
copyStyleSheets: true,
});
// Move video to the Picture-in-Picture window.
const video = document.querySelector("#video");
pipWindow.document.body.append(video);
// Listen for the PiP closing event to move the video back.
pipWindow.addEventListener("unload", (event) => {
const videoContainer = document.querySelector("#videoContainer");
const pipVideo = event.target.querySelector("#video");
videoContainer.append(pipVideo);
});
}
詳しくは、<video> だけでなく、あらゆる要素のピクチャー イン ピクチャーについての記事をご覧ください。
この段階ではデベロッパーの皆様からのフィードバックが非常に重要となりますので、ご提案やご質問がございましたら、GitHub で問題を報告してください。
ヒーロー画像作成者: Jakob Owens