I found nothing similar question
I am using SimpleExoPlayer to play an mp4 video from the internal storage device. In my requirement need to play video normally and play frame by frame such as attachment when user scrolling (realtime). I tried to use method seekTo() but take 400-500mls for the action (not realtime)
I did not find the other method to help me to resolve it. Can anyone help me, please?
I tried on the environment:

If the goal is to make user interaction with the seek bar more responsive, please see #6794. That won't help if you need frame-accurate seeking, though (see also #2191, which is about reverse playback but the same kind of limitations apply for random access).
Thank for replied @andrewlewis
But it's not real-time and exact frame :(
When the user scroll SeekBar between two-step ~ two-frame take about 15-17 milliseconds. But ExoPlayer seekTo not fast enough, so Video Preview not smooth
If the goal is to advance forwards by one frame and render it each time the user presses a button, I think you need to have fine-grained control over the player position and prevent rendering multiple frames. That is not really easy to do at the moment, but I think it's possible by (for example) writing a custom video renderer that controls the media clock and has a method that you can call to trigger rendering one frame and advancing the player position accordingly.
If the goal is to give random access in the stream, it's likely not to be feasible to do in general. This is what #2191 is about.
Thank for support
I 've resolved it 馃憤
The first I am using ExoPlayer to play a video and create a MediaCodec to extract all frames
When touching on the SeekBar i use the GLES to render those frames via GLUtils.texImage2D and call pause the media
When touch-up I call ExoPlayer to seek to the position
When user click play I hide the frame draw before :)
It's working for me :)) Thanks!
Cool, glad you got it to work!