123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- <meta charset="UTF-8">
- <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}
- #video {
- position:inherit;
- }
-
- .total {position: absolute;top: 1px;left: 10px;color: #fff;font-size: 13px;}
-
- /* 移动设备自适应宽高 */
- @media only screen and (max-width: 650px) {
- #list {
- width: 100%;
- left: 0px;
- max-width: 100%;
- min-width: auto;
- }
- #video {
- height: 100% !important;
- width: 100% !important;
- }
- .total {position: absolute;top: 0px;left: 10px;color: #fff;font-size: 12px;}
- }
- #time {
- display: none;
- right: 10px;
- text-align: center;
- top: 3px;
- font-size: 12px;
- color: #fdfdfd;
- text-shadow: 1px 1px 1px #000, 1px 1px 1px #000;
- position: fixed;
- z-index: 2147483645;
- }
- .masked h4{
- display: block;
- /*渐变背景*/
- background-image: -webkit-linear-gradient(left, #3498db, #f47920 10%, #d71345 20%, #f7acbc 30%,
- #ffd400 40%, #3498db 50%, #f47920 60%, #d71345 70%, #f7acbc 80%, #ffd400 90%, #3498db);
- color: transparent; /*文字填充色为透明*/
- -webkit-text-fill-color: transparent;
- -webkit-background-clip: text; /*背景剪裁为文字,只将文字显示为背景*/
- background-size: 200% 100%; /*背景图片向水平方向扩大一倍,这样background-position才有移动与变化的空间*/
- /* 动画 */
- animation: masked-animation 4s infinite linear;
- }
- @keyframes masked-animation {
- 0% {
- background-position: 0 0; /*background-position 属性设置背景图像的起始位置。*/
- }
- 100% {
- background-position: -100% 0;
- }
- }
- </style>
- <div id="video"></div>
- <div class="total">
- <div class="masked">
- <h4><div id="stats"></div></h4>
- </div>
- </div>
- <script src="/web/player/p2phls/hls.min.js"></script>
- <script src="/web/player/p2phls/cbplayer2.js"></script>
- <script src="/web/player/p2phls/jquery.min.js"></script>
- <script>
- var _peerId = '', _peerNum = 0, _totalP2PDownloaded = 0, _totalP2PUploaded = 0;
- var m3u8url = document.location.href.split("url=")[1];
- var player = new CBPlayer({
- container: document.getElementById('video'),
- autoplay: true, //视频自动播放
- live: false, //开启直播模式
- lang: 'zh-cn', //语言
- hotkey: true, //开启热键,支持快进、快退、音量控制、播放暂停
- airplay: true, //在 Safari 中开启 AirPlay
- screenshot: false, //开启截图,如果开启,视频和视频封面需要允许跨域
- preload: 'auto', //视频预加载,可选值: 'none', 'metadata', 'auto'
- danmaku: true,
- video: {
- pic: "/web/player/p2phls/loading_pc.jpg",
- url: m3u8url||'https://vip.ffzyread1.com/20230601/13234_55ed2d56/index.m3u8',
- },
- pluginOptions: {
- hls: {
- //maxBufferSize: 0,
- //maxBufferLength: 10,
- //liveSyncDurationCount: 15,
- p2pConfig: {
- // logLevel: true,
- live: false,
- geoIpPreflight: false, //向在线IP数据库请求ASN等信息,从而获得更准确的调度,会延迟P2P启动时间。
- useHttpRange: false, //用于补足p2p下载超时的剩余部分数据
- sharePlaylist: true, //是否允许m3u8文件的P2P传输。
- diskCacheLimit: {"pc": 2500 * 1024 * 1024, "mobile": 1500 * 1024 * 1024}, //磁盘缓存的最大数据量,分为PC和mobile。
- memoryCacheLimit: {"pc": 600 * 1024 * 1024, "mobile": 300 * 1024 * 1024}, //内存缓存的最大数据量,分为PC和mobile。
- announce: "https://p2ptrakcer.bapy.top",
- wsSignalerAddr: 'wss://cd.swarmcloud.net',
- },
- webRTCConfig: {
- iceServers: [{
- urls: "stun:stun.l.google.com:19302"
- }, {
- urls: "stun:global.stun.twilio.com:3478?transport=udp"
- }, {
- urls: "stun:stun.cdnbye.com"
- }]
- }
- }
- },
- danmaku: {
- id: m3u8url||'https://vip.ffzyread1.com/20230601/13234_55ed2d56/index.m3u8',
- api: 'https://danmu.aip520.cn/v3/?id='
- }
- });
- player.on('stats', function (stats) {
- _totalP2PDownloaded = stats.totalP2PDownloaded;
- _totalP2PUploaded = stats.totalP2PUploaded;
- updateStats();
- })
- player.on('peerId', function (peerId) {
- _peerId = peerId;
- })
- player.on('peers', function (peers) {
- _peerNum = peers.length;
- updateStats();
- });
- //全屏
- player.on("fullscreen", function() {
- $("#time").show();
- });
- //退出全屏
- player.on("fullscreen_cancel", function() {
- $("#time").hide();
- });
- //移动浏览器video兼容
- $('body').find('video')
- .attr('playsinline', '')
- .attr('x5-playsinline', '')
- .attr('webkit-playsinline', '')
- .attr('x-webkit-airplay', 'allow')
-
- function updateStats() {
- var text = 'P2P开启 加速' + (_totalP2PDownloaded/1024).toFixed(2)
- + 'MB 分享' + (_totalP2PUploaded/1024).toFixed(2) + 'MB' + ' 连接节点' + _peerNum + '个';
- document.getElementById('stats').innerText = text
- }
- //时间更新
- function timeUpdate() {
- var date = new Date();
- var year = date.getFullYear();
- var month = date.getMonth() + 1;
- var day = date.getDate();
- var hour = "00" + date.getHours();
- hour = hour.substr(hour.length - 2);
- var minute = "00" + date.getMinutes();
- minute = minute.substr(minute.length - 2);
- var second = "00" + date.getSeconds();
- second = second.substr(second.length - 2);
- $("#time").html(hour + ":" + minute + ":" + second);
- setTimeout("timeUpdate()", 1000);
- }
- //信息控件
- if (!$('#time').length) {$("#video").append("<div id='time'></div>");}
- //显示时间
- timeUpdate();
- </script>
|