我想使用 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”均匹配
会不会是我弄错了?
答案 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'