204 lines
6.4 KiB
HTML
204 lines
6.4 KiB
HTML
<!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>jessibuca pro mobile demo</title>
|
||
<script src="./vconsole.js"></script>
|
||
<script src="./jessibuca-pro.js"></script>
|
||
<link rel="stylesheet" href="./demo.css">
|
||
<style>
|
||
.container-shell:before {
|
||
content: "jessibuca pro mobile demo";
|
||
}
|
||
</style>
|
||
</head>
|
||
<body class="page">
|
||
<div class="root">
|
||
<div class="container-shell">
|
||
<div id="container"></div>
|
||
<div class="input">
|
||
<div>
|
||
当前浏览器:
|
||
<span id="mseSupport264" style="color: green;display: none">支持MSE H264解码;</span>
|
||
<span id="mseSupport" style="color: green;display: none">支持MSE H265解码;</span>
|
||
<span id="mseNotSupport264" style="color: red;display: none">不支持MSE H264解码;</span>
|
||
<span id="mseNotSupport"
|
||
style="color: red;display: none">不支持MSE H265解码,会自动切换成wasm解码;</span>
|
||
</div>
|
||
</div>
|
||
<div class="input">
|
||
<div>
|
||
当前浏览器:
|
||
<span id="wcsSupport264" style="color: green;display: none">支持Webcodecs H264解码;</span>
|
||
<span id="wcsSupport" style="color: green;display: none">支持Webcodecs H265解码(不一定准确);</span>
|
||
<span id="wcsNotSupport264"
|
||
style="color: red;display: none">不支持Webcodecs H264解码(https/localhost);</span>
|
||
<span id="wcsNotSupport" style="color: red;display: none">不支持Webcodecs H265解码(https/localhost),会自动切换成wasm解码</span>
|
||
</div>
|
||
</div>
|
||
<div class="input">
|
||
<div>
|
||
当前浏览器:
|
||
<span id="simdSupport" style="color: green;display: none">支持WASM SIMD解码</span>
|
||
<span id="simdNotSupport"
|
||
style="color: red;display: none">不支持WASM SIMD解码,会自动切换成wasm解码</span>
|
||
</div>
|
||
</div>
|
||
<div class="input">
|
||
<div>
|
||
<input
|
||
type="checkbox"
|
||
id="useWebFullScreen"
|
||
/><span>使用web全屏</span>
|
||
</div>
|
||
|
||
</div>
|
||
<div class="input">
|
||
<div>输入URL:</div>
|
||
<input
|
||
autocomplete="on"
|
||
id="playUrl"
|
||
value=""
|
||
/>
|
||
<button id="play">播放</button>
|
||
<button id="pause" style="display: none">停止</button>
|
||
</div>
|
||
<div class="input" style="line-height: 30px">
|
||
<button id="fullscreen">全屏</button>
|
||
|
||
<button id="destroy">销毁</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<script src="./demo.js"></script>
|
||
<script>
|
||
var $player = document.getElementById('play');
|
||
var $pause = document.getElementById('pause');
|
||
var $playHref = document.getElementById('playUrl');
|
||
var $container = document.getElementById('container');
|
||
var $destroy = document.getElementById('destroy');
|
||
var $fullscreen = document.getElementById('fullscreen');
|
||
var $useWebFullScreen = document.getElementById('useWebFullScreen');
|
||
|
||
|
||
var showOperateBtns = true; // 是否显示按钮
|
||
var forceNoOffscreen = true; //
|
||
var jessibuca = null;
|
||
|
||
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 $decoderUrl = null;
|
||
if (data != null) {
|
||
$playHref.value = data.apiUrl;
|
||
$decoderUrl = data.decoderUrl;
|
||
console.log(data.apiUrl);
|
||
create();
|
||
play();
|
||
}
|
||
|
||
function create() {
|
||
jessibuca = new JessibucaPro({
|
||
container: $container,
|
||
videoBuffer: 0.2, // 缓存时长
|
||
decoder: $decoderUrl + '/js/jessibuca-pro/decoder-pro.js',
|
||
isResize: false,
|
||
useSIMD: true,
|
||
text: "",
|
||
loadingText: "加载中",
|
||
debug: true,
|
||
showBandwidth: showOperateBtns, // 显示网速
|
||
operateBtns: {
|
||
fullscreen: showOperateBtns,
|
||
screenshot: showOperateBtns,
|
||
play: showOperateBtns,
|
||
audio: showOperateBtns,
|
||
},
|
||
forceNoOffscreen: forceNoOffscreen,
|
||
useWebFullScreen: $useWebFullScreen.checked,
|
||
isNotMute: false,
|
||
},);
|
||
|
||
jessibuca.onLog = msg => console.error(msg);
|
||
jessibuca.onRecord = (status) => console.log('onRecord', status);
|
||
jessibuca.onPause = () => console.log('onPause');
|
||
jessibuca.onPlay = () => console.log('onPlay');
|
||
jessibuca.onFullscreen = msg => console.log('onFullscreen', msg);
|
||
jessibuca.onMute = msg => console.log('onMute', msg);
|
||
$player.style.display = 'inline-block';
|
||
$pause.style.display = 'none';
|
||
$destroy.style.display = 'none';
|
||
$fullscreen.style.display = 'none';
|
||
}
|
||
|
||
|
||
function replay() {
|
||
if (jessibuca) {
|
||
jessibuca.destroy().then(()=>{
|
||
create();
|
||
play();
|
||
});
|
||
}
|
||
else {
|
||
create();
|
||
play();
|
||
}
|
||
|
||
}
|
||
|
||
function play() {
|
||
var href = $playHref.value;
|
||
if (href) {
|
||
jessibuca.play(href);
|
||
$player.style.display = 'none';
|
||
$pause.style.display = 'inline-block';
|
||
$destroy.style.display = 'inline-block';
|
||
}
|
||
}
|
||
|
||
$player.addEventListener('click', function () {
|
||
play();
|
||
}, false)
|
||
|
||
|
||
$pause.addEventListener('click', function () {
|
||
$player.style.display = 'inline-block';
|
||
$pause.style.display = 'none';
|
||
jessibuca.pause();
|
||
})
|
||
|
||
$destroy.addEventListener('click', function () {
|
||
if (jessibuca) {
|
||
jessibuca.destroy().then(()=>{
|
||
create();
|
||
});
|
||
}
|
||
else{
|
||
create();
|
||
}
|
||
|
||
})
|
||
|
||
$fullscreen.addEventListener('click',function () {
|
||
if(jessibuca){
|
||
jessibuca.setFullscreen(true)
|
||
}
|
||
})
|
||
|
||
$useWebFullScreen.addEventListener('click', function () {
|
||
replay()
|
||
})
|
||
|
||
</script>
|
||
|
||
</body>
|
||
</html>
|