Merge pull request #10579 from AudricV/exclude-hls-opus-streams-for-playback

Remove OPUS HLS streams from playable streams
This commit is contained in:
Stypox 2023-11-16 08:30:49 +01:00 committed by GitHub
commit bf8890b0df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 5 deletions

View File

@ -189,13 +189,16 @@ public final class ListHelper {
/** /**
* Return a {@link Stream} list which only contains streams which can be played by the player. * Return a {@link Stream} list which only contains streams which can be played by the player.
* <br> *
* Some formats are not supported. For more info, see {@link #SUPPORTED_ITAG_IDS}. * <p>
* 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.
* </p>
* *
* @param <S> the item type's class that extends {@link Stream} * @param <S> the item type's class that extends {@link Stream}
* @param streamList the original stream list * @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 * @return a stream list which only contains streams that can be played the player
*/ */
@NonNull @NonNull
@ -204,6 +207,8 @@ public final class ListHelper {
final int youtubeServiceId = YouTube.getServiceId(); final int youtubeServiceId = YouTube.getServiceId();
return getFilteredStreamList(streamList, return getFilteredStreamList(streamList,
stream -> stream.getDeliveryMethod() != DeliveryMethod.TORRENT stream -> stream.getDeliveryMethod() != DeliveryMethod.TORRENT
&& (stream.getDeliveryMethod() != DeliveryMethod.HLS
|| stream.getFormat() != MediaFormat.OPUS)
&& (serviceId != youtubeServiceId && (serviceId != youtubeServiceId
|| stream.getItagItem() == null || stream.getItagItem() == null
|| SUPPORTED_ITAG_IDS.contains(stream.getItagItem().id))); || SUPPORTED_ITAG_IDS.contains(stream.getItagItem().id)));
@ -295,7 +300,9 @@ public final class ListHelper {
final Comparator<AudioStream> cmp = getAudioFormatComparator(context); final Comparator<AudioStream> cmp = getAudioFormatComparator(context);
for (final AudioStream stream : audioStreams) { for (final AudioStream stream : audioStreams) {
if (stream.getDeliveryMethod() == DeliveryMethod.TORRENT) { if (stream.getDeliveryMethod() == DeliveryMethod.TORRENT
|| (stream.getDeliveryMethod() == DeliveryMethod.HLS
&& stream.getFormat() == MediaFormat.OPUS)) {
continue; continue;
} }