前端实现画中画(Picture-in-Picture,PiP)效果

前端实现画中画(Picture-in-Picture,PiP)效果

精选文章moguli202025-06-07 17:06:132A+A-

原生 API 实现

现代浏览器(如 Chrome、Firefox 等)支持原生的画中画 API,你能直接使用 JavaScript 调用该 API 来实现画中画效果。以下是一个简单示例:


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Picture-in-Picture Example</title>
    <script src="https://cdn.tailwindcss.com"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css" rel="stylesheet">
</head>

<body class="flex flex-col items-center justify-center h-screen bg-gray-100">
    <video id="video" width="640" height="360" controls class="shadow-md rounded-md">
        <source src="https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" type="video/mp4">
        Your browser does not support the video tag.
    </video>
    <button id="pipButton" class="mt-4 px-4 py-2 bg-blue-500 text-white rounded-md hover:bg-blue-600 focus:outline-none focus:ring focus:ring-blue-300">
        Enable Picture-in-Picture
    </button>

    <script>
        const video = document.getElementById('video');
        const pipButton = document.getElementById('pipButton');

        pipButton.addEventListener('click', async () => {
            try {
                if (document.pictureInPictureElement) {
                    await document.exitPictureInPicture();
                } else {
                    await video.requestPictureInPicture();
                }
            } catch (error) {
                console.error('Error:', error);
            }
        });
    </script>
</body>

</html>
    

此示例运用了 HTML5 的 <video> 标签来播放视频,并且借助 JavaScript 调用 requestPictureInPicture() 方法开启画中画模式。

第三方库实现

若你需要更丰富的功能和更好的兼容性,可使用第三方库,像 plyr。plyr 是一个轻量级的 HTML5 视频和音频播放器,它对画中画功能提供了良好的支持。以下是使用 plyr 实现画中画效果的示例:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Picture-in-Picture with Plyr</title>
    <link rel="stylesheet" href="https://cdn.plyr.io/3.7.8/plyr.css" />
    <script src="https://cdn.plyr.io/3.7.8/plyr.js"></script>
</head>

<body>
    <video id="player" playsinline controls>
        <source src="https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" type="video/mp4">
    </video>

    <script>
        const player = new Plyr('#player');
    </script>
</body>

</html>

在这个示例中,你只需引入 plyr 的 CSS 和 JavaScript 文件,然后初始化一个 Plyr 实例,plyr 会自动为视频播放器添加画中画按钮。

点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2