ピクチャー イン ピクチャーの未来

François Beaufort
François Beaufort

Document Picture-in-Picture API の登場以前は、HTML の <video> 要素をピクチャー イン ピクチャー ウィンドウに配置することしかできませんでした。この新しい API を使用すると、任意の HTML コンテンツを入力できる常時表示ウィンドウを開くことができます。パソコンで Chrome 111 以降、オリジン トライアルとしてご利用いただけます。

Sintel の予告編動画を再生するピクチャー イン ピクチャー ウィンドウ。
Document Picture-in-Picture API で作成されたピクチャー イン ピクチャー ウィンドウ(デモ)。

新しい 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);
  });
}

詳しくは、<動画> だけでなく、すべての要素のピクチャー イン ピクチャーをご確認ください。

この段階では、デベロッパーからのフィードバックは非常に重要であるため、提案や質問を GitHub で問題を報告してください。

ヒーロー画像 by Jakob Owens