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 ea09ff09d..1072dd7e8 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 @@ -7,6 +7,7 @@ import android.util.Base64; import androidx.media3.common.MediaItem; import androidx.media3.common.MimeTypes; import androidx.media3.common.PlaybackException; +import androidx.media3.common.TrackSelectionOverride; import androidx.media3.common.Tracks; import androidx.media3.database.DatabaseProvider; import androidx.media3.database.StandaloneDatabaseProvider; @@ -21,6 +22,7 @@ import androidx.media3.datasource.cache.SimpleCache; import androidx.media3.datasource.okhttp.OkHttpDataSource; import androidx.media3.exoplayer.DefaultLoadControl; import androidx.media3.exoplayer.DefaultRenderersFactory; +import androidx.media3.exoplayer.ExoPlayer; import androidx.media3.exoplayer.LoadControl; import androidx.media3.exoplayer.RenderersFactory; import androidx.media3.exoplayer.source.DefaultMediaSourceFactory; @@ -81,6 +83,32 @@ public class ExoUtil { return count > 0; } + public static void selectTrack(ExoPlayer player, int type, int group, int track) { + List groups = player.getCurrentTracks().getGroups(); + List trackIndices = new ArrayList<>(); + for (int i = 0; i < groups.size(); i++) { + Tracks.Group trackGroup = groups.get(i); + if (trackGroup.getType() != type) continue; + for (int j = 0; j < trackGroup.length; j++) { + if (j == track || trackGroup.isTrackSelected(j)) trackIndices.add(j); + } + } + player.setTrackSelectionParameters(player.getTrackSelectionParameters().buildUpon().setOverrideForType(new TrackSelectionOverride(player.getCurrentTracks().getGroups().get(group).getMediaTrackGroup(), trackIndices)).build()); + } + + public static void deselectTrack(ExoPlayer player, int type, int group, int track) { + List groups = player.getCurrentTracks().getGroups(); + List trackIndices = new ArrayList<>(); + for (int i = 0; i < groups.size(); i++) { + Tracks.Group trackGroup = groups.get(i); + if (trackGroup.getType() != type) continue; + for (int j = 0; j < trackGroup.length; j++) { + if (j != track && trackGroup.isTrackSelected(j)) trackIndices.add(j); + } + } + player.setTrackSelectionParameters(player.getTrackSelectionParameters().buildUpon().setOverrideForType(new TrackSelectionOverride(player.getCurrentTracks().getGroups().get(group).getMediaTrackGroup(), trackIndices)).build()); + } + public static MediaSource getSource(Result result, int errorCode) { return getSource(result.getHeaders(), result.getRealUrl(), result.getSubs(), errorCode); } 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 0cfedb8ae..5e0c415e4 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 @@ -3,7 +3,6 @@ package com.fongmi.android.tv.player; import androidx.annotation.NonNull; import androidx.media3.common.PlaybackException; import androidx.media3.common.Player; -import androidx.media3.common.TrackSelectionOverride; import androidx.media3.common.util.Util; import androidx.media3.exoplayer.ExoPlayer; import androidx.media3.exoplayer.analytics.AnalyticsListener; @@ -23,7 +22,6 @@ import com.fongmi.android.tv.utils.Notify; import com.fongmi.android.tv.utils.Prefers; import com.fongmi.android.tv.utils.ResUtil; import com.github.catvod.crawler.SpiderDebug; -import com.google.common.collect.ImmutableList; import com.google.common.net.HttpHeaders; import java.util.Formatter; @@ -366,9 +364,9 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic private void setTrackExo(Track item) { if (item.isSelected()) { - exoPlayer.setTrackSelectionParameters(exoPlayer.getTrackSelectionParameters().buildUpon().setOverrideForType(new TrackSelectionOverride(exoPlayer.getCurrentTracks().getGroups().get(item.getGroup()).getMediaTrackGroup(), item.getTrack())).build()); + ExoUtil.selectTrack(exoPlayer, item.getType(), item.getGroup(), item.getTrack()); } else { - exoPlayer.setTrackSelectionParameters(exoPlayer.getTrackSelectionParameters().buildUpon().setOverrideForType(new TrackSelectionOverride(exoPlayer.getCurrentTracks().getGroups().get(item.getGroup()).getMediaTrackGroup(), ImmutableList.of())).build()); + ExoUtil.deselectTrack(exoPlayer, item.getType(), item.getGroup(), item.getTrack()); } } diff --git a/catvod/src/main/java/com/github/catvod/crawler/Spider.java b/catvod/src/main/java/com/github/catvod/crawler/Spider.java index 51f97f3d1..7c872428c 100644 --- a/catvod/src/main/java/com/github/catvod/crawler/Spider.java +++ b/catvod/src/main/java/com/github/catvod/crawler/Spider.java @@ -38,6 +38,10 @@ public abstract class Spider { return ""; } + public String searchContent(String key, boolean quick, String pg) throws Exception { + return ""; + } + public String playerContent(String flag, String id, List vipFlags) throws Exception { return ""; }