diff --git a/app/src/main/java/org/schabi/newpipe/util/ListHelper.java b/app/src/main/java/org/schabi/newpipe/util/ListHelper.java index 5918ece25..534d4fddd 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ListHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ListHelper.java @@ -189,13 +189,16 @@ public final class ListHelper { /** * Return a {@link Stream} list which only contains streams which can be played by the player. - *
- * Some formats are not supported. For more info, see {@link #SUPPORTED_ITAG_IDS}. - * Torrent streams are also removed, because they cannot be retrieved. + * + *

+ * Some formats are not supported, see {@link #SUPPORTED_ITAG_IDS} for more details. + * Torrent streams are also removed, because they cannot be retrieved, like OPUS streams using + * HLS as their delivery method, since they are not supported by ExoPlayer. + *

* * @param the item type's class that extends {@link Stream} * @param streamList the original stream list - * @param serviceId + * @param serviceId the service ID from which the streams' list comes from * @return a stream list which only contains streams that can be played the player */ @NonNull @@ -204,6 +207,8 @@ public final class ListHelper { final int youtubeServiceId = YouTube.getServiceId(); return getFilteredStreamList(streamList, stream -> stream.getDeliveryMethod() != DeliveryMethod.TORRENT + && (stream.getDeliveryMethod() != DeliveryMethod.HLS + || stream.getFormat() != MediaFormat.OPUS) && (serviceId != youtubeServiceId || stream.getItagItem() == null || SUPPORTED_ITAG_IDS.contains(stream.getItagItem().id))); @@ -295,7 +300,9 @@ public final class ListHelper { final Comparator cmp = getAudioFormatComparator(context); for (final AudioStream stream : audioStreams) { - if (stream.getDeliveryMethod() == DeliveryMethod.TORRENT) { + if (stream.getDeliveryMethod() == DeliveryMethod.TORRENT + || (stream.getDeliveryMethod() == DeliveryMethod.HLS + && stream.getFormat() == MediaFormat.OPUS)) { continue; }