From 407d8aa79179771213eeb8fb196d45173874fe49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=9A=E9=A3=8E=E6=8B=82=E6=9F=B3=E9=A2=9C?= <434857005@qq.com> Date: Thu, 11 May 2023 18:25:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=97=85=E6=8E=A2=E5=AE=9A=E6=97=B6=E5=99=A8?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/version.txt | 2 +- templates/cms/mxpro/detailContent.html | 30 ++++++++++++++++++++------ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/js/version.txt b/js/version.txt index 2752475..c4f14f7 100644 --- a/js/version.txt +++ b/js/version.txt @@ -1 +1 @@ -3.9.41beta25 \ No newline at end of file +3.9.41beta26 \ No newline at end of file diff --git a/templates/cms/mxpro/detailContent.html b/templates/cms/mxpro/detailContent.html index 577ca9c..ee5c008 100644 --- a/templates/cms/mxpro/detailContent.html +++ b/templates/cms/mxpro/detailContent.html @@ -242,17 +242,33 @@ const app = createApp({ const iframeShow = ref(false); const photoVisible = ref(false); const iframeRef = ref(null); + var sniffer; const methods = { async lazyPlay(url){ iframeShow.value = true; console.log('准备处理播放地址:'+url); + clearInterval(sniffer); try { + if(/\.(m3u8|mp4)/.test(url)){ + console.log('直接播放'); + methods.setPlayUrl(url); + return + } const res = await axios.get(url,{maxRedirects: 0}); + const { status, headers: { Location } } = res; + // console.log(status); + console.log(res.request.responseURL); + if (status === 302) { + console.log(Location); + } console.log(res.data); - if(!res.data.parse&&res.data.url){ - console.log(ctx.value); - iframeSrc.value = ctx.value.path+'?url='+res.data.url; + if(typeof(res.data)==='string' && /#EXTM3U/.test(res.data)){ + iframeRef.value.contentWindow.location.reload(); + iframeSrc.value = url; + throw new Error('重定向类文件无法直接播放,尝试嗅探'); + } else if(!res.data.parse&&res.data.url){ + methods.setPlayUrl(res.data.url); }else if(/url=/.test(res.data.url)){ iframeSrc.value = res.data.url; } else if((res.data.parse||res.data.jx)&&res.data.url){ @@ -267,12 +283,11 @@ const app = createApp({ console.log('iframeSrc.value:',iframeSrc.value); iframeSrc.value = url; const total_time = 10000; - var sniffer; var counter = 1; // 嗅探计数 var speeder = 250; // 嗅探间隔 var total_counter = total_time/speeder; let iframeWindow = iframeRef.value.contentWindow; - clearInterval(sniffer); + console.log(`开始嗅探,最多嗅探:${total_counter}次...`); sniffer = setInterval(function (){ console.log(`第${counter}次嗅探开始`); @@ -322,7 +337,8 @@ const app = createApp({ } }, openTestVideo(e){ - iframeSrc.value = ctx.value.path+'?url='+'https://sf9-dycdn-tos.pstatp.com/obj/tos-cn-i-8gu37r9deh/7c399215485c40cb9f1d1da640354a12?filename=1.mp4'; + methods.lazyPlay('https://sf9-dycdn-tos.pstatp.com/obj/tos-cn-i-8gu37r9deh/7c399215485c40cb9f1d1da640354a12?filename=1.mp4'); + // iframeSrc.value = ctx.value.path+'?url='+'https://sf9-dycdn-tos.pstatp.com/obj/tos-cn-i-8gu37r9deh/7c399215485c40cb9f1d1da640354a12?filename=1.mp4'; }, setPlayUrl(url){ iframeSrc.value = ctx.value.path+'?url='+url; @@ -348,6 +364,7 @@ const app = createApp({ iframeShow:iframeShow, photoVisible:photoVisible, iframeRef:iframeRef, + sniffer:sniffer, } }, }); @@ -358,6 +375,7 @@ axios.defaults.baseURL = "/"; axios.defaults.headers.post['Content-Type'] = 'application/json'; // 请求超时5000毫秒 axios.defaults.timeout = 5000; +axios.defaults.withCredentials = true; app.config.globalProperties.$http = axios; console.log('---这里最先执行---'); app.component('copy-right', copyRightComponent);