精品软件与实用教程
苹果CMS设置 Dplayer播放器 自动播放下一集
Dplayer播放器 在苹果cms的配置中,默认的播放器不会自动播放,也没有记忆播放功能,需要添加设置播放页面的选项,手工修改Dplayer的代码。目前Dplayer播放器在网络上比较流行,且性能与功能方面比较出众,下面看一看如何配置 Dplayer播放器。
Dplayer是谁?
Dplayer播放器 是一款可爱的 HTML5 弹幕视频播放器,可帮助人们轻松构建视频和弹幕。
Dplayer播放器 网站地址:https://dplayer.js.org/
Github项目地址:https://github.com/DIYgod/DPlayer
整合 Dplayer播放器 增加记忆,P2P播放和自动下一集的 Dplayer播放器 代码
替换下面的dplayer播放器代码,替换目录苹果cms系统static/player/dplayer.html 全部内容替换即可。FLV支持 它需要 flv.js 库,并且应该在 DPlayer.min.js 之前加载。DPlayer 是一个支持弹幕的 HTML5 视频播放器。支持 Bilibili 视频和 danmaku,实时视频(HTTP Live Streaming,M3U8格式)以及 FLV 格式。
<!DOCTYPE html>
<html>
<head>
<title>dplayer 1.27.0 播放器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 content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" id="viewport" name="viewport">
<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}
#playerCnt{width:100%;height:100%;}
</style>
<link rel="stylesheet" href="/static/player/dplayer/DPlayer.min.css">
<script type="text/javascript" src="/static/player/dplayer/flv.min.js"></script>
<script type="text/javascript" src="/static/player/dplayer/hls.min.js"></script>
<script type="text/javascript" src="/static/player/dplayer/dash.all.min.js"></script>
<script type="text/javascript" src="/static/player/dplayer/webtorrent.min.js"></script>
<script type="text/javascript" src="/static/player/dplayer/DPlayer.min.js"></script>
</head>
<body style="background:#000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" oncontextmenu=window.event.returnValue=false>
<div id="playerCnt"></div>
<div id="stats"></div>
<script language="Javascript">
document.oncontextmenu=new Function("event.returnValue=false");
document.onselectstart=new Function("event.returnValue=false");
</script>
<script src="https://cdn.jsdelivr.net/npm/cdnbye@latest"></script>
<script>
var type='normal';
var live=false;
if(parent.MacPlayer.PlayUrl.indexOf('.m3u8')>-1){
type='hls';
live=true;
}
else if(parent.MacPlayer.PlayUrl.indexOf('magnet:')>-1){
type='webtorrent';
}
else if(parent.MacPlayer.PlayUrl.indexOf('.flv')>-1){
type='flv';
}
else if(parent.MacPlayer.PlayUrl.indexOf('.mpd')>-1){
type='dash';
}
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 _peerId = '', _peerNum = 0, _totalP2PDownloaded = 0, _totalP2PUploaded = 0;
var dp = new DPlayer({
container: document.getElementById('playerCnt'),
autoplay: true, //自动播放视频,不支持移动浏览器
volume: 1.0, //声音
preload: 'auto',//预加载的方式可以是'none''metadata''auto',默认值:'auto'
hotkey: true, //绑定热键,包括左右键和空格,默认值:true
screenshot: true, //截屏
theme: '#28FF28',//主题颜色
video: {
url: parent.MacPlayer.PlayUrl,//播放地址
type: 'customHls', //播放协议
pic: './loading.png', // 视频封面
customType: {
'customHls': function (video, player) {
const hls = new Hls({
debug: false,
// Other hlsjsConfig options provided by hls.js
p2pConfig: {
logLevel: false,
live: false, // 如果是直播设为true
// Other p2pConfig options provided by CDNBye
getStats: function (totalP2PDownloaded, totalP2PUploaded, totalHTTPDownloaded) {
console.warn(totalP2PDownloaded ${totalP2PDownloaded} totalHTTPDownloaded ${totalHTTPDownloaded}
);
_totalP2PDownloaded = totalP2PDownloaded;
_totalP2PUploaded = totalP2PUploaded;
updateStats();
},
getPeerId: function (peerId) {
_peerId = peerId;
},
getPeersInfo: function (peers) {
_peerNum = peers.length;
updateStats();
},
}
});
hls.loadSource(video.src);
hls.attachMedia(video);
}
}
},
contextmenu: [ //弹幕设置
]
});
dp.seek(webdata.get('pay'+parent.MacPlayer.PlayUrl));
setInterval(function(){
webdata.set('pay'+parent.MacPlayer.PlayUrl,dp.video.currentTime);
},1000);
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>
</body>
</html>
Dplayer播放选项
var dp = new DPlayer({ element: document.getElementById('player1'), // 可选,player元素 autoplay: false, // 可选,自动播放视频,不支持移动浏览器 theme: '#FADFA3', // 可选,主题颜色,默认: #b7daff loop: true, // 可选,循环播放音乐,默认:true lang: 'zh', // 可选,语言,zh'用于中文,
'用于英语,默认:Navigator language screenshot: true, // 可选,启用截图功能,默认值:false,注意:如果设置为 true,视频和视频截图必须启用跨域 hotkey: true, // 可选,绑定热键,包括左右键和空格,默认值:true preload: 'auto', // 可选,预加载的方式可以是'none''metadata''auto',默认 值:'auto' video: { // 必需,视频信息 url: '若能绽放光芒.mp4', // 必填,视频网址 pic: '若能绽放光芒.png' // 可选,视频截图 }, danmaku: { // 可选,显示弹幕,忽略此选项以隐藏弹幕 id: '9E2E3368B56CDBB4', // 必需,弹幕 id,注意:它必须是唯一的,不能在你的新播放器 中使用这些:https://api.prprpr.me/dplayer/list
api: 'https://api.prprpr.me/dplayer/', // 必需,弹幕 api token: 'tokendemo', // 可选,api 的弹幕令牌 maximum: 1000, // 可选,最大数量的弹幕 addition: ['https://api.prprpr.me/dplayer/bilibili?aid=4157142'] // 可选的,额外的弹幕,参见:Bilibili弹幕支持
} });
事件绑定
dp.on(event, handler)事件: play: DPlayer 开始播放时触发 pause: DPlayer 暂停时触发 canplay: 在有足够的数据可以播放时触发 playing: DPlayer 播放时定期触发 ended: DPlayer 结束时触发 error: 发生错误时触发 HLS支持(实时视频,M3U8格式) 它需要 hls.js 库,并且应该在 DPlayer.min.js 之前加载。实时弹幕尚不支持。
另外一种播放器代码:
记忆播放可通过url传参设置,默认开启无需设置,当传nostorage=1时关闭(解析域名设置为/dplayer.php/?nostorage=1&url=)
播放器中的设置按钮改为倍速播放按钮,去掉页面全屏按钮
手机端添加双击暂时/播放功能,添加左右划屏快进\快退功能,全屏后默认横屏。
支持格式:m3u8、mp4
播放记忆
P2P加速(去除在视频中P2P信息)
自动播放下一集(仅电脑端)
去掉弹幕(需要的自行去掉注释)
手机增加引导点击播放图片
使用方法
将文件上传到自己的网站(比如文件名叫dplayer.php,上传到根目录)
在苹果cms后台播放器设置中开启解析,解析域名设置为/dplayer.php/?url=
dplayer代码如下:
<!DOCTYPE html> <html> <head> <title>dplayer增加记忆+P2P播放</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><!-- IE内核 强制使用最新的引擎渲染网页 --> <meta name="renderer" content="webkit"> <!-- 启用360浏览器的极速模式(webkit) --> <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0 ,maximum-scale=1.0, user-scalable=no"><!-- 手机H5兼容模式 --> <meta name="x5-fullscreen" content="true" ><meta name="x5-page-mode" content="app" > <!-- X5 全屏处理 --> <meta name="full-screen" content="yes"><meta name="browsermode" content="application"> <!-- UC 全屏应用模式 --> <meta name=”apple-mobile-web-app-capable” content=”yes”> <meta name=”apple-mobile-web-app-status-bar-style” content=”black-translucent” /> <!-- 苹果全屏应用模式 --> <link rel="stylesheet" /> </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> <div id="play_icon"></div> <script src="https://cdn.jsdelivr.net/npm/cdnbye@latest"></script> <script src="https://cdn.jsdelivr.net/npm/dplayer@latest"></script> <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:10px;font-size:10px;color:#fdfdfd;z-index:20719029;text-shadow:1px 1px 1px #000, 1px 1px 1px #000} #dplayer{position:inherit} .dplayer-menu.dplayer-menu-show{display:none} #play_icon { background-color: black; height:100%; background-image: url("data:image/gif;base64,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"); background-size: contain; background-repeat: no-repeat; background-position: center; display:flex; align-items: center; position: absolute; top: 0px; left: 0px; width: 100%; z-index: 999; } #play_icon img { width:10%; margin-left: 45%; } </style> <script> var url = '<?php echo($_REQUEST['url']);?>'; var url = '<?php echo($_REQUEST['url']);?>'; var nostorage = '<?php echo($_REQUEST['nostorage']);?>'; var isWap = navigator.userAgent.match(/iPad|iPhone|iPod|Baidu/i) != null; //百度浏览器和苹果移动端不使用P2P功能 var isMobile = !!navigator.userAgent.match(/AppleWebKit.*Mobile.*/); //是否手机端 if(!isWap){ if(url.indexOf(".m3u8") > 0){ var _peerId = '', _peerNum = 0, _totalP2PDownloaded = 0, _totalP2PUploaded = 0; var type = 'customHls'; } else { var type = 'normal'; //MP4格式P2P兼容性不好,不调用P2P。 } var dp = new DPlayer({ container: document.getElementById('dplayer'), autoplay: false, hotkey: true, // 移动端全屏时向右划动快进,向左划动快退。 airplay: true, logo: '', video: { url:url, pic: '', //图片地址。 type: type, customType: { 'customHls': function (video, player) { const hls = new Hls({ debug: false, p2pConfig: { logLevel: true, live: false, // 如果是直播设为true } }); hls.loadSource(video.src); hls.attachMedia(video); hls.p2pEngine.on('stats', function (stats) { _totalP2PDownloaded = stats.totalP2PDownloaded; _totalP2PUploaded = stats.totalP2PUploaded; //updateStats(); }).on('peerId', function (peerId) { _peerId = peerId; }).on('peers', function (peers) { _peerNum = peers.length; //updateStats(); }); } } }, /*danmaku: { id: 'E3368B56CDBB4IU', //弹幕代码,可定义其他的ID,请修改; api: 'https://dplayer.moerats.com/', bottom: '25%', unlimited: false, }, */ contextmenu: [ ], highlight: [ { text: '提示:点击下方状态栏可以发送字幕', time: 360, }, { text: '警告:请不要相信视频中任何广告与字幕', time: 1200, }, ], }); 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(); } }; if (!nostorage) { dp.seek(webdata.get('vod'+url)); setInterval(function(){ webdata.set('vod'+url,dp.video.currentTime); },1000); } dp.on('ended',function() { dp.notice("视频播放已结束"); //可以替换成下一集调用等代码 if(parent.MacPlayer.PlayLinkNext!=''){ top.location.href = parent.MacPlayer.PlayLinkNext; } }); if (isMobile) { //全屏事件 dp.on('fullscreen',function() { screen.orientation.lock("landscape"); }); //退出全屏事件 dp.on('fullscreen_cancel',function() { screen.orientation.unlock(); }); //左右滑动快进、后退 let touchPointX = 0; let touchPointY = 0; let currentTime = 0; let isSeeked = false; document.addEventListener('touchstart', e => { let touch = e.touches[0]; touchPointX = touch.clientX; // 获取触摸的初始位置 touchPointY = touch.clientY; currentTime = dp.video.currentTime; // 获得当前播放时间 }); document.addEventListener('touchmove', e => { let touch = e.touches[0]; let diffX = touch.clientX - touchPointX; // 通过当前位置与初始位置之差计算改变的距离 let diffY = touch.clientY - touchPointY; let totalTime = dp.video.duration; if (Math.abs(diffX) > Math.abs(diffY) && Math.abs(diffX) > 5) { let seekTime = parseInt(currentTime + diffX); // 计算出快进时间 if (seekTime < 0) { seekTime = 0; } if (seekTime > totalTime) { seekTime = totalTime; } dp.seek(seekTime); isSeeked = true; } let notice = document.getElementsByClassName("dplayer-notice"); if (notice.length > 0) { notice[0].style.display = "none"; } }); document.addEventListener('touchend', e => { if (isSeeked) { let touch = e.changedTouches[0]; let diffX = touch.clientX - touchPointX; let notice = document.getElementsByClassName("dplayer-notice"); if (notice.length > 0) { notice[0].style.display = "block"; } dp.notice((diffX>0?"快进":"快退") + parseInt(Math.abs(diffX)) + "秒", 2000); } isSeeked = false; }); } } else{ document.getElementById('dplayer').innerHTML='<video src="'+url+'" controls="controls" preload="preload" poster="" width="100%" height="100%"></video>'; } function updateStats() { var text = '七星P2P正在为您加速' + (_totalP2PDownloaded/1024).toFixed(2) + 'MB 已分享' + (_totalP2PUploaded/1024).toFixed(2) + 'MB' + ' 连接节点' + _peerNum + '个'; document.getElementById('stats').innerText = text ; } </script> <script> var video = document.getElementsByTagName('video')[0]; //添加引导点击播放图片 var img = new Image(); img.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAAsSAAALEgHS3X78AAAMWElEQVR42u1db0gjZxofJ2E1JiH/TGxMwDObP9L20wq93hW5WLLcIkpZrKCu0MUFu0TbL1KhcMdmuQ+F9NwPdi1dyy0WWlewfija4tHQZFl61yunn9aSmOzkAhOzGvOPTDImZPQ+rCnj6+RfTTKTZJ6PrzNx5vnN83ue93nf93maTk5OIAaLGEGQP/J4vCtcLrertbX1VRiGRTwez1DMzTiOu46Pj2PJZPJpJpPx4ji+ffny5X+enJwQTH3hJiYB4nQ6ZTwe71pra+ubAoHgjWIVX6rgOO7CMOzHZDL5A47jm93d3SEWEBIIAoFgVCgUviUSiUx0PEMsFrPF4/FvMAx7RDc4tAGCIEi/WCyekEqlQ0yijHA4vBaNRh9qNJrvGgIQFEWnZTLZdCl0RBAEFo/Hd8PhsOvo6Cju8Xh2I5FIPN89EolEqNVq9S0tLUKpVGoQCoV6DocjKIXWQqHQfbVafb8uAUFRdFqhUHx46dKljkLXplKpwOHh4Zbb7d5aXV3d+vTTT/fK8Qxms7ljeHi4R6fT9bS1tfU0NzcrC92TTqf3Dg4OPqoWMBUHBEGQ/vb29jt8Pv+1QiD4/X7H2tra+uzs7G41Xt5qteqHhoYGVSqVsRA4iUTi5/39/buVprKKAeJ0OmUKheJBIR/h9/s3bDbb+s2bN7fo9B1LS0s9JpNpUKVSDeS7LhqNfv38+fPblXL+FQHE5/PdUKvVn+XibIIgMJfLtTw1NfXI4XDEmeTUjUajcGFhYdRgMIzle34URW93dnZ+xWhAnE6nTCaTWeVy+UStAfFbgAkGgw9DodBsOa2lbIAgCKJTKpXruaKnYDD42GKxzJXLQVdLzGZzh8VimZHL5X/KFY0FAoFBjUbjZgwgHo/n9a6uru+pvqRUKhVYWVmx0O0jyuFjRkZGLFTOnyAIzOv1XtVqtT/RDgiKotNqtfqTXA57fHx8jun0VAqNffnllzO5HD+Kou9dNDy+ECC5wCAIAnvy5MlcX1/fOlSHYrfbB3t7e2eoGOGioMDlBiOVSgXu3bs3Wa9gQBAE9fX1rd+7d28ylUoFwL+p1epPUBSdrqqF5AIjkUjsDgwMvFsvFFUMhW1sbDzg8/n6clkKXC4wotHodiOBAUEQ5HA44gMDA+9Go9HtcllKSRbi8Xhe12q1/6Zy3mq12gI1sKAoaqFy9h6P5w+lRF9FA4IgiK6zs3MbdGTRaHRbIpFMQqxAkUhkUSwWXwEDHJ/Pd6XYeUpRlOV0OmVKpXIdBCORSOxev359hoXihVy/fn0mkUicSYxyOByBUqlcdzqdsrIBIpPJrOAMPJVKBRrNZxTrU8Doi8fjGWQymbUsgPh8vhtgboogCGx+fn6GBYMalPn5+RmCIDDyuFwun/D5fDcu5EOcTqdMp9P9D6Qqh8Nxt57nGeWaPBqNxjvgh+x2u3+XLxmZ10IUCsUDEAy/37/BglHc5NHv92+A/qQQdcF5oqp+cHEplUoFxsfH51h1Fyfj4+NzoD+Ry+UTCIL0lwxIe3v7HXBsZWXFwvqN0vzJysqKpRjd5gUERdFpcA08GAw+rkYK3Wg0Cnd2diZ3dnYmrVarvtZBuXnz5lYwGHxMHuPz+a/lmsVTOvV0Ou0n7w4hCAJ7//33x6qxuIRh2DI5N4QgyKNbt24t1rJlms3mjvn5+WWyP06n03uXLl1SFQSEKlf1yy+/LL7yyiuL1Xj4k5OT/4Jj9ZDO39nZmXz55ZcnAV2fS0DCFJPAaVAZU1NTj+h8GQ6HIzAajXcikchirdLY1NTUI3BuAur6HCAIgvSDM3KXy7XMFLoQi8VXPvjgg+Vnz57NGI1GYa05eJfLtQzO4MGICwZeeIIKWaa9nEajGbXZbOt2u32w1qyE4iOboATE6XTKwHmH3+/fYKozrUUaczgccXCyKJVKh8iJx18BEQgEo+AP2Gw2xjvRWqMxKp2Sdf9rlBWLxb4nn89IpVKBlpaWqlMCVZRVrNRKNHZ0dLRO3k4Ui8VsIpHo6q8W4nQ6ZeBhGb/f76i1SKZWaAzUrUgkMmVpCz719tfAm9bW1mo25mc6jVHpNotB08nJCRQMBv9BXvOgi64uSlm1RGMgbQWDwYdyufwWfOpU3iBffHh4WNPbPmuBxkAdZzGAm5qaOOBk0O121w0gTKUxUMdZDOBnz579Gbx4dXW17gBh2qSSSscIgvQ37e3t/UWpVP6NzLlcLtdI14OW24fkk2g0uv3555//vVpH6EDJZDIOcgY4EAj8FeZyuV3ki+Lx+C7UIEI3jYG65nK5XXBra+ur5MFwOOyCGkzoojFQ16elQ2AREI415BItHdEYqGsYhkUwGGF5PJ5dqIGlmjQG6prH4xnOLVAVqpDA0lj5hErXMKt6ZtEYC0gJNFYNp38OkIODA5aycgi4NZS1EJoF3KRQFUAUCoWQVT21PHnyZI61EAZINBrd/vjjj8eqkcLnsurOT1HVXks5ZyESiYSlLOjFFlaTyTRYSTCodA3jOH4mn6LVavWNDESWni5fvlzxkiCgrnEcd3GPj49j5MGWlpaGtBA66AnU9fHxcQxOJpNPyYNSqdTQaGBUg56oBNR1Mpl8ys1kMl7yoFAobBjKonuBCtR1JpPxwjiOnykLweFwBGazuaOegSAIAnM4HHclEskkXWCYzeYO8PwmjuPbsEaj+Rd48fDwcA9LT5UVKh1rNJrvYAiComCkpdPp6g6QakZPxQio4ywGXAiCIAzDfiQvVLW1tdUNIEzdKAfq+BSDFxPDZDL5A/mPzc3Nyno4cMkUegLFarXqwdqNWQzgU3PZBG8aGhoarFUgmEZPxeg2iwF7HIEGKXgcAYIgKB6PfwPS1tLSUg9LT+WVpaWlc00AyLqHSU7l3Pk3k8k0yNJTeYVKp2TdnzmnHg6HvwbPGfb19fVV80WLpaxaPLtuNBqFdrvdTh4Lh8NrUqn07XMWcvq1PQR/ZGFhYZSlp/IIlS5BnZ+r5IDjuJM8JyEIAjOZTIPVspJ8FkJ37umi1mGz2c6UScRx3MXj8brJ151boAqFQmdKPXA4HAHdVsKE3FM5rAPMXYG6pgRErVbfT6fTZ4rMGAyGsWolHMEauLVKT2Qxm80dBoNhjDyWTqf3qAotU1YDoipAEwwGHysUiplqmHbWIr/99ltHrVoEWQ4ODubAdhe5Kl/nrLmYSCT+A9bM+uKLL96t9bYTdMw73nnnnQeAbn/m8/m/p7o+5zag/f39u+DYyMiIpdaKvtDtyEdGRizF6LaghZzy+apYLH6bPMaWFS9eqMqPZ48/57on70a558+f3wa3T6pUqoFaq8JDh9jt9nMd3wiCwEKh0Gy++/IC0t3dHUJR9DY43tvbO1MP6flKidVq1ff29s5QWEzBdntFFeMHKz1A0Its8LVr18bYKqXn/cbm5uYymEAsRFVFWQhpAjMLLvM2NzcrNzY2HrBO/iwYGxsbD0AwTvvqzhbzG2y7ijJK1dpVQBAEaTQat9frvQqOi8XiKyiKNnzUhaKoBQQDgiDI6/VeLaXHYUnHEbRa7U8oir4HjqtUqoFIJLLYiPRlNBqFkUhkkaq7Doqi75Xa25BtClYGn0FrUzAIepGApLIUPp+v39zcXG6EkNhqteo3NzeXywnGb7aQQpbCNpb87Y0l2darJVIUo1uvZoVtTsyg5sTkeQrbvvviwja4z0NPCwsLo2BHAzAdwtgG92Tx+Xw31Gr1Z1QUxnRgskAYDIaxfM+Poujtzs7Or8r9/ysCSNZaXnrppc/A9RQqx2+z2dbp9jFLS0s9JpNpMJfDrqRVVAUQkm/pb29vvwMuB1M5f7/f71hbW1uv1jq61WrVDw0NDapUKiOVswYmvT/v7+/f1Wg031XymSoOCDk8VigUH5JbKeUD5/DwcMvtdm+trq5ulSsQMJvNHcPDwz06na6nra2tpxAIEPRid8jBwcFHFw1nGQcIGRiZTDadKxrLxdnxeHw3HA67jo6O4h6PZ7dQoTWJRCLUarX6lpYWoVQqNQiFQn0un5AregqFQverBQRtgJCpTCwWT4B7iemWcDi8Fo1GH1aamhgHCNn5CwSCUaFQ+BbYoaFaEovFbPF4/BsMwx5VylnXDCAgODwe71pra+ubAoHgjVJorRTBcdyFYdiPyWTyBxzHN+kGgbGA5KI2Ho93hcvldp3WtRUVCxSO467j4+NYMpl8mslkvDiOb9NFRcXK/wG7viMTqo7LKQAAAABJRU5ErkJggg=="; document.getElementById("play_icon").appendChild(img); video.setAttribute("playsinline", "true"); video.setAttribute("webkit-playsinline", "true"); video.setAttribute("x5-video-player-type", "h5"); video.setAttribute("x5-video-player-fullscreen", "false"); var state = 0; video.onplaying = function(){ var icon = document.getElementById("play_icon"); if (icon) { icon.remove() } state=1; }; video.onplay = function(){ var icon = document.getElementById("play_icon"); if (icon) { icon.remove() } state=1; }; video.onpause = function(){ state = 0; }; var playIcon = document.getElementById("play_icon"); if (playIcon.addEventListener) { playIcon.addEventListener('click', function(){ if(state==0){ video.play(); }else { video.pause(); } }, false); } document.addEventListener('dblclick', function(){ if(state==0){ video.play(); }else { video.pause(); } }, false); document.addEventListener("WeixinJSBridgeReady", function () { video.play(); }, false); //把设置按钮改为速播 var settingIcon = document.getElementsByClassName("dplayer-setting-icon")[0]; settingIcon.innerHTML="倍速"; settingIcon.style.outline="none"; settingIcon.style.color="white"; settingIcon.style.padding="0 5px"; var speedIcon = document.getElementsByClassName("dplayer-setting-speed")[0]; settingIcon.onclick = function(){ speedIcon.click(); //速度选择框为横向显示 document.getElementsByClassName("dplayer-setting-box-speed")[0].style.width = "300px"; var speendItems = document.getElementsByClassName("dplayer-setting-speed-item"); for (let i=0; i<speendItems.length; i++) { speendItems[i].style.display = "inline"; } }; //去掉页面全屏按钮 document.getElementsByClassName("dplayer-full-in-icon")[0].remove(); </script> </body> </html>