/
liveprogramma
/
liveprogrammav2
Обзор
Документация
Войти
/
liveprogramma
/
liveprogrammav2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
player.html
105 строк
3 KB
TwixoffStudio
Create: README.md, vercel.json, embed.html, index.html, package.json, package-lock.json, player.html
21 июн 2026, 22:38
Верифицирован
21 июн 2026, 22:38
3c3ba44
Код
Авторство
О чём код?
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"/> <title>Плеер — LiveПрограмма</title> <style> *{margin:0;padding:0;box-sizing:border-box} html,body{width:100%;height:100%;background:#000;overflow:hidden} #player{width:100%;height:100%} .err{ position:fixed;inset:0;display:flex;flex-direction:column; align-items:center;justify-content:center;gap:12px; color:#fff;font-family:sans-serif;font-size:14px;text-align:center;padding:20px } .err-icon{font-size:40px} .err-msg{color:#888} </style> </head> <body> <div id="player"></div> <script> const params = new URLSearchParams(location.search); const stream = params.get("stream") || ""; const chId = params.get("ch") || ""; // Цепочка PlayerJS источников — твои репозитории приоритетом const PLAYERJS_SRCS = [ "https://raw.githubusercontent.com/OinkTechLtd/rulive/main/playerjs.js", "https://raw.githubusercontent.com/oinktechllc/cdnplayerjs/main/playerjs.js", "https://twixoffltdco.github.io/cdnplayerjs/playerjs.js", "https://cdn.jsdelivr.net/npm/playerjs@0.0.12/dist/player.js", ]; function showError(msg){ document.getElementById("player").innerHTML = ` <div class="err"> <div class="err-icon">📡</div> <div>${msg}</div> <div class="err-msg">Попробуй другой источник или проверь ссылку</div> </div>`; } function loadHLS(url){ // Грузим hls.js и запускаем напрямую const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/hls.js@latest/dist/hls.min.js"; script.onload = ()=>{ const container = document.getElementById("player"); container.innerHTML = ""; const video = document.createElement("video"); video.style.cssText = "width:100%;height:100%;background:#000"; video.controls = true; video.autoplay = true; video.playsInline = true; container.append(video); if(Hls.isSupported()){ const hls = new Hls({ enableWorker:true, lowLatencyMode:true }); hls.loadSource(url); hls.attachMedia(video); hls.on(Hls.Events.MANIFEST_PARSED, ()=>{ video.play().catch(()=>{}); }); hls.on(Hls.Events.ERROR, (e,d)=>{ if(d.fatal) showError("Поток недоступен или заблокирован"); }); } else if(video.canPlayType("application/vnd.apple.mpegurl")){ // Safari video.src = url; video.play().catch(()=>{}); } else { showError("HLS не поддерживается в этом браузере"); } }; script.onerror = ()=> showError("Не удалось загрузить плеер"); document.head.append(script); } function tryPlayerJS(srcs, url){ if(!srcs.length){ loadHLS(url); return; } const s = document.createElement("script"); s.src = srcs[0]; s.onload = ()=>{ if(typeof Playerjs !== "undefined"){ new Playerjs({ id: "player", file: url, autoplay: 1, }); } else { tryPlayerJS(srcs.slice(1), url); } }; s.onerror = ()=> tryPlayerJS(srcs.slice(1), url); document.head.append(s); } if(!stream){ showError("Ссылка на поток не указана"); } else { tryPlayerJS(PLAYERJS_SRCS, stream); } </script> </body> </html>