Saturday 7 November 2020

slow loading of video exoplayer

So I am using a custom controller layout for ExoPlayer and if the seek of the DefaultTimeBar is at 00:01 and I go to 00:03 there is like a 3 or 4 second delay.The video I am trying to play is in my sdcard.

And the video size is 813kb and is mp4

Do I need to increase buffer segment size or do I need a custom load control?

Player:

public class VideoPlayer extends AppCompatActivity {

    PlayerView playerView;
    SimpleExoPlayer simpleExoPlayer;


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

        
    }

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

        playerView = findViewById(R.id.exoPlayer);
        File file = new File("sdcard/" + Environment.DIRECTORY_DOWNLOADS + "/" + "playthis.mp4");
        Uri uri = Uri.fromFile(file);
        Uri uri1 = Uri.parse("file://" + uri);
        LoadControl loadControl = new DefaultLoadControl()
        BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
        TrackSelector trackSelector = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(bandwidthMeter));
        simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl);
        MediaSource mediaSource = buildMediaSource(uri1);
        playerView.setPlayer(simpleExoPlayer);
        playerView.setKeepScreenOn(true);
        simpleExoPlayer.prepare(mediaSource);
        simpleExoPlayer.setPlayWhenReady(true);
        simpleExoPlayer.addListener(new Player.EventListener() {
            @Override
            public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
                if(playWhenReady && playbackState==ExoPlayer.STATE_READY){
                    
                }
                if (playbackState == ExoPlayer.STATE_ENDED) {
                    

                    finish();
                }
            }
        });

       

    }
    public MediaSource buildMediaSource(Uri uri){
        return new ExtractorMediaSource.Factory(new DefaultDataSourceFactory(this,"Test3")).createMediaSource(uri);
    } 
}


xml for custom controller:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
             android:layout_height="match_parent">
    <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content"
                 android:layout_gravity="center" style="@style/ExoMediaButton.Pause"
                 android:src="@drawable/pause_button_increased" android:id="@+id/exo_pause"/>

    <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content"
                 android:layout_gravity="center"
                 android:src="@drawable/play_button_increased"
                 style="@style/ExoMediaButton.Play" android:id="@+id/exo_play" android:cropToPadding="true"
                 android:adjustViewBounds="true"/>

    <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content"
                 android:layout_gravity="start|center" style="@style/ExoMediaButton.Previous"
                 android:layout_marginStart="250dp"
                 android:src="@drawable/prev_button" android:id="@+id/exo_prev"/>

    <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content"
                 android:layout_gravity="end|center" android:layout_marginEnd="250dp"
                 style="@style/ExoMediaButton.Next"
                 android:src="@drawable/next_button" android:id="@+id/exo_next"/>

    <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content"
                 android:layout_gravity="start"
                 android:rotation="180" android:layout_marginStart="15dp"
                 android:layout_marginTop="20dp"
                 android:src="@drawable/settings_icon_back" android:onClick="endActivity" android:background="@null"/>
    <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content"
                 android:layout_gravity="end" android:layout_marginEnd="10dp"
                 android:layout_marginTop="10dp" android:rotation="90"
                 android:src="@drawable/menu_overflow_vector"
                 android:onClick="addOverlay"
                 android:id="@+id/video_menu" android:background="@null"/>
    <TextView android:layout_width="40dp" android:layout_height="30dp"
              android:layout_gravity="bottom|end"
              android:layout_marginBottom="5dp"
              android:id="@+id/exo_duration" android:textColor="#FFFFFF" android:layout_marginTop="10dp"
              android:layout_marginEnd="72dp"/>
    <TextView android:layout_width="40dp" android:layout_height="30dp"
              android:layout_gravity="start|bottom" android:layout_marginStart="72dp"
              android:layout_marginBottom="5dp" android:layout_marginTop="10dp"
              android:id="@+id/playedTillNow" android:textColor="#FFFFFF"/>

    <TextView android:layout_height="wrap_content" android:layout_width="wrap_content"
              android:id="@+id/videoName" android:layout_gravity="top" android:layout_marginStart="60dp"
              android:layout_marginTop="20dp" android:textColor="#FFFFFF" android:textStyle="bold"/>

    <com.google.android.exoplayer2.ui.DefaultTimeBar
            android:layout_width="500dp" android:layout_height="26dp"
            android:id="@+id/exo_progress"
            android:layout_gravity="bottom|center"
            app:unplayed_color="#000000"
            android:layout_marginBottom="12dp" app:played_color="@color/crimson"/>

</FrameLayout>

How do I fix the delay?



from slow loading of video exoplayer

No comments:

Post a Comment