为了账号安全,请及时绑定邮箱和手机立即绑定

Exoplayer 活动不播放视频,而是显示空屏幕

Exoplayer 活动不播放视频,而是显示空屏幕

UYOU 2024-01-05 19:57:45
我是 android studio 的新手,在开发人员指南的帮助下我创建了这个exoplayer activity,但它没有播放视频,而是显示一个空屏幕。我button在 MainActivity 中创建了一个,当我单击该按钮时,它应该打开此播放器活动并播放我的 hls 流媒体。请帮忙我的 playlive .xml<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout 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"    tools:context=".playlive">    <com.google.android.exoplayer2.ui.PlayerView        android:id="@+id/exo_buffering"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:focusable="true"        app:resize_mode="fill"        /></androidx.constraintlayout.widget.ConstraintLayout>主要活动package com.example.mystream;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.WindowManager;import android.widget.Button;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);        try {            this.getSupportActionBar().hide();        }catch (Exception e){        }        Button button = findViewById(R.id.button);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Intent activity2Intent = new Intent(getApplicationContext(), playlive.class);                startActivity(activity2Intent);            }        });    }}
查看完整描述

2 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

问题似乎在这两行


HlsMediaSource hlsMediaSource =new HlsMediaSource.Factory(dataSourceFactory).createMediaSource(uri); 

uri= Uri.parse("http://localhost:1935/live/mystream/index.m3u8");

您尝试在初始化之前传递 uri,这导致了问题。


尝试先初始化如下


uri= Uri.parse("http://localhost:1935/live/mystream/index.m3u8");

然后使用它


HlsMediaSource hlsMediaSource =new HlsMediaSource.Factory(dataSourceFactory).createMediaSource(uri); 

这应该可以解决你的问题。


查看完整回答
反对 回复 2024-01-05
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

这是您的要求的详细描述。


检查网络连接的方法


private boolean checkConnection(Context context) 

    {

        final ConnectivityManager mConnMngr= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);


        if (mConnMngr!= null) {

            NetworkInfo mNetworkInfo = mConnMngr.getActiveNetworkInfo();


            if (mNetworkInfo != null) {

                if ((mNetworkInfo .getType() == ConnectivityManager.TYPE_WIFI) {

                    return true;

                } else return mNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE;

            }

        }

        return false;

    }

权限


<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

用法


if (checkConnection(context)) {

   play(); 

} else {

   Toast.makeText(context,"No internet available!",Toast.LENGTH_LONG).show()

}


查看完整回答
反对 回复 2024-01-05
  • 2 回答
  • 0 关注
  • 57 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信