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的说明下载了原始视频

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...