Html5视频播放器画中画播放(小窗播放)实现多任务处理

Html5视频播放器画中画播放(小窗播放)实现多任务处理,通常也称为小窗播放,它的作用主要体现在以下几个方面,极大地提升了用户体验和多任务处理的效率:

视频画中画播放功能-提升多任务处理效率

视频画中画播放效果(截图)注意右下角'画中画'按钮

视频画中画播放功能-增强用户粘性

视频画中画播放(截图)注意右下角小窗播放画面

视频画中画播放功能-优化设备使用场景

视频画中画播放(截图)注意右下角小窗播放画面

1.代码调用(保利威代码实例)

<div id="player"></div>
<script src="//player.polyv.net/resp/vod-player/latest/player.js"></script>
<script>
  var player = polyvPlayer({
  wrap: '#player',
  width: 800,
  height: 533,
  pictureInPicture:true, pictureInPictureLevel:2,// 是否在控制栏显示画中画按钮
  vid: '88083abbf5bcf1356e05d39666be527a_8', 
  playsafe:'81814fed-bdd0-4506-bec1-ebc8093148c5-hfevwsfxcsbcocx', 
  //playsafeUrl:'https://myDomain.com/token', 
  ts:'1568131545000',
  sign:'88313661ba7ded642c7b557b0a364b4b'
  });
</script>

2.视频画中画播放、小窗播放实现多任务处理

01. 提升多任务处理效果

这是画中画最核心的作用。边看视频边浏览其他内容: 例如,一边看教程视频学习,一边在文档或网页上实践;不中断观看体验: 当用户需要暂时离开视频应用去回复消息、查看地图或处理其他事情时,视频不会暂停或关闭,而是以小窗口的形式继续播放,保证了观看的连贯性。


02.增强用户粘性

减少跳出率: 用户不再需要为了其他任务而完全退出视频应用,从而降低了用户流失到其他应用的概率。延长观看时长: 即使在进行其他操作时,视频也能持续播放,增加了用户在平台上的总观看时长。


03.优化设备使用场景

充分利用屏幕空间: 小窗模式可以更好地利用屏幕的边角空间,使得视频内容在后台也能被看到。


04.提升用户自由度

个性化观看体验: 用户可以根据自己的需求,随时调整小窗的大小和位置,使得观看体验更加个性化和灵活。

视频平台的画中画效果是为了满足用户日益增长的多任务处理需求而生,它让视频观看变得更加灵活、高效,也让用户能够更充分地利用碎片化时间。

3.原生html5代码

主要优点:

  • 用户体验好: 视频可以在独立的、浮动的窗口中播放,即便用户切换到其他标签页或应用程序。

  • 浏览器原生支持: 性能优化由浏览器处理。

实现步骤:

  1. 获取视频元素: 首先需要一个 <video> 元素。

  2. 监听用户交互: 通常会有一个按钮让用户触发小窗模式。

  3. 请求画中画模式: 当用户点击按钮时,调用视频元素的 requestPictureInPicture() 方法。

  4. 处理画中画事件: 监听 enterpictureinpictureleavepictureinpicture 事件,以便在进入/退出画中画模式时更新 UI。

<video id="myVideo" src="your_video.mp4" controls width="640" height="360"></video>
<button id="pipButton">小窗播放</button>

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

    // 检查浏览器是否支持画中画
    if ('pictureInPictureEnabled' in document) {
        pipButton.addEventListener('click', () => {
            if (document.pictureInPictureElement) {
                // 如果已经在画中画模式,则退出
                document.exitPictureInPicture()
                    .catch(error => console.error('退出画中画失败:', error));
            } else {
                // 请求进入画中画模式
                video.requestPictureInPicture()
                    .catch(error => console.error('进入画中画失败:', error));
            }
        });

        // 监听画中画模式的进入和退出
        video.addEventListener('enterpictureinpicture', () => {
            console.log('视频已进入画中画模式');
            pipButton.textContent = '退出小窗';
        });

        video.addEventListener('leavepictureinpicture', () => {
            console.log('视频已退出画中画模式');
            pipButton.textContent = '小窗播放';
        });
    } else {
        pipButton.disabled = true;
        pipButton.textContent = '您的浏览器不支持小窗';
    }
</script>
<style>
    body {
        margin: 0;
        height: 200vh; /* 模拟页面滚动 */
    }
    #videoWrapper {
        position: relative; /* 初始位置 */
        width: 640px;
        height: 360px;
        background-color: black;
        overflow: hidden; /* 确保视频内容不溢出 */
    }
    #myVideo {
        width: 100%;
        height: 100%;
        object-fit: contain; /* 保持视频比例 */
    }

    /* 小窗模式样式 */
    .mini-player #videoWrapper {
        position: fixed;
        bottom: 20px;
        right: 20px;
        width: 320px; /* 小窗宽度 */
        height: 180px; /* 小窗高度 */
        z-index: 9999; /* 确保在其他内容之上 */
        border: 1px solid #ccc;
        box-shadow: 0 0 10px rgba(0,0,0,0.5);
        transition: all 0.3s ease-in-out; /* 平滑过渡 */
    }
    .mini-player #myVideo {
        /* 在小窗模式下可能需要调整控件显示或隐藏 */
    }
</style>

<div id="videoWrapper">
    <video id="myVideo" src="your_video.mp4" controls></video>
    <button id="toggleMiniPlayer" style="position: absolute; top: 10px; right: 10px;">小窗</button>
</div>

<p style="margin-top: 400px;">这里是页面的其他内容,可以滚动。</p>

<script>
    const videoWrapper = document.getElementById('videoWrapper');
    const toggleMiniPlayerBtn = document.getElementById('toggleMiniPlayer');
    const myVideo = document.getElementById('myVideo');

    let isMiniPlayer = false;

    toggleMiniPlayerBtn.addEventListener('click', () => {
        isMiniPlayer = !isMiniPlayer;
        if (isMiniPlayer) {
            document.body.classList.add('mini-player');
            toggleMiniPlayerBtn.textContent = '退出小窗';
            // 可以根据需要在此处控制视频的播放/暂停
            // myVideo.play();
        } else {
            document.body.classList.remove('mini-player');
            toggleMiniPlayerBtn.textContent = '小窗';
            // myVideo.play(); // 退出小窗后可能希望继续播放
        }
    });

    // 拖拽功能(简化版,仅供参考)
    let isDragging = false;
    let offsetX, offsetY;

    videoWrapper.addEventListener('mousedown', (e) => {
        if (isMiniPlayer && e.target !== myVideo && e.target !== toggleMiniPlayerBtn) {
            isDragging = true;
            offsetX = e.clientX - videoWrapper.getBoundingClientRect().left;
            offsetY = e.clientY - videoWrapper.getBoundingClientRect().top;
            videoWrapper.style.cursor = 'grabbing';
        }
    });

    document.addEventListener('mousemove', (e) => {
        if (isDragging) {
            videoWrapper.style.left = (e.clientX - offsetX) + 'px';
            videoWrapper.style.top = (e.clientY - offsetY) + 'px';
        }
    });

    document.addEventListener('mouseup', () => {
        isDragging = false;
        videoWrapper.style.cursor = 'grab';
    });
</script>

 我的热门文章汇总:

我的在线教育原创文章汇总:

我的谷歌浏览器相关文章汇总:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值