Fix exo track

pull/137/head
FongMi 3 years ago
parent cd44e5fd66
commit 0cd244fbc2
  1. 28
      app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java
  2. 6
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  3. 4
      catvod/src/main/java/com/github/catvod/crawler/Spider.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<Tracks.Group> groups = player.getCurrentTracks().getGroups();
List<Integer> 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<Tracks.Group> groups = player.getCurrentTracks().getGroups();
List<Integer> 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);
}

@ -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());
}
}

@ -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<String> vipFlags) throws Exception {
return "";
}

Loading…
Cancel
Save