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 17b98bed1..6f7fae5e7 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 @@ -205,7 +205,6 @@ public class Players implements Player.Listener, ParseCallback { public void reset() { removeTimeoutCheck(); - initTrack = false; retry = 0; } @@ -486,6 +485,7 @@ public class Players implements Player.Listener, ParseCallback { App.post(runnable, timeout); PlayerEvent.prepare(tag); session.setActive(true); + initTrack = false; prepare(); } @@ -509,9 +509,7 @@ public class Players implements Player.Listener, ParseCallback { } public void setTrack(List tracks) { - if (initTrack) return; if (exoPlayer != null && !tracks.isEmpty()) TrackUtil.setTrackSelection(exoPlayer, tracks); - initTrack = true; } private void setPlaybackState(int state) { @@ -658,9 +656,10 @@ public class Players implements Player.Listener, ParseCallback { @Override public void onTracksChanged(@NonNull Tracks tracks) { - if (tracks.isEmpty()) return; + if (tracks.isEmpty() || initTrack) return; setTrack(Track.find(getKey())); PlayerEvent.track(tag); + initTrack = true; } @Override diff --git a/app/src/main/java/com/fongmi/android/tv/player/exo/TrackUtil.java b/app/src/main/java/com/fongmi/android/tv/player/exo/TrackUtil.java index c6b6f6853..227a89e79 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/exo/TrackUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/player/exo/TrackUtil.java @@ -1,5 +1,6 @@ package com.fongmi.android.tv.player.exo; +import androidx.media3.common.Format; import androidx.media3.common.TrackGroup; import androidx.media3.common.TrackSelectionOverride; import androidx.media3.common.TrackSelectionParameters; @@ -30,7 +31,8 @@ public class TrackUtil { for (Tracks.Group trackGroup : currentTracks.getGroups()) { if (trackGroup.getType() != track.getType()) continue; for (int i = 0; i < trackGroup.length; i++) { - if (track.getFormat().equals(trackGroup.getTrackFormat(i).id)) { + Format format = trackGroup.getTrackFormat(i); + if (track.getFormat().equals(format.id + format.sampleMimeType)) { return new TrackInfo(trackGroup, i); } } diff --git a/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java b/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java index 295290d14..a2b837fa2 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java @@ -118,7 +118,7 @@ public final class TrackDialog extends BaseDialog implements TrackAdapter.OnClic for (int j = 0; j < trackGroup.length; j++) { Format format = trackGroup.getTrackFormat(j); String name = provider.getTrackName(format); - Track item = new Track(type, name, format.id); + Track item = new Track(type, name, format.id + format.sampleMimeType); item.setSelected(trackGroup.isTrackSelected(j)); items.add(item); }