在使用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