-
Notifications
You must be signed in to change notification settings - Fork 6k
Closed
Labels
Description
Using seekTo() on a ExtractorMediaSource with a local mp3 file will cause a Source Error at the end of the file if a seek was ever preformed that went outside of the buffered region. If all seeks are done within a region that has already been buffered then this exception won't occur. If the ExtractorMediaSource is used within a ConcatenatingMediaSource, this error will cause the ConcatenatingMediaSource to not play the next media source. I first encountered this in my app but I managed to reproduce it in the demo app by altering some of the code. I changed media source in PlayerActivity to only play my local audio files:
MediaSource mediaSource = ExtractorMediaSource(Uri.parse(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI.toString() + "/" + 1854), mediaDataSourceFactory, new DefaultExtractorsFactory(),
null, eventLogger);
The exception produced is:
08-29 13:10:32.049 8691-8859/com.google.android.exoplayer2.demo E/ExoPlayerImplInternal: Source error.
com.google.android.exoplayer2.upstream.ContentDataSource$ContentDataSourceException: java.io.EOFException
at com.google.android.exoplayer2.upstream.ContentDataSource.read(ContentDataSource.java:133)
at com.google.android.exoplayer2.upstream.DefaultDataSource.read(DefaultDataSource.java:142)
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.readFromDataSource(DefaultExtractorInput.java:257)
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.advancePeekPosition(DefaultExtractorInput.java:132)
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.peekFully(DefaultExtractorInput.java:113)
at com.google.android.exoplayer2.extractor.mp3.Mp3Extractor.readSample(Mp3Extractor.java:201)
at com.google.android.exoplayer2.extractor.mp3.Mp3Extractor.read(Mp3Extractor.java:195)
at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:706)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:315)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.io.EOFException
at com.google.android.exoplayer2.upstream.ContentDataSource.read(ContentDataSource.java:133)
at com.google.android.exoplayer2.upstream.DefaultDataSource.read(DefaultDataSource.java:142)
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.readFromDataSource(DefaultExtractorInput.java:257)
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.advancePeekPosition(DefaultExtractorInput.java:132)
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.peekFully(DefaultExtractorInput.java:113)
at com.google.android.exoplayer2.extractor.mp3.Mp3Extractor.readSample(Mp3Extractor.java:201)
at com.google.android.exoplayer2.extractor.mp3.Mp3Extractor.read(Mp3Extractor.java:195)
at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:706)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:315)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
08-29 13:10:32.069 8691-8691/com.google.android.exoplayer2.demo E/EventLogger: playerFailed [55.35]
com.google.android.exoplayer2.ExoPlaybackException
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:389)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
Caused by: com.google.android.exoplayer2.upstream.ContentDataSource$ContentDataSourceException: java.io.EOFException
at com.google.android.exoplayer2.upstream.ContentDataSource.read(ContentDataSource.java:133)
at com.google.android.exoplayer2.upstream.DefaultDataSource.read(DefaultDataSource.java:142)
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.readFromDataSource(DefaultExtractorInput.java:257)
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.advancePeekPosition(DefaultExtractorInput.java:132)
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.peekFully(DefaultExtractorInput.java:113)
at com.google.android.exoplayer2.extractor.mp3.Mp3Extractor.readSample(Mp3Extractor.java:201)
at com.google.android.exoplayer2.extractor.mp3.Mp3Extractor.read(Mp3Extractor.java:195)
at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:706)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:315)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.io.EOFException
at com.google.android.exoplayer2.upstream.ContentDataSource.read(ContentDataSource.java:133)
at com.google.android.exoplayer2.upstream.DefaultDataSource.read(DefaultDataSource.java:142)
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.readFromDataSource(DefaultExtractorInput.java:257)
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.advancePeekPosition(DefaultExtractorInput.java:132)
at com.google.android.exoplayer2.extractor.DefaultExtractorInput.peekFully(DefaultExtractorInput.java:113)
at com.google.android.exoplayer2.extractor.mp3.Mp3Extractor.readSample(Mp3Extractor.java:201)
at com.google.android.exoplayer2.extractor.mp3.Mp3Extractor.read(Mp3Extractor.java:195)
at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:706)
at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:315)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
The Audio File used
Reactions are currently unavailable