Closed mansurrrr closed 5 years ago
I think this happens because more than one player is trying to acquire the same codec instance (see #5799 also).
Can you reproduce this issue if you are only using a single ExoPlayer instance?
When I checked, the cause was elsewhere. While processing the visibility of textureview, an error occurred when trying to prepare multiple players while textureview is gone. Thank you for your help.
Another question is, if there is an exoplayer inside a particular fragment, I wonder if the player resource is released without explicitly calling player.release
at the time the fragment is destroyed.
You should definitely call release
yourself and not rely on something is releasing codec resources automatically.
That said I would recommend to not instantiate and release the player within a fragment but instead have one single player which you then pass to the fragment when it is attached to the window (or when it needs the player). This is the most efficient and also quickest way. You don't have control of how many fragments the system, creates and when it is attached/detached to the window.
Specifically if all your videos are of the same format, the player can (since v2.10) reuse codec resources efficiently because the renderers can be reused after a first playback. This can help for your pager view use case as well as for recycler view. Please see the Medium blog post we just published around this topic.
Please also note than in this case you should not call stop()
or release()
, at all but just prepare the player with the next media source.
Closing due to inactivity.
[REQUIRED] Question
I have multiple Exoplayers in Recyclerview and i'm calling
player.stop(/* reset */ true)
insideondetachedFromWindow()
of each rowview. After each rowview reattached fromonAttachFromWindow()
, prepare exoplayer with existing mediasource.It works normally when playingback at the first time, but player error occurs when the player is reattached after calling
player.stop(true)
fromonDetachFromWindow()
via recyclerview scrolling. (Please refer to the stacktrace below)player.release()
ononDetachedFromWindow()
instead ofstop(true)
inside of each rowview?(Full stackTrace below)