From cad57076fdedb367acb47376129ad409b67f88f4 Mon Sep 17 00:00:00 2001 From: generocket Date: Sun, 26 May 2024 02:46:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dm3u8=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=EF=BC=8C=E4=BE=8B=E5=A6=82=E5=8D=97=E7=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/github/tvbox/osc/base/App.java | 14 ++++++++++++-- .../com/github/tvbox/osc/server/RemoteServer.java | 2 +- .../github/tvbox/osc/ui/activity/PlayActivity.java | 4 ++-- .../github/tvbox/osc/ui/fragment/PlayFragment.java | 8 ++++++-- .../videoplayer/exo/ExoMediaSourceHelper.java | 2 ++ 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/github/tvbox/osc/base/App.java b/app/src/main/java/com/github/tvbox/osc/base/App.java index e7cdf8eb67..d111110324 100644 --- a/app/src/main/java/com/github/tvbox/osc/base/App.java +++ b/app/src/main/java/com/github/tvbox/osc/base/App.java @@ -1,7 +1,9 @@ package com.github.tvbox.osc.base; import android.app.Activity; + import androidx.multidex.MultiDexApplication; + import com.github.catvod.crawler.JsLoader; import com.github.tvbox.osc.bean.VodInfo; import com.github.tvbox.osc.callback.EmptyCallback; @@ -15,11 +17,11 @@ import com.github.tvbox.osc.util.LOG; import com.github.tvbox.osc.util.OkGoHelper; import com.github.tvbox.osc.util.PlayerHelper; - import com.kingja.loadsir.core.LoadSir; import com.orhanobut.hawk.Hawk; import com.p2p.P2PClass; import com.whl.quickjs.android.QuickJSLoader; + import me.jessyan.autosize.AutoSizeConfig; import me.jessyan.autosize.unit.Subunits; @@ -33,6 +35,9 @@ public class App extends MultiDexApplication { private static P2PClass p; public static String burl; + + private static String dashDataType; + private static String dashData; @Override @@ -104,9 +109,14 @@ public Activity getCurrentActivity() { return AppManager.getInstance().currentActivity(); } - public void setDashData(String data) { + public void setDashData(String type, String data) { + dashDataType = type; dashData = data; } + + public String getDashDataType() { + return dashDataType; + } public String getDashData() { return dashData; } diff --git a/app/src/main/java/com/github/tvbox/osc/server/RemoteServer.java b/app/src/main/java/com/github/tvbox/osc/server/RemoteServer.java index 31e7fc7d20..ed22a1bcc2 100644 --- a/app/src/main/java/com/github/tvbox/osc/server/RemoteServer.java +++ b/app/src/main/java/com/github/tvbox/osc/server/RemoteServer.java @@ -177,7 +177,7 @@ public Response serve(IHTTPSession session) { String data = new String(Base64.decode(dashData, Base64.DEFAULT | Base64.NO_WRAP), "UTF-8"); return NanoHTTPD.newFixedLengthResponse( Response.Status.OK, - "application/dash+xml", + App.getInstance().getDashDataType(), data ); } catch (Throwable th) { diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java index e2e233e2ed..48735cfd4f 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java @@ -528,7 +528,7 @@ public void run() { hideTip(); if (url.startsWith("data:application/dash+xml;base64,")) { PlayerHelper.updateCfg(mVideoView, mVodPlayerCfg, 2); - App.getInstance().setDashData(url.split("base64,")[1]); + App.getInstance().setDashData("application/dash+xml", url.split("base64,")[1]); url = ControlManager.get().getAddress(true) + "dash/proxy.mpd"; } else if (url.contains(".mpd") || url.contains("type=mpd")) { PlayerHelper.updateCfg(mVideoView, mVodPlayerCfg, 2); @@ -778,7 +778,7 @@ protected void onDestroy() { stopParse(); Thunder.stop(false);//停止磁力下载 Jianpian.finish();//停止p2p下载 - App.getInstance().setDashData(null); + App.getInstance().setDashData(null, null); } private VodInfo mVodInfo; diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java index 3623e65833..1d9724f683 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java @@ -541,8 +541,12 @@ public void run() { hideTip(); if (url.startsWith("data:application/dash+xml;base64,")) { PlayerHelper.updateCfg(mVideoView, mVodPlayerCfg, 2); - App.getInstance().setDashData(url.split("base64,")[1]); + App.getInstance().setDashData("application/dash+xml", url.split("base64,")[1]); url = ControlManager.get().getAddress(true) + "dash/proxy.mpd"; + } else if (url.startsWith("data:application/vnd.apple.mpegurl;base64,")) { + PlayerHelper.updateCfg(mVideoView, mVodPlayerCfg, 2); + App.getInstance().setDashData("application/vnd.apple.mpegurl", url.split("base64,")[1]); + url = ControlManager.get().getAddress(true) + "dash/proxy.m3u8"; } else if (url.contains(".mpd") || url.contains("type=mpd")) { PlayerHelper.updateCfg(mVideoView, mVodPlayerCfg, 2); } else { @@ -814,7 +818,7 @@ public void onDestroyView() { stopParse(); Thunder.stop(true);//停止磁力下载 Jianpian.finish();//停止p2p下载 - App.getInstance().setDashData(null); + App.getInstance().setDashData(null, null); } private VodInfo mVodInfo; diff --git a/player/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaSourceHelper.java b/player/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaSourceHelper.java index 4038dab4fc..ee22b1e765 100644 --- a/player/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaSourceHelper.java +++ b/player/src/main/java/xyz/doikki/videoplayer/exo/ExoMediaSourceHelper.java @@ -6,6 +6,7 @@ import androidx.media3.common.C; import androidx.media3.common.MediaItem; +import androidx.media3.common.util.Log; import androidx.media3.common.util.Util; import androidx.media3.database.ExoDatabaseProvider; import androidx.media3.datasource.DataSource; @@ -73,6 +74,7 @@ public MediaSource getMediaSource(String uri, boolean isCache) { } public MediaSource getMediaSource(String uri, Map headers, boolean isCache) { + Log.i("ExoGetMediaSource:", uri); Uri contentUri = Uri.parse(uri); if ("rtmp".equals(contentUri.getScheme())) { return new ProgressiveMediaSource.Factory(new RtmpDataSourceFactory(null))