Android-切换wifi后,Exoplayer无法播放离线下载内容

问题描述

如果我在关闭wifi的情况下启动我的应用,则离线下载的视频可以正常播放。

但是在切换wifi(打开,然后关闭)之后,现在观看同一视频时出现黑屏。唯一错误消息:

E/ExoPlayerImplInternal: Source error.

有人遇到过类似的事情吗?

有关如何获取MediaSource的代码

SimpleCache sc = ...
DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(app,"exoplayer-test");
DefaultExtractorsFactory extractorsFactory = new DefaultExtractorsFactory().setConstantBitrateSeekingEnabled(true);
CacheDataSourceFactory cacheDataSourceFactory = new CacheDataSourceFactory(sc,dataSourceFactory,CacheDataSource.FLAG_BLOCK_ON_CACHE);
MediaSource mediaSource = new HlsMediaSource.Factory(cacheDataSourceFactory).createMediaSource(uri);

解决方法

设置PlaylistParserFactory时似乎要修复

mediaSource = new HlsMediaSource.Factory(cacheDataSourceFactory)
    .setPlaylistParserFactory(
        new FilteringHlsPlaylistParserFactory(
            new DefaultHlsPlaylistParserFactory(),Collections.singletonList(new StreamKey(HlsMasterPlaylist.GROUP_INDEX_VARIANT,0))))
    .createMediaSource(uri);

我按照此处https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/source/hls/offline/HlsDownloader.html的说明下载了原始视频