For v.reddit HLS, try to prefer the stereo audio track. (#1376)

This commit is contained in:
cmp 2023-03-10 22:48:02 -06:00 committed by GitHub
parent 9a1046eda2
commit 34cb71f707
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -55,6 +55,7 @@ import com.google.android.exoplayer2.Tracks;
import com.google.android.exoplayer2.source.ProgressiveMediaSource; import com.google.android.exoplayer2.source.ProgressiveMediaSource;
import com.google.android.exoplayer2.source.hls.HlsMediaSource; import com.google.android.exoplayer2.source.hls.HlsMediaSource;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.TrackSelectionOverride;
import com.google.android.exoplayer2.ui.PlayerControlView; import com.google.android.exoplayer2.ui.PlayerControlView;
import com.google.android.exoplayer2.ui.TrackSelectionDialogBuilder; import com.google.android.exoplayer2.ui.TrackSelectionDialogBuilder;
import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DataSource;
@ -637,9 +638,22 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe
}); });
} }
for (int i = 0; i < trackGroups.size(); i++) { for (Tracks.Group trackGroup : tracks.getGroups()) {
String mimeType = trackGroups.get(i).getTrackFormat(0).sampleMimeType; if (trackGroup.getType() == C.TRACK_TYPE_AUDIO) {
if (mimeType != null && mimeType.contains("audio")) { if (videoType == VIDEO_TYPE_NORMAL && trackGroup.length > 1) {
// Reddit video HLS usually has two audio tracks. The first is mono.
// The second (index 1) is stereo.
// Select the stereo audio track if possible.
trackSelector.setParameters(
trackSelector.buildUponParameters()
.setOverrideForType(new TrackSelectionOverride(
trackGroup.getMediaTrackGroup(),
1
)
)
);
}
if (muteButton.getVisibility() != View.VISIBLE) {
muteButton.setVisibility(View.VISIBLE); muteButton.setVisibility(View.VISIBLE);
muteButton.setOnClickListener(view -> { muteButton.setOnClickListener(view -> {
if (isMute) { if (isMute) {
@ -652,7 +666,7 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe
muteButton.setImageResource(R.drawable.ic_mute_24dp); muteButton.setImageResource(R.drawable.ic_mute_24dp);
} }
}); });
break; }
} }
} }
} else { } else {