优化播放重试

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) {
ArrayList arrayList = new ArrayList();
Log.d("返回的EPG信息", paramString);
try {
if (paramString.contains("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);
Epginfo epgbcinfo = new Epginfo(date,jSONObject.optString("title"), date, jSONObject.optString("start"), jSONObject.optString("end"),b);
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) {
LOG.i("playUrl:" + url);
if(autoRetryCount==0)webPlayUrl=url;
if(autoRetryCount>1 && url.contains(".m3u8")){
try {
String url_encode;
@ -659,6 +660,7 @@ public class PlayActivity extends BaseActivity {
HashMap<String, String> headers = null;
webUserAgent = null;
webHeaderMap = null;
webPlayUrl = null;
if (info.has("header")) {
try {
JSONObject hds = new JSONObject(info.getString("header"));
@ -849,7 +851,8 @@ public class PlayActivity extends BaseActivity {
if (autoRetryCount < 2) {
autoRetryCount++;
play(false);
// play(false);
playUrl(webPlayUrl, webHeaderMap);
return true;
} else {
autoRetryCount = 0;
@ -938,7 +941,8 @@ public class PlayActivity extends BaseActivity {
private String parseFlag;
private String webUrl;
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) {
parseFlag = flag;

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

Loading…
Cancel
Save