向 ExoPlayer 的请求添加授权令牌

时间:2021-07-03 18:15:01

标签: java android exoplayer2.x

我想使用 ExoPlayer 从我的服务器流式传输视频,该服务器使用令牌身份验证来验证用户是否被允许读取文件 (Django),为此我必须在请求的标头中包含一个身份验证令牌,像这样

 Authorization Token d4637461d8d7ea159884264beef618b6a6e90485 

来自 https://exoplayer.dev/customization.html 的 ExoPlayer 文档说我必须这样做

 DataSource.Factory dataSourceFactory = () -> {
     HttpDataSource dataSource = httpDataSourceFactory.createDataSource();
     // Set a custom authentication request header.
     dataSource.setRequestProperty("Header", "Value");
     return dataSource;
 };

然后我像这样设置我的播放器

 SimpleExoPlayer player = new SimpleExoPlayer.Builder(context)
      .setMediaSourceFactory(new DefaultMediaSourceFactory(dataSourceFactory))
      .build();

但 Android Studio 表示无法解析符号 httpDataSourceFactory。所以我向上滚动以找到任何名为 httpDataSourceFactory 的变量,我发现它是

 // Build a HttpDataSource.Factory with cross-protocol redirects enabled.
 HttpDataSource.Factory httpDataSourceFactory =
      new DefaultHttpDataSource.Factory().setAllowCrossProtocolRedirects(true);

但现在我收到错误

<块引用>

对“Factory”的引用不明确,“com.google.android.exoplayer2.upstream.DataSource.Factory”和“com.google.android.exoplayer2.upstream.HttpDataSource.Factory”均匹配

Error 2

会不会是我弄错了?

1 个答案:

答案 0 :(得分:0)

我在文档中使用的依赖项是

 implementation 'com.google.android.exoplayer:exoplayer-core:2.12.0'
 implementation 'com.google.android.exoplayer:exoplayer-dash:2.12.0'
 implementation 'com.google.android.exoplayer:exoplayer-ui:2.12.0'

当我将依赖项升级到时,错误就解决了

implementation 'com.google.android.exoplayer:exoplayer-core:2.14.1'
implementation 'com.google.android.exoplayer:exoplayer-dash:2.14.1'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.14.1'