优化播放重试

pull/138/head
jun 10 months ago
parent 971b86ffb7
commit 9a4c98e114
  1. 4
      app/src/main/java/com/github/tvbox/osc/ui/activity/LivePlayActivity.java
  2. 8
      app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java
  3. 24
      app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java

@ -435,8 +435,6 @@ public class LivePlayActivity extends BaseActivity {
public void onResponse(String paramString) { public void onResponse(String paramString) {
ArrayList arrayList = new ArrayList(); ArrayList arrayList = new ArrayList();
Log.d("返回的EPG信息", paramString);
try { try {
if (paramString.contains("epg_data")) { if (paramString.contains("epg_data")) {
final JSONArray jSONArray = new JSONObject(paramString).optJSONArray("epg_data"); final JSONArray jSONArray = new JSONObject(paramString).optJSONArray("epg_data");
@ -445,7 +443,7 @@ public class LivePlayActivity extends BaseActivity {
JSONObject jSONObject = jSONArray.getJSONObject(b); JSONObject jSONObject = jSONArray.getJSONObject(b);
Epginfo epgbcinfo = new Epginfo(date,jSONObject.optString("title"), date, jSONObject.optString("start"), jSONObject.optString("end"),b); Epginfo epgbcinfo = new Epginfo(date,jSONObject.optString("title"), date, jSONObject.optString("start"), jSONObject.optString("end"),b);
arrayList.add(epgbcinfo); arrayList.add(epgbcinfo);
Log.d("EPG信息:", day +" "+ jSONObject.optString("start") +" - "+jSONObject.optString("end") + " " +jSONObject.optString("title")); // Log.d("EPG信息:", day +" "+ jSONObject.optString("start") +" - "+jSONObject.optString("end") + " " +jSONObject.optString("title"));
} }
} }

@ -500,6 +500,7 @@ public class PlayActivity extends BaseActivity {
void playUrl(String url, HashMap<String, String> headers) { void playUrl(String url, HashMap<String, String> headers) {
LOG.i("playUrl:" + url); LOG.i("playUrl:" + url);
if(autoRetryCount==0)webPlayUrl=url;
if(autoRetryCount>1 && url.contains(".m3u8")){ if(autoRetryCount>1 && url.contains(".m3u8")){
try { try {
String url_encode; String url_encode;
@ -659,6 +660,7 @@ public class PlayActivity extends BaseActivity {
HashMap<String, String> headers = null; HashMap<String, String> headers = null;
webUserAgent = null; webUserAgent = null;
webHeaderMap = null; webHeaderMap = null;
webPlayUrl = null;
if (info.has("header")) { if (info.has("header")) {
try { try {
JSONObject hds = new JSONObject(info.getString("header")); JSONObject hds = new JSONObject(info.getString("header"));
@ -849,7 +851,8 @@ public class PlayActivity extends BaseActivity {
if (autoRetryCount < 2) { if (autoRetryCount < 2) {
autoRetryCount++; autoRetryCount++;
play(false); // play(false);
playUrl(webPlayUrl, webHeaderMap);
return true; return true;
} else { } else {
autoRetryCount = 0; autoRetryCount = 0;
@ -938,7 +941,8 @@ public class PlayActivity extends BaseActivity {
private String parseFlag; private String parseFlag;
private String webUrl; private String webUrl;
private String webUserAgent; private String webUserAgent;
private Map<String, String > webHeaderMap; private HashMap<String, String > webHeaderMap;
private String webPlayUrl;
private void initParse(String flag, boolean useParse, String playUrl, final String url) { private void initParse(String flag, boolean useParse, String playUrl, final String url) {
parseFlag = flag; parseFlag = flag;

@ -95,6 +95,7 @@ import org.xwalk.core.XWalkWebResourceResponse;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.File; import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
@ -509,9 +510,17 @@ public class PlayFragment extends BaseLazyFragment {
} }
void playUrl(String url, HashMap<String, String> headers) { void playUrl(String url, HashMap<String, String> headers) {
if(autoRetryCount==0)webPlayUrl=url;
LOG.i("playUrl:" + url); LOG.i("playUrl:" + url);
if(autoRetryCount>0 && url.contains(".m3u8")){ if(autoRetryCount>0 && url.contains(".m3u8")){
// todo // todo
try {
String url_encode;
url_encode=URLEncoder.encode(url,"UTF-8");
url = ControlManager.get().getAddress(true) + "proxy?go=bom&url="+ url_encode;
}catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} }
if (mActivity == null) return; if (mActivity == null) return;
if (!isAdded()) return; if (!isAdded()) return;
@ -670,6 +679,7 @@ public class PlayFragment extends BaseLazyFragment {
HashMap<String, String> headers = null; HashMap<String, String> headers = null;
webUserAgent = null; webUserAgent = null;
webHeaderMap = null; webHeaderMap = null;
webPlayUrl = null;
if (info.has("header")) { if (info.has("header")) {
try { try {
JSONObject hds = new JSONObject(info.getString("header")); JSONObject hds = new JSONObject(info.getString("header"));
@ -861,15 +871,22 @@ public class PlayFragment extends BaseLazyFragment {
} }
private int autoRetryCount = 0; private int autoRetryCount = 0;
private long lastRetryTime = 0; // 记录上次调用时间(毫秒)
boolean autoRetry() { boolean autoRetry() {
long currentTime = System.currentTimeMillis();
// 如果距离上次重试超过 10 秒(10000 毫秒),重置重试次数
if (currentTime - lastRetryTime > 10_000) {
autoRetryCount = 0;
}
lastRetryTime = currentTime; // 更新上次调用时间
if (loadFoundVideoUrls != null && loadFoundVideoUrls.size() > 0) { if (loadFoundVideoUrls != null && loadFoundVideoUrls.size() > 0) {
autoRetryFromLoadFoundVideoUrls(); autoRetryFromLoadFoundVideoUrls();
return true; return true;
} }
if (autoRetryCount < 1) { if (autoRetryCount < 1) {
autoRetryCount++; autoRetryCount++;
play(false); // play(false);
playUrl(webPlayUrl, webHeaderMap);
return true; return true;
} else { } else {
autoRetryCount = 0; autoRetryCount = 0;
@ -960,7 +977,8 @@ public class PlayFragment extends BaseLazyFragment {
private String parseFlag; private String parseFlag;
private String webUrl; private String webUrl;
private String webUserAgent; private String webUserAgent;
private Map<String, String > webHeaderMap; private HashMap<String, String > webHeaderMap;
private String webPlayUrl;
private void initParse(String flag, boolean useParse, String playUrl, final String url) { private void initParse(String flag, boolean useParse, String playUrl, final String url) {
parseFlag = flag; parseFlag = flag;

Loading…
Cancel
Save