189 lines
13 KiB
HTML
Raw Normal View History

2025-05-22 16:23:08 +08:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>播放器</title>
<!-- <script src="./vconsole.js"></script>-->
<script src="./jessibuca-pro.js"></script>
<link rel="stylesheet" href="./demo.css">
<style>
.container-shell:before {
content: "";
}
</style>
</head>
<body class="page">
<div class="root">
<div class="container-shell">
<div id="container"></div>
</div>
</div>
<script src="./demo.js"></script>
<!-- uni 的 SDK -->
<script src="./uni.webview.1.5.5.js"></script>
<script>
var $container = document.getElementById('container');
var showOperateBtns = true; // 是否显示按钮
var jessibuca = null;
var rotate = 90;
function getQuery (name) {
let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
let r = window.location.search.substr(1).match(reg);
if (r != null) {
return decodeURIComponent(r[2]);
}
return null;
}
var data = JSON.parse(getQuery('data'));
var type = null;
var playTimes = null;
var playUrl = null;
var $decoderUrl = null;
if (data != null) {
type = data.type;
playUrl = data.playUrl;
$decoderUrl = data.decoderUrl;
console.log($decoderUrl);
playurl();
}
function create () {
var isHls = false;
let suffix = "hls.m3u8";
if (playUrl.endsWith(suffix)) {
isHls = true;
}
jessibuca = new JessibucaPro({
container: $container,
videoBuffer: 0.2, // 缓存时长
decoder: $decoderUrl + 'js/jessibuca-pro/decoder-pro.js',
isResize: false,
isFullResize: false,
isHls: isHls,
useWCS: false,
useMSE: false,
useSIMD: true,
text: "",
loadingText: "加载中",
debug: false,
debugLevel: 'debug',
showBandwidth: showOperateBtns, // 显示网速
operateBtns: {
fullscreen: showOperateBtns,
screenshot: showOperateBtns,
play: showOperateBtns,
audio: showOperateBtns,
fullscreenFn: function () {
console.log('fullscreenFn');
jessibuca.setFullscreen(true);
},
fullscreenExitFn: function () {
console.log('fullscreenExitFn');
jessibuca.setFullscreen(false);
jessibuca.setRotate(0);
rotate = 90;
},
},
extendOperateBtns: [{
name: '横竖屏切换',
index: 3,
icon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFw2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4wLWMwMDAgNzkuMTcxYzI3ZmFiLCAyMDIyLzA4LzE2LTIyOjM1OjQxICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjQuMCAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjQtMDgtMDNUMTE6MjY6MDUrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDI0LTA4LTAzVDExOjM1OjA1KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDI0LTA4LTAzVDExOjM1OjA1KzA4OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpmZmFjMWM0ZC1mM2YzLTQyMzMtYWQxMS1iMjZjOTIwOGU4MDYiIHhtcE1NOkRvY3VtZW50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
iconHover: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFw2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4wLWMwMDAgNzkuMTcxYzI3ZmFiLCAyMDIyLzA4LzE2LTIyOjM1OjQxICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjQuMCAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjQtMDgtMDNUMTE6MjY6MDUrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDI0LTA4LTAzVDExOjM1OjA1KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDI0LTA4LTAzVDExOjM1OjA1KzA4OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpmZmFjMWM0ZC1mM2YzLTQyMzMtYWQxMS1iMjZjOTIwOGU4MDYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6YTc2MTkwM2QtZDdiMy00NGRmLWExZTEtNjBkZTk3ZDA5YzQzIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YTc2MTkwM2QtZDdiMy00NGRmLWExZTEtNjBkZTk3ZDA5YzQzIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDphNzYxOTAzZC1kN2IzLTQ0ZGYtYTFlMS02MGRlOTdkMDljNDMiIHN0RXZ0OndoZW49IjIwMjQtMDgtMDNUMTE6MjY6MDUrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyNC4wIChNYWNpbnRvc2gpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpmZmFjMWM0ZC1mM2YzLTQyMzMtYWQxMS1iMjZjOTIwOGU4MDYiIHN0RXZ0OndoZW49IjIwMjQtMDgtMDNUMTE6MzU6MDUrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyNC4wIChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgIVoCkAAAaTSURBVHic7Zt9iB1XGcZ/z5m729U0bWkSQyz1gzZQa6u1iZSkBPEfK4kfVRBLKbRBtCL4gSkBxTZi958KRhG0iNRCCVSRCm2tokhbXARltyUSpUWUEi3aL4lsY+PevXMe/5iZzezs3Lv33r17743uAwt3Zs57zvs+c96Pc+asbPP/jDBqBUaNDQJGrcCosUHAqBUYNTYIGLUCo0aj3YO5uTkAbGN7CrgSeI+kdwDvBC4DEqDnQsL2K5KO235G0oztGUmnJS21kVSMDUAIYek6xogkyu1LfZOmae24e/bsWXGvLQEl7AAOhRAOAhcPonCSdD7wFkk3AoeBR4DvAo8Dcc0D9IDVXGA7cC9wyPZAjK9BIukjko4B7wc0zOq0LQGSJoBPAh+um2qDhu3twHSM8YoYYzH1LyBzvcuB89Zj3LYuYHs38PmaR/+Q9Djwkvt7VTFImw27be+qjPku27dJOkL2cr4MfBSYt/1L4EfA7/sYsy3aEhBj/ICkreVbto+HEO60/bO1zookSS5L0/RO2zdReru2b0iS5KikD8YYPwe8Lr+/K48ZDwI/Af64JgVydHKBd1euXwK+MgjjnfX3F+CzwJPLFAphO1ng3UNu/JKc/Tbga5KOSfo0WRZaE9oSYPuayvXLIYRnBhEPYoycOXOGhYWFV9M0na2kv23A22OMPwSO18lLukbS14FvkwXqvtFpBlxYudW0rSIX9xupy/J5Ll+s9JXY3m77SUkHbd9j+681/WwGPgM8QBYo+0KnNFitJgys+fVLIoTAxMQEExMThBDqdJAkk82ArwI3hxC+B5yuafs+4B7gkn706aUUXv9ceBbmrG7/AX4D3GH7oO3natrvB6aBi3sdaKzXAhXXOA08ZHs/8HAlFgXgFuBu4KJexhhrAoBqvW/g2SRJDk5NTX3LdtlNG8Dttj+uHiL12BPQBqfI0uF9QKt0P0mS5AuSruu2o3OCgOoLjTGSpukp20eARyvNr3CWHd5QrBjbrRzhHCEAWFoCAzSbTebn52k2my+0Wq2jwMtFO9uEED4WQrhRUvI/Q0CBIoUmSVIY9XSSJA8sK6ZgKoSwI4TQCCFQ/NX2Nxy1e8aqQWxycrKoI16z/R1gBigKrN8Cj9peWK1w62ZDZBT4N9Ds1KBUSZKm6XPAbSGEA7ZfD/wKeLqYFZ2SwjgSsEBW3++ly92hPO29avtYCOEUZDGjmPbnGgERuJWssOk2n4usdP+77ZPAi8BPgV+vJjiOBEwBb+1TdmfxI4Rwk6Sf254G/tZOYByD4KDWHJfa/hTwfToslMaRgL7QIdffANwaY6yd7ePoAgC/AGbJytxuZoRbrRbAjiRJ9gOXlh/GGL9IliZnqoLjSsBDwA9YuSfRDfYB3wSu5Sx5W2x/iBoCxtUFLqD//b4Z4C6yTFDGtXWNx5WAnvfbKjHgWeCVyvOr6+TWxQWKKm2YqNT6Bs5UmlT3ODO5QSuy1k3TAUGstK02ngyUgLLhY0BCVxiYC9QZXL4etkt0i3UPggIajXHNtgMgoJtpXhxuGEcMJQ2OczxYEwG9GhXjUA9/dIVxLYSGhqETMG6uMMjwfF6b/oqqbLwsz9E3AaU32SD7Qns9sJXM0OKhgEXbJ8iWuCcLoXJdMMpZ0YmA6mqsbFi53r8SuFfSm9oVO61WC0l3AN8AWFxcLO7RaDRiTZ2w1qppma45aleXnWLAvyrXDUnN8lZznt4mbS900iZfqcXibECSZLrkp8GSGuIWawzoiMpnsCYrX27VnsyoDn3OAgdK15cAe23/uBgoJ+ApSUdCCAfSNN1qWyzfzl4MIZyw/XAhE0Jg06ZN2N5i+/qKC8xLOknmOt3av4R8Zu5l5T7gbF37TgTMsZyAbbbvAl6gtLMiyZIeJDu9dX6hR0lukZqPHDHGN0q6W9J7y4baPpGT2kG1jtiX67mtxp4V6HRO8IkQwpdsT5ZuXwXcB/wO+Cf5EtN2tL1YTPMKRHYatJH/NrA
iconTitle: '横竖屏切换',
click: () => {
console.log('点击了横竖屏切换');
jessibuca.setRotate(rotate);
if (rotate == 90) {
rotate = 0
} else if (rotate == 0) {
rotate = 90
}
}
}, ],
forceNoOffscreen: true,
useWebFullScreen: true,
isNotMute: false,
}, );
jessibuca.on('error', function (error) {
console.log('error')
console.log(error)
})
jessibuca.onLog = msg => console.error(msg);
jessibuca.onRecord = (status) => console.log('onRecord', status);
jessibuca.onPause = () => console.log('onPause');
jessibuca.onPlay = () => console.log('onPlay');
jessibuca.onMute = msg => console.log('onMute', msg);
jessibuca.on("fullscreen", function (flag) {
console.log('is fullscreen', flag)
})
jessibuca.on("webFullscreen", function (flag) {
console.log('is webFullscreen', flag)
})
}
function playurl () {
create();
if (type == "play") {
console.log(playUrl);
play(playUrl);
} else if (type == "playback") {
playTimes = data.playTimes;
console.log(playTimes);
playback(playUrl, playTimes);
}
}
function seekPlay (timeObj) {
uni.postMessage({
data: {
action: 'seekPlay',
msg: timeObj
}
});
}
function play (url) {
if (url) {
jessibuca.play(url);
}
}
function playback (url, times) {
if (url) {
jessibuca.playback(url, {
playList: times,
fps: 20, //FPS定频(本地设置)生效)
showControl: true,
showRateBtn: true,
isUseFpsRender: true, // 是否使用固定的fps渲染如果设置的fps小于流推过来的会造成内存堆积甚至溢出
isCacheBeforeDecodeForFpsRender: false, // rfs渲染时是否在解码前缓存数据
supportWheel: true, // 是否支持滚动轴切换精度。
rateConfig: [
{ label: '正常', value: 1 },
{ label: '2倍', value: 2 },
{ label: '4倍', value: 4 },
{ label: '8倍', value: 8 },
],
})
}
}
window.οnbefοreunlοad = function () {
alert("===οnbefοreunlοad===");
if (event.clientX > document.body.clientWidth && event.clientY < 0 || event.altKey) {
alert("你关闭了浏览器");
jessibuca.destroy();
} else {
alert("你正在刷新页面");
replay();
}
}
</script>
</body>
</html>