1 Star 0 Fork 0

swarmcloud / hls-p2p-engine

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
hlsjs.html 2.73 KB
一键复制 编辑 原始数据 按行查看 历史
snowinszu 提交于 2023-09-06 00:15 . release v2.8.4
<script src="//cdn.jsdelivr.net/npm/hls.js@0.14.17"></script>
<script src="https://cdn.jsdelivr.net/npm/swarmcloud-hls@latest/dist/p2p-engine.min.js"></script>
<video id="video" controls></video>
<p id="version"></p>
<h3>download info:</h3>
<p id="info"></p>
<table id="table-body">
<tbody ></tbody>
</table>
<script>
document.querySelector('#version').innerText = `hls.js version: ${Hls.version} p2p version: ${P2PEngineHls.version}`;
var p2pConfig = {
logLevel: 'debug',
live: false, // set to true in live mode
swFile: './sw.js',
// trackerZone: 'hk', // if using Hongkong tracker
// trackerZone: 'us', // if using USA tracker
// token: YOUR_TOKEN
// Other p2pConfig options provided by CDNBye
}
var source = 'https://test-streams.mux.dev/x36xhzz/url_2/193039199_mp4_h264_aac_ld_7.m3u8';
var video = document.getElementById('video');
if(Hls.isSupported()) {
var hls = new Hls({
maxBufferSize: 0, // Highly recommended setting in live mode
maxBufferLength: 15, // Highly recommended setting in live mode
liveSyncDurationCount: 10, // Highly recommended setting in live mode
});
p2pConfig.hlsjsInstance = hls;
hls.loadSource(source);
hls.attachMedia(video);
hls.on(Hls.Events.MANIFEST_PARSED,function(event, data) {
video.play();
});
}
// This is using the built-in support of the plain video element, without using hls.js.
else if (video.canPlayType('application/vnd.apple.mpegurl')) {
P2PEngineHls.tryRegisterServiceWorker(p2pConfig).then(() => {
video.src = source;
})
video.addEventListener('loadedmetadata',function() {
video.play();
});
}
var engine = new P2pEngineHls(p2pConfig);
engine.on('stats', function ({totalHTTPDownloaded=0, totalP2PDownloaded=0, totalP2PUploaded=0}) {
var total = totalHTTPDownloaded + totalP2PDownloaded;
document.querySelector('#info').innerText = `p2p ratio: ${Math.round(totalP2PDownloaded/total*100)}%, saved traffic: ${totalP2PDownloaded}KB`;
})
engine.on('FRAG_LOADED', ({url, sn, segId, loaded, duration, byP2p, fromPeerId}) => {
// console.warn(`FRAG_LOADED ${url}`)
var source = 'HTTP';
if (byP2p) {
source = 'P2P';
}
addToTable(url, loaded, source);
});
function addToTable(url, downloaded, source) {
var infoStr = `download ${url}(size:${downloaded}B) by ${source}`;
document.querySelector('#table-body tbody').innerHTML +=
`<tr style="text-align: center">
<td>${infoStr}</td>
</tr>`
};
</script>
JavaScript
1
https://gitee.com/swarmcloud/hls-p2p-engine.git
git@gitee.com:swarmcloud/hls-p2p-engine.git
swarmcloud
hls-p2p-engine
hls-p2p-engine
main

搜索帮助