Skip to content

Commit

Permalink
修复m3u8播放失败,例如南瓜
Browse files Browse the repository at this point in the history
  • Loading branch information
generocket committed May 25, 2024
1 parent ddea051 commit cad5707
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 7 deletions.
14 changes: 12 additions & 2 deletions app/src/main/java/com/github/tvbox/osc/base/App.java
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;

Expand All @@ -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
Expand Down Expand Up @@ -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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -73,6 +74,7 @@ public MediaSource getMediaSource(String uri, boolean isCache) {
}

public MediaSource getMediaSource(String uri, Map<String, String> headers, boolean isCache) {
Log.i("ExoGetMediaSource:", uri);
Uri contentUri = Uri.parse(uri);
if ("rtmp".equals(contentUri.getScheme())) {
return new ProgressiveMediaSource.Factory(new RtmpDataSourceFactory(null))
Expand Down

0 comments on commit cad5707

Please sign in to comment.