Interface PlayerModelFilter
- All Known Implementing Classes:
AbstractPlayerModelFilter
public interface PlayerModelFilter
Interface which allows to filter
Each method should remove the non-desired tracks from the provided
Example implementation:
Tracks
, before
the PlayerModel
is built.
An instance of the Filter should be added to the PlayerController before
opening
it.
Each method should remove the non-desired tracks from the provided
Collections
.
Example implementation:
playerController.addPlayerModelFilter(new PlayerModelFilter() { @Override public void onVideoTracks(@NonNull CollectionvideoTracks) { // Build qualities, we want to keep only the highest bitrate track // for each resolution. SparseIntArray qualitiesMap = new SparseIntArray(); for (VideoTrack track : videoTracks) { for (VideoTrackQuality quality : track.getQualities()) { final int bitrate = quality.getBitrate(); final int width = quality.getWidth(); if (bitrate < 0 || width < 0) { continue; } qualitiesMap.put(width, Math.max(bitrate, qualitiesMap.get(width))); } } // Apply filter for (MutableVideoTrack track : videoTracks) { for (VideoTrackQuality quality : track.getQualities()) { if (qualitiesMap.get(quality.getWidth()) != quality.getBitrate()) { track.removeQuality(quality); } } } } @Override public void onAudioTracks(@NonNull Collection audioTracks) { // Remove italian audio tracks for (Iterator iterator = audioTracks.iterator(); iterator.hasNext(); ) { AudioTrack audioTrack = iterator.next(); if (audioTrack.getLanguage().toLowerCase().contains("it")) { iterator.remove(); } } } @Override public void onSubtitleTracks(@NonNull Collection subtitleTracks) { // Remove French subtitle tracks for (Iterator iterator = subtitleTracks.iterator(); iterator.hasNext(); ) { SubtitleTrack subtitleTrack = iterator.next(); if (subtitleTrack.getLanguage().toLowerCase().contains("fr")) { iterator.remove(); } } } }); playerController.open(playbackBundle);
- Since:
- 4.2.26
-
Method Summary
Modifier and TypeMethodDescriptionvoid
onAudioTracks
(Collection<AudioTrack> audioTracks) Apply custom filter logic on AudioTracks.void
onSubtitleTracks
(Collection<SubtitleTrack> subtitleTracks) Apply custom filter logic on SubtitleTracks.void
onVideoTracks
(Collection<MutableVideoTrack> videoTracks) Apply custom filter logic on VideoTracks.
-
Method Details
-
onVideoTracks
Apply custom filter logic on VideoTracks. Ifqualities
are to be filtered, this can be achieved by callingMutableVideoTrack.removeQuality(VideoTrackQuality)
on its parentVideoTrack
.- Parameters:
videoTracks
- tracks to filter
-
onAudioTracks
Apply custom filter logic on AudioTracks.- Parameters:
audioTracks
- tracks to filter
-
onSubtitleTracks
Apply custom filter logic on SubtitleTracks.- Parameters:
subtitleTracks
- tracks to filter
-