苹果CMS教程

苹果CMSV10整合DPLAYER播放器,增加记忆+P2P播放+自动下一集

2024-08-16 人阅读

本文介绍如何为苹果CMS V10整合DPlayer播放器,并加入记忆播放、P2P播放加速以及自动播放下一集等功能。通过修改苹果CMS V10播放器文件,可以在原有播放页面基础上增加更加丰富的视频播放功能。

播放器主要功能

  • DPlayer播放器:使用DPlayer作为视频播放界面。

  • 记忆播放:自动记录当前视频播放进度,下次打开相同播放地址时可以继续播放。

  • P2P播放:通过P2P相关配置实现视频播放加速。

  • 自动下一集:当前视频播放结束后,如果存在下一集地址,则自动跳转播放。

  • HLS支持:通过HLS.js处理M3U8视频播放。

  • FLV支持:引入FLV.js,为相关视频格式提供播放支持。

苹果CMS V10 DPlayer播放器代码

下面是完整的播放器代码,可以根据自己的服务器环境以及播放器资源地址进行调整。

<html>
<head>
<title>dplayer播放器p2p加速+记忆播放</title>
<meta http-equiv="content-type" content="text/html;charset=UTF-8"/>
<meta http-equiv="content-language" content="zh-CN"/>
<meta http-equiv="X-UA-Compatible" content="chrome=1"/>
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="expires" content="0"/>
<meta name="referrer" content="never"/>
<meta name="renderer" content="webkit"/>
<meta name="msapplication-tap-highlight" content="no"/>
<meta name="HandheldFriendly" content="true"/>
<meta name="x5-page-mode" content="app"/>
<meta name="Viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0"/>
<link rel="stylesheet" href="//www.seeso.cc/dplayerp2p/DPlayer.min.css" type="text/css"/>
<style type="text/css">
body,html{width:100%;height:100%;background:#000;padding:0;margin:0;overflow-x:hidden;overflow-y:hidden}
*{margin:0;border:0;padding:0;text-decoration:none}
#stats{position:fixed;top:5px;left:8px;font-size:12px;color:#fdfdfd;text-shadow:1px 1px 1px #000, 1px 1px 1px #000}
#dplayer{position:inherit}
</style>
</head>
<body style="background:#000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" oncontextmenu=window.event.returnValue=false>
<div id="dplayer"></div>
<div id="stats"></div>

<script language="Javascript">
document.oncontextmenu=new Function("event.returnValue=false");
document.onselectstart=new Function("event.returnValue=false");
</script>

<script type="text/javascript" src="//www.seeso.cc/dplayerp2p/hls.min.js"></script>
<script type="text/javascript" src="//www.seeso.cc/dplayerp2p/flv.min.js"></script>
<script type="text/javascript" src="//www.seeso.cc/dplayerp2p/DPlayer.min.js"></script>
<script type="text/javascript" src="//www.seeso.cc/dplayerp2p/jquery.min.js"></script>
<script type="text/javascript" src="//www.seeso.cc/dplayerp2p/p2p.js"></script>

<script>
var webdata = {
    set:function(key,val){
        window.sessionStorage.setItem(key,val);
    },
    get:function(key){
        return window.sessionStorage.getItem(key);
    },
    del:function(key){
        window.sessionStorage.removeItem(key);
    },
    clear:function(key){
        window.sessionStorage.clear();
    }
};

var dp = new DPlayer({
    autoplay: true,
    container: document.getElementById('dplayer'),
    video: {
        url: parent.MacPlayer.PlayUrl,
        type: 'hls',
        pic: 'https://www.seeso.cc/webp2p/loading_wap.jpg'
    },
    volume: 1.0,
    preload: 'auto',
    screenshot: true,
    theme: '#28FF28',
    hlsjsConfig: {
        p2pConfig: {
            logLevel: true,
            live: false,
            announce: "https://tracker.cdnbye.com:8090/v1"
        }
    }
});

dp.seek(webdata.get('pay'+parent.MacPlayer.PlayUrl));

setInterval(function(){
    webdata.set('pay'+parent.MacPlayer.PlayUrl,dp.video.currentTime);
},1000);

var _peerId = '';
var _peerNum = 0;
var _totalP2PDownloaded = 0;
var _totalP2PUploaded = 0;

dp.on('stats', function (stats) {
    _totalP2PDownloaded = stats.totalP2PDownloaded;
    _totalP2PUploaded = stats.totalP2PUploaded;
    updateStats();
});

dp.on('peerId', function (peerId) {
    _peerId = peerId;
});

dp.on('peers', function (peers) {
    _peerNum = peers.length;
    updateStats();
});

dp.on('ended', function (){
    if(parent.MacPlayer.PlayLinkNext!=''){
        top.location.href = parent.MacPlayer.PlayLinkNext;
    }
});

function updateStats() {
    var text = 'P2P已开启 共享'
        + (_totalP2PUploaded/1024).toFixed(2)
        + 'MB 已加速'
        + (_totalP2PDownloaded/1024).toFixed(2)
        + 'MB 此片有 '
        + _peerNum
        + ' 位影迷正在观看';

    document.getElementById('stats').innerText = text;
}
</script>

<span style="display: none;">
    <script src="https://s19.cnzz.com/z_stat.php?id=1275012176&web_id=1275012176" language="JavaScript"></script>
</span>

</body>
</html>

播放器代码说明

该播放器通过 parent.MacPlayer.PlayUrl 获取苹果CMS当前视频播放地址,因此通常用于苹果CMS播放器页面中。

播放结束后,代码会检测 parent.MacPlayer.PlayLinkNext 是否存在下一集地址。如果存在,则自动跳转到下一集,实现连续播放效果。

记忆播放功能

代码通过浏览器的 sessionStorage 保存当前视频播放进度,并使用播放地址作为数据索引:

webdata.set('pay'+parent.MacPlayer.PlayUrl,dp.video.currentTime);

播放器初始化时再读取之前保存的时间:

dp.seek(webdata.get('pay'+parent.MacPlayer.PlayUrl));

因此,同一个浏览器会话中再次打开相同播放地址时,可以恢复之前记录的播放位置。由于使用的是 sessionStorage,实际保存周期和浏览器会话有关。

P2P播放加速

播放器通过HLS.js以及P2P相关配置启用P2P播放功能,并设置了P2P Tracker地址:

hlsjsConfig: {
    p2pConfig: {
        logLevel: true,
        live: false,
        announce: "https://tracker.cdnbye.com:8090/v1"
    }
}

需要注意,P2P实际加速效果取决于视频格式、网络环境、Tracker服务以及同时观看该资源的用户数量,并不能保证所有视频都能够获得明显的加速效果。

自动播放下一集

代码监听DPlayer的 ended 事件,当当前视频播放完成后,会检测苹果CMS播放器提供的下一集地址:

dp.on('ended', function (){
    if(parent.MacPlayer.PlayLinkNext!=''){
        top.location.href = parent.MacPlayer.PlayLinkNext;
    }
});

如果 parent.MacPlayer.PlayLinkNext 存在有效地址,播放器就会自动跳转到下一集。

远程JS文件说明

该播放器引用了DPlayer、HLS.js、FLV.js、jQuery以及P2P相关JS文件。部分资源可以进行本地化部署,但远程代码可能会持续更新。

如果选择将JS文件下载到自己的网站,建议定期检查上游版本更新情况;如果希望直接使用最新版本,则需要根据实际情况决定是否继续使用远程JS资源。

安装方法

安装前建议先备份原来的播放器文件,避免修改后出现播放异常时无法恢复。

第一步:打开苹果CMS网站根目录中的播放器目录:

static/player/

第二步:找到播放器文件:

static/player/dplayer.html

第三步:将原有 dplayer.html 文件内容备份,然后使用上面的完整代码替换原文件内容并保存。

第四步:进入网站播放页面进行测试,重点检查视频播放、记忆播放、P2P状态以及自动下一集功能是否正常。

完整压缩包安装

如果不方便手动替换播放器代码,也可以使用对应的完整播放器压缩包。解压后将播放器文件放入苹果CMS的:

static/player/

安装完成后建议清理网站缓存和浏览器缓存,再重新打开播放页面进行测试。

使用注意事项

  • 安装前建议备份原有 static/player/dplayer.html 文件。

  • 远程JS资源依赖第三方服务器,第三方资源的可用性可能发生变化。

  • 如果将远程JS文件本地化,需要自行关注后续版本更新。

  • P2P播放效果受到用户数量、网络环境及相关服务状态影响。

  • 记忆播放使用浏览器存储机制,不属于服务器端保存播放进度。

  • 如果修改苹果CMS播放器核心变量或模板结构,可能需要同步调整播放器代码。

总结

通过整合DPlayer,苹果CMS V10可以实现更加丰富的视频播放功能,包括记忆播放、P2P播放加速和自动下一集等。安装方式比较简单,主要修改 static/player/dplayer.html 文件即可。

不过,该方案依赖多个JavaScript资源以及P2P相关服务,实际使用时应根据自身服务器、视频格式和网络环境进行测试,并定期检查第三方资源的可用性。