android - Exoplayer只显示黑屏不播放视频
问题描述
当我打开应用程序时,显示黑屏的空播放器,并且播放按钮在一两秒后变为暂停按钮,如下所示,我尝试过
我在应用程序 gradle 文件中使用的依赖项
implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6
implementation 'com.google.android.exoplayer:exoplayer-dash:2.9.6'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.9.6'
implementation 'com.google.android.exoplayer:exoplayer:2.9.6'
我的布局文件-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/exoplayer"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
MainActivity 类
public class MainActivity extends AppCompatActivity {
private PlayerView playerView;
private SimpleExoPlayer player;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
playerView=findViewById(R.id.exoplayer);
}
@Override
protected void onStart() {
super.onStart();
player= ExoPlayerFactory.newSimpleInstance(this,new DefaultTrackSelector());
playerView.setPlayer(player);
DefaultDataSourceFactory dataSourceFactory=new DefaultDataSourceFactory(this,
Util.getUserAgent(this,"exo-demo"));
ExtractorMediaSource mediaSource=new ExtractorMediaSource.Factory(dataSourceFactory)
.createMediaSource(Uri.parse("https://www.youtube.com/watch?v=uMArzRFRgvw&list=WL&index=2&t=0s"));
player.prepare(mediaSource);
player.setPlayWhenReady(true);
}
@Override
protected void onStop() {
super.onStop();
playerView.setPlayer(null);
player.release();
player=null;
}
}
解决方案
private MediaSource buildMediaSource(Context context, String uri) {
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context, "ishant sharma");//exoplayer-codelab
String mediaUrl = "";
if (uri.contains("http")) {
HttpProxyCacheServer proxy = ReplayMeApp.getProxy(context);
String proxyUrl = proxy.getProxyUrl(uri);
mediaUrl = proxyUrl;
}
return new ExtractorMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(mediaUrl));
}
推荐阅读
- html - 如何使用 CSS translateZ?
- android - 使用 PhilJay / MPAndroidChart,我如何截取整个图表而不仅仅是可见的内容?
- node.js - 使用 NodeJs 将图像上传到服务器时出错
- swift - 在哪里使用@StateObject 和 ObservableObject?
- python - 在 python 中编写单元测试时出现 ModuleNotFoundError
- r - 将 lapply 与 R 中两个列表中的数据一起使用
- google-chrome - 为什么我的 chrome 扩展程序上的网站图标变白了?(微软边缘铬)
- flutter - 在 ReorderableListView 中颤动 Checkbox 错误动画
- arrays - Rails:fields_for 迭代编辑表单的列表项
- next.js - 将 NextJS 部署到 Vercel 失败