Spaces:
Running
Running
Fix HLS.js config: disable worker, reduce buffer, fix startLevel, add debug logging
Browse files- static/yt_live.js +4 -4
static/yt_live.js
CHANGED
|
@@ -748,7 +748,7 @@
|
|
| 748 |
function activateMiniPlayer(){
|
| 749 |
if(!_currentCh) return; createMiniPlayer(); _miniActive=true;
|
| 750 |
const mini=document.getElementById('vtv-mini'); const mv=document.getElementById('vtv-mini-vid'); const v=document.getElementById('vtv-player');
|
| 751 |
-
if(_hls){const h=new Hls({enableWorker:
|
| 752 |
else if(v&&v.src){mv.src=v.src; mv.play().catch(()=>{});}
|
| 753 |
const ch=CHANNELS.find(c=>c.id===_currentCh); if(ch) document.getElementById('vtv-mini-ch').textContent=ch.name;
|
| 754 |
fetch('/api/vtv/epg/'+_currentCh).then(r=>r.json()).then(d=>{const p=d.programs||[]; const n=p.find(x=>x.now); document.getElementById('vtv-mini-epg').textContent=n?n.time+' '+n.title:(p[0]?p[0].time+' '+p[0].title:'');}).catch(()=>{});
|
|
@@ -813,9 +813,9 @@
|
|
| 813 |
if(idx>=urls.length){loadEl.style.display='none';errEl.style.display='flex';errMsg.textContent=name+': Tất cả nguồn lỗi.';return;}
|
| 814 |
const src=urls[idx]; loadEl.innerHTML='<div class="vtv-spinner"></div>Kết nối '+name+' ('+(idx+1)+'/'+urls.length+')...';
|
| 815 |
if(typeof Hls!=='undefined'&&Hls.isSupported()){
|
| 816 |
-
const hls=new Hls({enableWorker:
|
| 817 |
-
hls.on(Hls.Events.MANIFEST_PARSED,()=>{
|
| 818 |
-
let rec=0; hls.on(Hls.Events.ERROR,(ev,data)=>{if(data.fatal){if(data.type===Hls.ErrorTypes.NETWORK_ERROR){rec++;if(rec<=3)setTimeout(()=>hls.startLoad(),2000);else{hls.destroy();_hls=null;_tryPlay(video,urls,idx+1,name,loadEl,errEl,errMsg);}}else if(data.type===Hls.ErrorTypes.MEDIA_ERROR){try{hls.recoverMediaError();}catch(e){}}else{hls.destroy();_hls=null;_tryPlay(video,urls,idx+1,name,loadEl,errEl,errMsg);}}});
|
| 819 |
}else if(video.canPlayType('application/vnd.apple.mpegurl')){
|
| 820 |
video.src=src;
|
| 821 |
video.addEventListener('loadedmetadata',()=>{video.play().catch(()=>{});loadEl.style.display='none';video.style.display='block';},{once:true});
|
|
|
|
| 748 |
function activateMiniPlayer(){
|
| 749 |
if(!_currentCh) return; createMiniPlayer(); _miniActive=true;
|
| 750 |
const mini=document.getElementById('vtv-mini'); const mv=document.getElementById('vtv-mini-vid'); const v=document.getElementById('vtv-player');
|
| 751 |
+
if(_hls){const h=new Hls({enableWorker:false,lowLatencyMode:true,startLevel:0,capLevelToPlayerSize:true,maxBufferLength:6,maxMaxBufferLength:10,debug:false}); h.loadSource(STREAMS[_currentCh][0]); h.attachMedia(mv); mv.play().catch(e=>console.log('[VTV] mini play rejected:',e));}
|
| 752 |
else if(v&&v.src){mv.src=v.src; mv.play().catch(()=>{});}
|
| 753 |
const ch=CHANNELS.find(c=>c.id===_currentCh); if(ch) document.getElementById('vtv-mini-ch').textContent=ch.name;
|
| 754 |
fetch('/api/vtv/epg/'+_currentCh).then(r=>r.json()).then(d=>{const p=d.programs||[]; const n=p.find(x=>x.now); document.getElementById('vtv-mini-epg').textContent=n?n.time+' '+n.title:(p[0]?p[0].time+' '+p[0].title:'');}).catch(()=>{});
|
|
|
|
| 813 |
if(idx>=urls.length){loadEl.style.display='none';errEl.style.display='flex';errMsg.textContent=name+': Tất cả nguồn lỗi.';return;}
|
| 814 |
const src=urls[idx]; loadEl.innerHTML='<div class="vtv-spinner"></div>Kết nối '+name+' ('+(idx+1)+'/'+urls.length+')...';
|
| 815 |
if(typeof Hls!=='undefined'&&Hls.isSupported()){
|
| 816 |
+
const hls=new Hls({enableWorker:false,lowLatencyMode:true,startLevel:0,capLevelToPlayerSize:true,maxBufferLength:8,maxMaxBufferLength:16,debug:false}); _hls=hls; hls.loadSource(src); hls.attachMedia(video);
|
| 817 |
+
hls.on(Hls.Events.MANIFEST_PARSED,(ev,data)=>{console.log('[VTV] MANIFEST_PARSED',data.levels.length,'levels',data.video,'video',data.audio,'audio');loadEl.style.display='none';video.style.display='block';video.play().catch(e=>console.log('[VTV] play rejected:',e));});
|
| 818 |
+
let rec=0; hls.on(Hls.Events.ERROR,(ev,data)=>{console.log('[VTV] ERROR',data.type,data.details,data.fatal,data);if(data.fatal){if(data.type===Hls.ErrorTypes.NETWORK_ERROR){rec++;if(rec<=3){console.log('[VTV] retry',rec);setTimeout(()=>hls.startLoad(),2000);}else{hls.destroy();_hls=null;_tryPlay(video,urls,idx+1,name,loadEl,errEl,errMsg);}}else if(data.type===Hls.ErrorTypes.MEDIA_ERROR){console.log('[VTV] MEDIA_ERROR, trying recover');try{hls.recoverMediaError();}catch(e){console.log('[VTV] recover failed',e);hls.destroy();_hls=null;}}else{console.log('[VTV] other fatal error');hls.destroy();_hls=null;_tryPlay(video,urls,idx+1,name,loadEl,errEl,errMsg);}}});
|
| 819 |
}else if(video.canPlayType('application/vnd.apple.mpegurl')){
|
| 820 |
video.src=src;
|
| 821 |
video.addEventListener('loadedmetadata',()=>{video.play().catch(()=>{});loadEl.style.display='none';video.style.display='block';},{once:true});
|