ExoPlayer refuse to run video android

Viewed 21

iam using exoPlayer to play video url from realtime database but exoPlayer refuse to run video when i press play button, and i use last version from library implementation 'com.google.android.exoplayer:exoplayer:2.18.1'.

this is my first time using ExoPlayer i dont know how fix it.

the following error catched in logcat:

logcat

2022-09-19 21:06:44.435 16179-20518/com.example.task17 E/ExoPlayerImplInternal: Playback error
      com.google.android.exoplayer2.ExoPlaybackException: Source error

viewHolder

public class viewHolder extends RecyclerView.ViewHolder {

    View mView;
    ExoPlayer exoPlayer;
    private PlayerView mExoPlayerView;
    ArrayList<member> mediaSources_contents = new ArrayList<>();


   public viewHolder(@NonNull View itemView) {
        super(itemView);

        mView = itemView;

    }

        public void setVideo(final Context ctx, String title, final String url){

        TextView mTextView = mView.findViewById(R.id.titletv);
        mExoPlayerView = mView.findViewById(R.id.exoPlayer_view);


            mTextView.setText(title);
        try {

            exoPlayer = new  ExoPlayer.Builder(ctx).build();
            Uri video = Uri.parse(url);
            MediaSource mediaSource = new ProgressiveMediaSource.Factory(new 
            FileDataSource.Factory()).createMediaSource(MediaItem.fromUri(video));


            mExoPlayerView.setPlayer(exoPlayer);
            exoPlayer.prepare(mediaSource);
            exoPlayer.setPlayWhenReady(false);

        } catch (Exception e) {
            Log.e( "ViewHolder", "exoPlayer Error"+ e.toString());
            e.printStackTrace();
        }
    }
}

Main Activty

public class MainActivity extends AppCompatActivity {

    RecyclerView mRecyclerView;
    FirebaseDatabase database;
    DatabaseReference reference;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mRecyclerView = findViewById(R.id.recyclerview_video);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

        database = FirebaseDatabase.getInstance();

        reference = database.getReference("video");

    }

    @Override
    protected void onStart() {
        super.onStart();

        FirebaseRecyclerOptions<member> options =
                new FirebaseRecyclerOptions.Builder<member>()
                        .setQuery(reference, member.class)
                        .build();

        FirebaseRecyclerAdapter<member,viewHolder> firebaseRecyclerAdapter =
                new FirebaseRecyclerAdapter<member, viewHolder>(options) {
                    @Override
                    protected void onBindViewHolder(@NonNull viewHolder holder, int position, 
                    @NonNull member model) {
                        holder.setVideo(MainActivity.this,model.getTitle(),model.getUrl());
                    }

                    @NonNull
                    @Override
                    public viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int 
                    viewType) {
                    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row, 
                    parent, false);
                    viewHolder viewHolder = new viewHolder(view);
                    return viewHolder;
                }
            };

        mRecyclerView.setAdapter(firebaseRecyclerAdapter);
        firebaseRecyclerAdapter.startListening();
    }
}

realtime structure

video

1

title:"video 1"

url: "link"

2

title:"video 2"

url: "link"

0 Answers
Related