-
Notifications
You must be signed in to change notification settings - Fork 6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ExoPlaybackException: Source error #8586
Comments
I will continue testing without cache in case it's a cache issue, will report soon. |
Cache or no cache same error, even upgrading to version 2.13.1 does not solve it. |
same error. |
From the stack trace that is posted on the description of the issue, the error is raised from the Mp4Extractor, indicating that for some reason the bit stream is malformed. I tried playing the content with v2.13.0 on a device and did not see the error. Since you are seeing this error arbitrarily, it means that something corrupts the data in a non-deterministic manner, assuming you see the same error every time. Can you please perform the following:
|
Happen with HTTPS/HTTP, I noticed the error happened when I use unstable internet (mobile data), but never happened with ADSL. |
On your test with the demo app, please make sure to use HTTPS too. |
never happened with demo app, I used both HTTPS/HTTP |
while i was testing found another error in latest release which cause infinite buffering
|
It's seems the issue in the load control, I run the video 6 times so far no error on version 2.12.2 without load control private fun initPlayer() {
val renderersFactory = DefaultRenderersFactory(this)
player = SimpleExoPlayer.Builder(this, renderersFactory)
.setHandleAudioBecomingNoisy(true)
.build()
} will continue testing just to make sure |
With load control, it's happen more frequently. private fun initPlayer() {
val allocator = DefaultAllocator(true, C.DEFAULT_BUFFER_SEGMENT_SIZE)
val loadControl = DefaultLoadControl.Builder()
.setAllocator(allocator)
.setTargetBufferBytes(C.LENGTH_UNSET)
.setBufferDurationsMs(10000, 120000, 1000, 1000)
.setPrioritizeTimeOverSizeThresholds(true)
.build()
val renderersFactory = DefaultRenderersFactory(this)
player = SimpleExoPlayer.Builder(this, renderersFactory)
.setLoadControl(loadControl)
.setHandleAudioBecomingNoisy(true)
.build()
} Without load control it's happen but very rare, and only happened with me while internet (mobile data) high ping and slow speed |
From the information you have provided so far, it looks like the error appears on your app with mobile data and using the custom load control. To narrow down the problem, can you please try using the following:
If it happens with the demo app in any of the above scenarios, it would help indicate if it's the mobile data or the custom load control. update: I have tried with the custom load control of the snippet above on the demo app and have not been able to reproduce. |
Sorry for taking too long, here the test result
I could not reproduce it without changing anything
the error happened while using mobile data and not with ADSL changed useragent in ExoPlayer/demos/main/src/main/java/com/google/android/exoplayer2/demo/DemoUtil.java Lines 62 to 68 in 4364b91
and changed ExoPlayer/demos/main/src/main/java/com/google/android/exoplayer2/demo/DemoUtil.java Line 60 in 4364b91
the modified code used in the demo app protected boolean initializePlayer() {
if (player == null) {
Intent intent = getIntent();
mediaItems = createMediaItems(intent);
if (mediaItems.isEmpty()) {
return false;
}
boolean preferExtensionDecoders = intent.getBooleanExtra(IntentUtil.PREFER_EXTENSION_DECODERS_EXTRA, false);
RenderersFactory renderersFactory = DemoUtil.buildRenderersFactory(this, preferExtensionDecoders);
MediaSourceFactory mediaSourceFactory = new ProgressiveMediaSource.Factory(dataSourceFactory);
DefaultLoadControl defaultLoadControl = new DefaultLoadControl.Builder()
.setAllocator(new DefaultAllocator(true, C.DEFAULT_BUFFER_SEGMENT_SIZE))
.setTargetBufferBytes(C.LENGTH_UNSET)
.setBufferDurationsMs(10000, 120000, 1000, 1000)
.setPrioritizeTimeOverSizeThresholds(true)
.build();
player = new SimpleExoPlayer.Builder(this, new DefaultRenderersFactory(this))
.setLoadControl(defaultLoadControl)
.setMediaSourceFactory(mediaSourceFactory)
.build();
player.setPlayWhenReady(startAutoPlay);
playerView.setPlayer(player);
}
boolean haveStartPosition = startWindow != C.INDEX_UNSET;
if (haveStartPosition) {
player.seekTo(startWindow, startPosition);
}
player.setMediaItems(mediaItems, !haveStartPosition);
player.prepare();
updateButtonVisibility();
return true;
} stacktrace
|
I'm afraid I wasn't able to reproduce using mobile data too. At this point, the data points we have are:
Unfortunately, without a clear reproduction step, we can only offer debugging assistance. Given the data we have so far, my next step of investigation would be to check whether what is being transferred over the mobile data connection is correct. That said, have you been using the same mobile operator in all your tests? Have you tried using a different operator? A way to verify the downloaded data match the expected file would be to store the file locally as it is being downloaded and, if the error occurs, to compare the downloaded data with the equivalent bytes from the original file. You can store downloaded data by wrapping the DefaultHttpDataSource with a TeeDataSource. Eg, you can update
|
will test that and report back soon |
Marking |
Hey @badrazizi. We need more information to resolve this issue but there hasn't been an update in 14 weekdays. I'm marking the issue as stale and if there are no new updates in the next 7 days I will close it automatically. If you have more information that will help us get to the bottom of this, just add a comment! |
Since there haven't been any recent updates here, I am going to close this issue. @badrazizi if you're still experiencing this problem and want to continue the discussion just leave a comment here and we are happy to re-open this. |
reported by multiple user on different device and android version sudden stop which happen completely random with mp4 stream at different time. When try to resume, video resume fine, but some time there no audio or get corrupted this error randomly happen with different stream source, which did not happen with the old version ( 2.8.3 ) after updating to version ( 2.12.2 ) more than a month ago, I start seeing this error in the log that user report.
I tried to reproduce it but only happened once after multiple tries with the same error.
Link used http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4.
Stack Trace
Code
Cache
The text was updated successfully, but these errors were encountered: