Exoplayer仅显示黑屏而不播放视频

时间:2020-02-18 02:48:55

标签: android android-studio video-streaming 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;
    }
}

1 个答案:

答案 0 :(得分:0)

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));
}
相关问题