在使用ExoPlayer播放m3u8时,有些url会返回302,但用电脑中的播放器可以播放,这是为什么?原因是有些URL进行了http与https之间的跳转。
ExoPlayer默认仅支持如下跳转
1. HTTP与HTTP之间;
2. HTTPS与HTTPS之间;
参考链接:
https://github.com/google/ExoPlayer/issues/423
解决方案:
ExoPlayer在创建时使用allowCrossProtocolRedirects激活跨协议跳转,代码如下:
public DataSource.Factory buildDataSourceFactory() {
//设置带宽监测
mDefaultBandwidthMeter =new DefaultBandwidthMeter();
DefaultDataSourceFactory upstreamFactory =new DefaultDataSourceFactory(
this.getContext(),
mDefaultBandwidthMeter,
new DefaultHttpDataSourceFactory(mUserAgent,15000,15000,true));
return buildReadOnlyCacheDataSource(upstreamFactory, getDownloadCache());
}
参考链接:
https://github.com/google/ExoPlayer/issues/1190