mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-30 23:03:00 +00:00 
			
		
		
		
	Use Android11+ extractors
This commit is contained in:
		| @@ -177,12 +177,12 @@ import org.schabi.newpipe.player.resolver.MediaSourceTag; | ||||
| import org.schabi.newpipe.player.resolver.VideoPlaybackResolver; | ||||
| import org.schabi.newpipe.player.seekbarpreview.SeekbarPreviewThumbnailHelper; | ||||
| import org.schabi.newpipe.player.seekbarpreview.SeekbarPreviewThumbnailHolder; | ||||
| import org.schabi.newpipe.util.StreamTypeUtil; | ||||
| import org.schabi.newpipe.util.DeviceUtils; | ||||
| import org.schabi.newpipe.util.ListHelper; | ||||
| import org.schabi.newpipe.util.NavigationHelper; | ||||
| import org.schabi.newpipe.util.PicassoHelper; | ||||
| import org.schabi.newpipe.util.SerializedCache; | ||||
| import org.schabi.newpipe.util.StreamTypeUtil; | ||||
| import org.schabi.newpipe.util.external_communication.KoreUtils; | ||||
| import org.schabi.newpipe.util.external_communication.ShareUtils; | ||||
| import org.schabi.newpipe.views.ExpandableSurfaceView; | ||||
|   | ||||
| @@ -1,14 +1,18 @@ | ||||
| package org.schabi.newpipe.player.helper; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.os.Build; | ||||
|  | ||||
| import androidx.annotation.NonNull; | ||||
|  | ||||
| import com.google.android.exoplayer2.source.MediaParserExtractorAdapter; | ||||
| import com.google.android.exoplayer2.source.ProgressiveMediaSource; | ||||
| import com.google.android.exoplayer2.source.SingleSampleMediaSource; | ||||
| import com.google.android.exoplayer2.source.chunk.MediaParserChunkExtractor; | ||||
| import com.google.android.exoplayer2.source.dash.DashMediaSource; | ||||
| import com.google.android.exoplayer2.source.dash.DefaultDashChunkSource; | ||||
| import com.google.android.exoplayer2.source.hls.HlsMediaSource; | ||||
| import com.google.android.exoplayer2.source.hls.MediaParserHlsMediaChunkExtractor; | ||||
| import com.google.android.exoplayer2.source.smoothstreaming.DefaultSsChunkSource; | ||||
| import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource; | ||||
| import com.google.android.exoplayer2.upstream.DataSource; | ||||
| @@ -40,17 +44,33 @@ public class PlayerDataSource { | ||||
|     } | ||||
|  | ||||
|     public HlsMediaSource.Factory getLiveHlsMediaSourceFactory() { | ||||
|         return new HlsMediaSource.Factory(cachelessDataSourceFactory) | ||||
|                 .setAllowChunklessPreparation(true) | ||||
|                 .setLoadErrorHandlingPolicy( | ||||
|                         new DefaultLoadErrorHandlingPolicy(MANIFEST_MINIMUM_RETRY)); | ||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { | ||||
|             return new HlsMediaSource.Factory(cachelessDataSourceFactory) | ||||
|                     .setExtractorFactory(MediaParserHlsMediaChunkExtractor.FACTORY) | ||||
|                     .setAllowChunklessPreparation(true) | ||||
|                     .setLoadErrorHandlingPolicy( | ||||
|                             new DefaultLoadErrorHandlingPolicy(MANIFEST_MINIMUM_RETRY)); | ||||
|         } else { | ||||
|             return new HlsMediaSource.Factory(cachelessDataSourceFactory) | ||||
|                     .setAllowChunklessPreparation(true) | ||||
|                     .setLoadErrorHandlingPolicy( | ||||
|                             new DefaultLoadErrorHandlingPolicy(MANIFEST_MINIMUM_RETRY)); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public DashMediaSource.Factory getLiveDashMediaSourceFactory() { | ||||
|         return new DashMediaSource.Factory(new DefaultDashChunkSource.Factory( | ||||
|                 cachelessDataSourceFactory), cachelessDataSourceFactory) | ||||
|                 .setLoadErrorHandlingPolicy( | ||||
|                         new DefaultLoadErrorHandlingPolicy(MANIFEST_MINIMUM_RETRY)); | ||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { | ||||
|             return new DashMediaSource.Factory(new DefaultDashChunkSource.Factory( | ||||
|                     MediaParserChunkExtractor.FACTORY, | ||||
|                     cachelessDataSourceFactory, 1), cachelessDataSourceFactory) | ||||
|                     .setLoadErrorHandlingPolicy( | ||||
|                             new DefaultLoadErrorHandlingPolicy(MANIFEST_MINIMUM_RETRY)); | ||||
|         } else { | ||||
|             return new DashMediaSource.Factory(new DefaultDashChunkSource.Factory( | ||||
|                     cachelessDataSourceFactory), cachelessDataSourceFactory) | ||||
|                     .setLoadErrorHandlingPolicy( | ||||
|                             new DefaultLoadErrorHandlingPolicy(MANIFEST_MINIMUM_RETRY)); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public SsMediaSource.Factory getSsMediaSourceFactory() { | ||||
| @@ -59,18 +79,36 @@ public class PlayerDataSource { | ||||
|     } | ||||
|  | ||||
|     public HlsMediaSource.Factory getHlsMediaSourceFactory() { | ||||
|         return new HlsMediaSource.Factory(cacheDataSourceFactory); | ||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { | ||||
|             return new HlsMediaSource.Factory(cacheDataSourceFactory) | ||||
|                     .setExtractorFactory(MediaParserHlsMediaChunkExtractor.FACTORY); | ||||
|         } else { | ||||
|             return new HlsMediaSource.Factory(cacheDataSourceFactory); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public DashMediaSource.Factory getDashMediaSourceFactory() { | ||||
|         return new DashMediaSource.Factory(new DefaultDashChunkSource.Factory( | ||||
|                 cacheDataSourceFactory), cacheDataSourceFactory); | ||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { | ||||
|             return new DashMediaSource.Factory(new DefaultDashChunkSource.Factory( | ||||
|                     MediaParserChunkExtractor.FACTORY, | ||||
|                     cacheDataSourceFactory, 1), cacheDataSourceFactory); | ||||
|         } else { | ||||
|             return new DashMediaSource.Factory(new DefaultDashChunkSource.Factory( | ||||
|                     cacheDataSourceFactory), cacheDataSourceFactory); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public ProgressiveMediaSource.Factory getExtractorMediaSourceFactory() { | ||||
|         return new ProgressiveMediaSource.Factory(cacheDataSourceFactory) | ||||
|                 .setLoadErrorHandlingPolicy( | ||||
|                         new DefaultLoadErrorHandlingPolicy(EXTRACTOR_MINIMUM_RETRY)); | ||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { | ||||
|             return new ProgressiveMediaSource.Factory(cacheDataSourceFactory, | ||||
|                     MediaParserExtractorAdapter.FACTORY) | ||||
|                     .setLoadErrorHandlingPolicy( | ||||
|                             new DefaultLoadErrorHandlingPolicy(EXTRACTOR_MINIMUM_RETRY)); | ||||
|         } else { | ||||
|             return new ProgressiveMediaSource.Factory(cacheDataSourceFactory) | ||||
|                     .setLoadErrorHandlingPolicy( | ||||
|                             new DefaultLoadErrorHandlingPolicy(EXTRACTOR_MINIMUM_RETRY)); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public SingleSampleMediaSource.Factory getSampleMediaSourceFactory() { | ||||
|   | ||||
| @@ -1,5 +1,18 @@ | ||||
| package org.schabi.newpipe.player.helper; | ||||
|  | ||||
| import static com.google.android.exoplayer2.Player.REPEAT_MODE_ALL; | ||||
| import static com.google.android.exoplayer2.Player.REPEAT_MODE_OFF; | ||||
| import static com.google.android.exoplayer2.Player.REPEAT_MODE_ONE; | ||||
| import static org.schabi.newpipe.player.Player.IDLE_WINDOW_FLAGS; | ||||
| import static org.schabi.newpipe.player.Player.PLAYER_TYPE; | ||||
| import static org.schabi.newpipe.player.helper.PlayerHelper.AutoplayType.AUTOPLAY_TYPE_ALWAYS; | ||||
| import static org.schabi.newpipe.player.helper.PlayerHelper.AutoplayType.AUTOPLAY_TYPE_NEVER; | ||||
| import static org.schabi.newpipe.player.helper.PlayerHelper.AutoplayType.AUTOPLAY_TYPE_WIFI; | ||||
| import static org.schabi.newpipe.player.helper.PlayerHelper.MinimizeMode.MINIMIZE_ON_EXIT_MODE_BACKGROUND; | ||||
| import static org.schabi.newpipe.player.helper.PlayerHelper.MinimizeMode.MINIMIZE_ON_EXIT_MODE_NONE; | ||||
| import static org.schabi.newpipe.player.helper.PlayerHelper.MinimizeMode.MINIMIZE_ON_EXIT_MODE_POPUP; | ||||
| import static java.lang.annotation.RetentionPolicy.SOURCE; | ||||
|  | ||||
| import android.annotation.SuppressLint; | ||||
| import android.content.Context; | ||||
| import android.content.Intent; | ||||
| @@ -57,19 +70,6 @@ import java.util.Objects; | ||||
| import java.util.Set; | ||||
| import java.util.concurrent.TimeUnit; | ||||
|  | ||||
| import static com.google.android.exoplayer2.Player.REPEAT_MODE_ALL; | ||||
| import static com.google.android.exoplayer2.Player.REPEAT_MODE_OFF; | ||||
| import static com.google.android.exoplayer2.Player.REPEAT_MODE_ONE; | ||||
| import static java.lang.annotation.RetentionPolicy.SOURCE; | ||||
| import static org.schabi.newpipe.player.Player.IDLE_WINDOW_FLAGS; | ||||
| import static org.schabi.newpipe.player.Player.PLAYER_TYPE; | ||||
| import static org.schabi.newpipe.player.helper.PlayerHelper.AutoplayType.AUTOPLAY_TYPE_ALWAYS; | ||||
| import static org.schabi.newpipe.player.helper.PlayerHelper.AutoplayType.AUTOPLAY_TYPE_NEVER; | ||||
| import static org.schabi.newpipe.player.helper.PlayerHelper.AutoplayType.AUTOPLAY_TYPE_WIFI; | ||||
| import static org.schabi.newpipe.player.helper.PlayerHelper.MinimizeMode.MINIMIZE_ON_EXIT_MODE_BACKGROUND; | ||||
| import static org.schabi.newpipe.player.helper.PlayerHelper.MinimizeMode.MINIMIZE_ON_EXIT_MODE_NONE; | ||||
| import static org.schabi.newpipe.player.helper.PlayerHelper.MinimizeMode.MINIMIZE_ON_EXIT_MODE_POPUP; | ||||
|  | ||||
| public final class PlayerHelper { | ||||
|     private static final StringBuilder STRING_BUILDER = new StringBuilder(); | ||||
|     private static final Formatter STRING_FORMATTER | ||||
| @@ -312,7 +312,7 @@ public final class PlayerHelper { | ||||
|         return 500; | ||||
|     } | ||||
|  | ||||
|     public static TrackSelection.Factory getQualitySelector() { | ||||
|     public static ExoTrackSelection.Factory getQualitySelector() { | ||||
|         return new AdaptiveTrackSelection.Factory( | ||||
|                 1000, | ||||
|                 AdaptiveTrackSelection.DEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_MS, | ||||
|   | ||||
| @@ -35,7 +35,7 @@ public interface PlaybackResolver extends Resolver<StreamInfo, MediaSource> { | ||||
|  | ||||
|         return null; | ||||
|     } | ||||
| 0 | ||||
|  | ||||
|     @NonNull | ||||
|     default MediaSource buildLiveMediaSource(@NonNull final PlayerDataSource dataSource, | ||||
|                                              @NonNull final String sourceUrl, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Robin
					Robin