-
Notifications
You must be signed in to change notification settings - Fork 6k
Description
Issue description
When using the OkHttp extension and playing media over http/2, if you seek the player rapidly the OkHttp connection pool eventually will contain a connection that is hung and will never work. This is much easier to get to reproduce in our own application, but it's definitely possible to get to happen in a demo app.
I suspect that a connection isn't being closed properly and the following h/2 connections which are multiplexed over the same socket fail.
Reproduction steps
I have emailed the sample app and the stream to the alias. You need to serve the file over http/2. I used https://www.npmjs.com/package/@http2/ to serve the stream from my machine and used genymotion/emulator.
Setup @http2 to have host.js with the IP of your machine and start it pointing at the directory containing your HLS files.
replace "YOUR_IP" in test_app.nroy.twitter.com.exoplayerplayground.MainActivity#M3U8_URL with the IP of your machine
Run the provided app and play the video. Scrub back and forth using the red scrubber at the top quickly until the video no longer continues playing (it may take 30+ seconds). The sample app includes logging to ensure that you're using http/2 (this issue does not manifest unless using http/2). If you connect stetho, you'll see the player attempting to re-request the .ts segment, receiving the 200 response and headers, but never receiving any bytes.
Link to test content
emailed.
Version of ExoPlayer being used
2.7.0
Device(s) and version(s) of Android being used
geny motion emulator 8.0
nexus 5x 8.0
It takes awhile to reproduce in the sample, it happens almost instantly in our app.
A full bug report captured from the device
emailed