ExoPlayer 2.18.5 中 DefaultHttpDataSourceFactory 被移除的替代方案
在 ExoPlayer 2.18.5 版本中,DefaultHttpDataSourceFactory 已被删除,因为它被视为不安全的。相反,建议使用 OkHttpDataSourceFactory 或者使用 DefaultDataSourceFactory 的自定义实现来代替它。
使用 OkHttpDataSourceFactory:
- 添加以下依赖项到 build.gradle 文件中:
implementation 'com.squareup.okhttp3:okhttp:4.9.1'
implementation 'com.google.android.exoplayer:extension-okhttp:2.18.5'
- 创建 OkHttp 实例:
OkHttpClient okHttpClient = new OkHttpClient();
- 创建 OkHttpDataSourceFactory:
OkHttpDataSourceFactory okHttpDataSourceFactory = new OkHttpDataSourceFactory(okHttpClient, 'User-Agent');
- 用 OkHttpDataSourceFactory 替换 DefaultHttpDataSourceFactory:
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context, okHttpDataSourceFactory);
使用自定义实现的 DefaultDataSourceFactory:
- 创建自定义实现的 DefaultDataSourceFactory:
public class CustomDataSourceFactory extends DefaultDataSourceFactory {
public CustomDataSourceFactory(Context context, TransferListener<? super DataSource> listener) {
super(context, listener, new DefaultHttpDataSourceFactory('User-Agent'));
}
@Override
public DataSource createDataSource() {
return new CustomDataSource(getHttpDataSource());
}
}
- 在创建 ExoPlayer 时使用 CustomDataSourceFactory:
DataSource.Factory dataSourceFactory = new CustomDataSourceFactory(context, null);
SimpleExoPlayer player = new SimpleExoPlayer.Builder(context).setMediaSourceFactory(new DefaultMediaSourceFactory(dataSourceFactory)).build();
原文地址: https://www.cveoy.top/t/topic/jZra 著作权归作者所有。请勿转载和采集!