bep40 commited on
Commit
1048440
·
verified ·
1 Parent(s): 7d2c887

Fix HLS.js config: disable worker, reduce buffer, fix startLevel, add debug logging

Browse files
Files changed (1) hide show
  1. 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:true,lowLatencyMode:true,startLevel:-1,capLevelToPlayerSize:true,maxBufferLength:10}); h.loadSource(STREAMS[_currentCh][0]); h.attachMedia(mv); mv.play().catch(()=>{});}
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:true,lowLatencyMode:true,startLevel:-1,capLevelToPlayerSize:true,maxBufferLength:20}); _hls=hls; hls.loadSource(src); hls.attachMedia(video);
817
- hls.on(Hls.Events.MANIFEST_PARSED,()=>{video.play().catch(()=>{});loadEl.style.display='none';video.style.display='block';});
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});