在 ExoPlayer 2.18.5 版本中,DefaultHttpDataSourceFactory 已被删除,因为它被视为不安全的。相反,建议使用 OkHttpDataSourceFactory 或者使用 DefaultDataSourceFactory 的自定义实现来代替它。

使用 OkHttpDataSourceFactory:

  1. 添加以下依赖项到 build.gradle 文件中:
implementation 'com.squareup.okhttp3:okhttp:4.9.1'
implementation 'com.google.android.exoplayer:extension-okhttp:2.18.5'
  1. 创建 OkHttp 实例:
OkHttpClient okHttpClient = new OkHttpClient();
  1. 创建 OkHttpDataSourceFactory:
OkHttpDataSourceFactory okHttpDataSourceFactory = new OkHttpDataSourceFactory(okHttpClient, 'User-Agent');
  1. 用 OkHttpDataSourceFactory 替换 DefaultHttpDataSourceFactory:
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context, okHttpDataSourceFactory);

使用自定义实现的 DefaultDataSourceFactory:

  1. 创建自定义实现的 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());
    }
}
  1. 在创建 ExoPlayer 时使用 CustomDataSourceFactory:
DataSource.Factory dataSourceFactory = new CustomDataSourceFactory(context, null);
SimpleExoPlayer player = new SimpleExoPlayer.Builder(context).setMediaSourceFactory(new DefaultMediaSourceFactory(dataSourceFactory)).build();
ExoPlayer 2.18.5 中 DefaultHttpDataSourceFactory 被移除的替代方案

原文地址: https://www.cveoy.top/t/topic/jZra 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录