diff --git a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java index dad5b44a9..c2ae32a12 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.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)); } diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java index 28b46d98b..f8037d914 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Players.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java @@ -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 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); } diff --git a/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java b/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java index 51ffb528f..9279ecfac 100644 --- a/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java +++ b/catvod/src/main/java/com/github/catvod/net/interceptor/DefaultInterceptor.java @@ -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(); } } diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/AndroidMediaPlayer.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/AndroidMediaPlayer.java index e6bc9d1e9..a47ed7dda 100644 --- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/AndroidMediaPlayer.java +++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/AndroidMediaPlayer.java @@ -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 checkRange(Map headers) { - if (headers.containsKey("Range")) return headers; - headers.put("Range", "bytes=0-"); + private Map checkHeader(Uri uri, Map 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; }