Merge remote-tracking branch 'origin/dev' into dev

pull/226/head
okjack 2 years ago
commit e25d312589
  1. 1
      app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java
  2. 25
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  3. 4
      catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java
  4. 12
      ijkplayer/src/main/java/tv/danmaku/ijk/media/player/AndroidMediaPlayer.java

@ -137,6 +137,7 @@ public class ExoUtil {
Uri uri = UrlUtil.uri(url);
if (sub != null) subs.add(sub);
String mimeType = getMimeType(format, errorCode);
if (uri.getUserInfo() != null) headers.put(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo()));
return new DefaultMediaSourceFactory(getDataSourceFactory(headers), getExtractorsFactory()).createMediaSource(getMediaItem(uri, mimeType, subs, drm));
}

@ -78,10 +78,10 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
private Runnable runnable;
private String url;
private Sub sub;
private int errorCode;
private int retry;
private int decode;
private int player;
private int error;
private int retry;
private float speed;
public static boolean isExo(int type) {
@ -216,7 +216,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
public void reset() {
removeTimeoutCheck();
this.errorCode = 0;
this.error = 0;
this.retry = 0;
stopParse();
}
@ -285,9 +285,8 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
}
public String setSpeed(float speed) {
if (exoPlayer != null) exoPlayer.setPlaybackSpeed(speed);
if (ijkPlayer != null) ijkPlayer.setSpeed(speed);
this.speed = speed;
if (exoPlayer != null) exoPlayer.setPlaybackSpeed(this.speed = speed);
if (ijkPlayer != null) ijkPlayer.setSpeed(this.speed = speed);
return getSpeedText();
}
@ -496,25 +495,25 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
}
private void setMediaSource(Result result, int timeout) {
Logger.t(TAG).d(errorCode + "," + result.getRealUrl());
Logger.t(TAG).d(error + "," + result.getRealUrl());
if (isIjk() && ijkPlayer != null) ijkPlayer.setMediaSource(IjkUtil.getSource(result));
if (isExo() && exoPlayer != null) exoPlayer.setMediaSource(ExoUtil.getSource(result, sub, errorCode));
if (isExo() && exoPlayer != null) exoPlayer.setMediaSource(ExoUtil.getSource(result, sub, error));
if (isExo() && exoPlayer != null) exoPlayer.prepare();
setTimeoutCheck(result.getHeaders(), result.getRealUrl(), timeout);
}
private void setMediaSource(Channel channel, int timeout) {
Logger.t(TAG).d(errorCode + "," + channel.getUrl());
Logger.t(TAG).d(error + "," + channel.getUrl());
if (isIjk() && ijkPlayer != null) ijkPlayer.setMediaSource(IjkUtil.getSource(channel));
if (isExo() && exoPlayer != null) exoPlayer.setMediaSource(ExoUtil.getSource(channel, errorCode));
if (isExo() && exoPlayer != null) exoPlayer.setMediaSource(ExoUtil.getSource(channel, error));
if (isExo() && exoPlayer != null) exoPlayer.prepare();
setTimeoutCheck(channel.getHeaders(), channel.getUrl(), timeout);
}
private void setMediaSource(Map<String, String> headers, String url) {
Logger.t(TAG).d(errorCode + "," + url);
Logger.t(TAG).d(error + "," + url);
if (isIjk() && ijkPlayer != null) ijkPlayer.setMediaSource(IjkUtil.getSource(headers, url));
if (isExo() && exoPlayer != null) exoPlayer.setMediaSource(ExoUtil.getSource(headers, url, sub, errorCode));
if (isExo() && exoPlayer != null) exoPlayer.setMediaSource(ExoUtil.getSource(headers, url, sub, error));
if (isExo() && exoPlayer != null) exoPlayer.prepare();
setTimeoutCheck(headers, url, Constant.TIMEOUT_PLAY);
}
@ -611,7 +610,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
@Override
public void onPlayerError(@NonNull PlaybackException error) {
ErrorEvent.url(ExoUtil.getRetry(errorCode = error.errorCode));
ErrorEvent.url(ExoUtil.getRetry(this.error = error.errorCode));
setPlaybackState(PlaybackStateCompat.STATE_ERROR);
}

@ -55,8 +55,8 @@ public class DefaultInterceptor implements Interceptor {
Request.Builder builder = request.newBuilder();
boolean local = url.contains(":" + Proxy.getPort() + "/");
if (url.contains("+") && local) builder.url(url.replace("+", "%2B"));
if (url.contains("gitcode.net")) builder.addHeader(HttpHeaders.USER_AGENT, Util.CHROME);
if (uri.getUserInfo() != null) builder.addHeader(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo()));
if (url.contains("gitcode.net")) builder.header(HttpHeaders.USER_AGENT, Util.CHROME);
if (uri.getUserInfo() != null) builder.header(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo()));
return builder.build();
}
}

@ -28,6 +28,9 @@ import android.os.Build;
import android.view.Surface;
import android.view.SurfaceHolder;
import com.github.catvod.utils.Util;
import com.google.common.net.HttpHeaders;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
@ -68,13 +71,14 @@ public class AndroidMediaPlayer extends AbstractMediaPlayer implements MediaPlay
if (ContentResolver.SCHEME_FILE.equals(scheme)) {
setDataSource(uri.getPath());
} else {
mMediaPlayer.setDataSource(context, uri, checkRange(headers));
mMediaPlayer.setDataSource(context, uri, checkHeader(uri, headers));
}
}
private Map<String, String> checkRange(Map<String, String> headers) {
if (headers.containsKey("Range")) return headers;
headers.put("Range", "bytes=0-");
private Map<String, String> checkHeader(Uri uri, Map<String, String> headers) {
if (uri.getUserInfo() != null) headers.put(HttpHeaders.AUTHORIZATION, Util.basic(uri.getUserInfo()));
if (headers.containsKey(HttpHeaders.RANGE)) return headers;
headers.put(HttpHeaders.RANGE, "bytes=0-");
return headers;
}

Loading…
Cancel
Save