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 Collection videoTracks) {
// 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 TypeMethodDescriptionvoidonAudioTracks(Collection<AudioTrack> audioTracks) Apply custom filter logic on AudioTracks.voidonSubtitleTracks(Collection<SubtitleTrack> subtitleTracks) Apply custom filter logic on SubtitleTracks.voidonVideoTracks(Collection<MutableVideoTrack> videoTracks) Apply custom filter logic on VideoTracks.
-
Method Details
-
onVideoTracks
Apply custom filter logic on VideoTracks. Ifqualitiesare 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
-