Issue with Multi-Bitrate Live Stream in ExoPlayer Media3 Demo App (HTTP 403 Response Code)
@rohitjoins is already working on this.
Since Dec 6, 2024.
- Dominant language
- Java
- Stars
- 3k
- Forks
- 955
- Avg merge
- 12d 14h
- Merged PRs (30d)
- 2
Description
Dear ExoPlayer Team,
I am encountering an issue with a multi-bitrate live stream while using ExoPlayer (Media3) in my project. The stream fails to play, and I receive the following error:
2024-12-03 13:38:09.854 4425-4425 EventLogger androidx.media3.demo.main E internalError [eventTime=0.14, mediaPos=0.00, window=0, loadError
androidx.media3.datasource.HttpDataSource$InvalidResponseCodeException: Response code: 403
at androidx.media3.datasource.cronet.CronetDataSource.open(CronetDataSource.java:647)
at androidx.media3.datasource.DefaultDataSource.open(DefaultDataSource.java:275)
at androidx.media3.datasource.cache.CacheDataSource.openNextSource(CacheDataSource.java:802)
at androidx.media3.datasource.cache.CacheDataSource.open(CacheDataSource.java:615)
at androidx.media3.datasource.StatsDataSource.open(StatsDataSource.java:86)
at androidx.media3.datasource.DataSourceInputStream.checkOpened(DataSourceInputStream.java:101)
at androidx.media3.datasource.DataSourceInputStream.open(DataSourceInputStream.java:64)
at androidx.media3.exoplayer.upstream.ParsingLoadable.load(ParsingLoadable.java:182)
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:421)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
]
2024-12-03 13:38:09.902 4425-4425 EventLogger androidx.media3.demo.main E internalError [eventTime=0.19, mediaPos=0.00, window=0, loadError
androidx.media3.datasource.HttpDataSource$InvalidResponseCodeException: Response code: 403
at androidx.media3.datasource.cronet.CronetDataSource.open(CronetDataSource.java:647)
at androidx.media3.datasource.DefaultDataSource.open(DefaultDataSource.java:275)
at androidx.media3.datasource.cache.CacheDataSource.openNextSource(CacheDataSource.java:802)
at androidx.media3.datasource.cache.CacheDataSource.open(CacheDataSource.java:615)
at androidx.media3.datasource.StatsDataSource.open(StatsDataSource.java:86)
at androidx.media3.datasource.DataSourceInputStream.checkOpened(DataSourceInputStream.java:101)
at androidx.media3.datasource.DataSourceInputStream.open(DataSourceInputStream.java:64)
at androidx.media3.exoplayer.upstream.ParsingLoadable.load(ParsingLoadable.java:182)
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:421)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
]
2024-12-03 13:38:09.920 4425-4425 EventLogger androidx.media3.demo.main E internalError [eventTime=0.20, mediaPos=0.00, window=0, loadError
androidx.media3.datasource.HttpDataSource$InvalidResponseCodeException: Response code: 403
at androidx.media3.datasource.cronet.CronetDataSource.open(CronetDataSource.java:647)
at androidx.media3.datasource.DefaultDataSource.open(DefaultDataSource.java:275)
at androidx.media3.datasource.cache.CacheDataSource.openNextSource(CacheDataSource.java:802)
at androidx.media3.datasource.cache.CacheDataSource.open(CacheDataSource.java:615)
at androidx.media3.datasource.StatsDataSource.open(StatsDataSource.java:86)
at androidx.media3.datasource.DataSourceInputStream.checkOpened(DataSourceInputStream.java:101)
at androidx.media3.datasource.DataSourceInputStream.open(DataSourceInputStream.java:64)
at androidx.media3.exoplayer.upstream.ParsingLoadable.load(ParsingLoadable.java:182)
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:421)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
]
2024-12-03 13:38:09.962 4425-4425 EventLogger androidx.media3.demo.main E internalError [eventTime=0.25, mediaPos=0.00, window=0, loadError
androidx.media3.datasource.HttpDataSource$InvalidResponseCodeException: Response code: 403
at androidx.media3.datasource.cronet.CronetDataSource.open(CronetDataSource.java:647)
at androidx.media3.datasource.DefaultDataSource.open(DefaultDataSource.java:275)
at androidx.media3.datasource.cache.CacheDataSource.openNextSource(CacheDataSource.java:802)
at androidx.media3.datasource.cache.CacheDataSource.open(CacheDataSource.java:615)
at androidx.media3.datasource.StatsDataSource.open(StatsDataSource.java:86)
at androidx.media3.datasource.DataSourceInputStream.checkOpened(DataSourceInputStream.java:101)
at androidx.media3.datasource.DataSourceInputStream.open(DataSourceInputStream.java:64)
at androidx.media3.exoplayer.upstream.ParsingLoadable.load(ParsingLoadable.java:182)
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:421)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
]
2024-12-03 13:38:10.224 4425-4469 EGL_emulation androidx.media3.demo.main D eglMakeCurrent: 0xeed7ee00: ver 2 0 (tinfo 0xd85fff50)
2024-12-03 13:38:10.745 4425-4469 EGL_emulation androidx.media3.demo.main D eglMakeCurrent: 0xeed7ee00: ver 2 0 (tinfo 0xd85fff50)
2024-12-03 13:38:10.978 4425-4425 EventLogger androidx.media3.demo.main E internalError [eventTime=1.26, mediaPos=0.00, window=0, loadError
androidx.media3.datasource.HttpDataSource$InvalidResponseCodeException: Response code: 403
at androidx.media3.datasource.cronet.CronetDataSource.open(CronetDataSource.java:647)
at androidx.media3.datasource.DefaultDataSource.open(DefaultDataSource.java:275)
at androidx.media3.datasource.cache.CacheDataSource.openNextSource(CacheDataSource.java:802)
at androidx.media3.datasource.cache.CacheDataSource.open(CacheDataSource.java:615)
at androidx.media3.datasource.StatsDataSource.open(StatsDataSource.java:86)
at androidx.media3.datasource.DataSourceInputStream.checkOpened(DataSourceInputStream.java:101)
at androidx.media3.datasource.DataSourceInputStream.open(DataSourceInputStream.java:64)
at androidx.media3.exoplayer.upstream.ParsingLoadable.load(ParsingLoadable.java:182)
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:421)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
]
2024-12-03 13:38:11.018 4425-4425 EventLogger androidx.media3.demo.main E internalError [eventTime=1.30, mediaPos=0.00, window=0, loadError
androidx.media3.datasource.HttpDataSource$InvalidResponseCodeException: Response code: 403
at androidx.media3.datasource.cronet.CronetDataSource.open(CronetDataSource.java:647)
at androidx.media3.datasource.DefaultDataSource.open(DefaultDataSource.java:275)
at androidx.media3.datasource.cache.CacheDataSource.openNextSource(CacheDataSource.java:802)
at androidx.media3.datasource.cache.CacheDataSource.open(CacheDataSource.java:615)
at androidx.media3.datasource.StatsDataSource.open(StatsDataSource.java:86)
at androidx.media3.datasource.DataSourceInputStream.checkOpened(DataSourceInputStream.java:101)
at androidx.media3.datasource.DataSourceInputStream.open(DataSourceInputStream.java:64)
at androidx.media3.exoplayer.upstream.ParsingLoadable.load(ParsingLoadable.java:182)
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:421)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
]
2024-12-03 13:38:13.035 4425-4425 EventLogger androidx.media3.demo.main E internalError [eventTime=3.32, mediaPos=0.00, window=0, loadError
androidx.media3.datasource.HttpDataSource$InvalidResponseCodeException: Response code: 403
at androidx.media3.datasource.cronet.CronetDataSource.open(CronetDataSource.java:647)
at androidx.media3.datasource.DefaultDataSource.open(DefaultDataSource.java:275)
at androidx.media3.datasource.cache.CacheDataSource.openNextSource(CacheDataSource.java:802)
at androidx.media3.datasource.cache.CacheDataSource.open(CacheDataSource.java:615)
at androidx.media3.datasource.StatsDataSource.open(StatsDataSource.java:86)
at androidx.media3.datasource.DataSourceInputStream.checkOpened(DataSourceInputStream.java:101)
at androidx.media3.datasource.DataSourceInputStream.open(DataSourceInputStream.java:64)
at androidx.media3.exoplayer.upstream.ParsingLoadable.load(ParsingLoadable.java:182)
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:421)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
]
2024-12-03 13:38:13.077 4425-4425 EventLogger androidx.media3.demo.main E internalError [eventTime=3.36, mediaPos=0.00, window=0, loadError
androidx.media3.datasource.HttpDataSource$InvalidResponseCodeException: Response code: 403
at androidx.media3.datasource.cronet.CronetDataSource.open(CronetDataSource.java:647)
at androidx.media3.datasource.DefaultDataSource.open(DefaultDataSource.java:275)
at androidx.media3.datasource.cache.CacheDataSource.openNextSource(CacheDataSource.java:802)
at androidx.media3.datasource.cache.CacheDataSource.open(CacheDataSource.java:615)
at androidx.media3.datasource.StatsDataSource.open(StatsDataSource.java:86)
at androidx.media3.datasource.DataSourceInputStream.checkOpened(DataSourceInputStream.java:101)
at androidx.media3.datasource.DataSourceInputStream.open(DataSourceInputStream.java:64)
at androidx.media3.exoplayer.upstream.ParsingLoadable.load(ParsingLoadable.java:182)
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:421)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
]
2024-12-03 13:38:13.083 4425-5242 ExoPlayerImplInternal androidx.media3.demo.main E Playback error
androidx.media3.exoplayer.ExoPlaybackException: Source error
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:736)
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:708)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: androidx.media3.datasource.HttpDataSource$InvalidResponseCodeException: Response code: 403
at androidx.media3.datasource.cronet.CronetDataSource.open(CronetDataSource.java:647)
at androidx.media3.datasource.DefaultDataSource.open(DefaultDataSource.java:275)
at androidx.media3.datasource.cache.CacheDataSource.openNextSource(CacheDataSource.java:802)
at androidx.media3.datasource.cache.CacheDataSource.open(CacheDataSource.java:615)
at androidx.media3.datasource.StatsDataSource.open(StatsDataSource.java:86)
at androidx.media3.datasource.DataSourceInputStream.checkOpened(DataSourceInputStream.java:101)
at androidx.media3.datasource.DataSourceInputStream.open(DataSourceInputStream.java:64)
at androidx.media3.exoplayer.upstream.ParsingLoadable.load(ParsingLoadable.java:182)
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:421)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
2024-12-03 13:38:13.084 4425-4425 EventLogger androidx.media3.demo.main E playerFailed [eventTime=3.37, mediaPos=0.00, window=0, period=0, errorCode=ERROR_CODE_IO_BAD_HTTP_STATUS
androidx.media3.exoplayer.ExoPlaybackException: Source error
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:736)
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:708)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: androidx.media3.datasource.HttpDataSource$InvalidResponseCodeException: Response code: 403
at androidx.media3.datasource.cronet.CronetDataSource.open(CronetDataSource.java:647)
at androidx.media3.datasource.DefaultDataSource.open(DefaultDataSource.java:275)
at androidx.media3.datasource.cache.CacheDataSource.openNextSource(CacheDataSource.java:802)
at androidx.media3.datasource.cache.CacheDataSource.open(CacheDataSource.java:615)
at androidx.media3.datasource.StatsDataSource.open(StatsDataSource.java:86)
at androidx.media3.datasource.DataSourceInputStream.checkOpened(DataSourceInputStream.java:101)
at androidx.media3.datasource.DataSourceInputStream.open(DataSourceInputStream.java:64)
at androidx.media3.exoplayer.upstream.ParsingLoadable.load(ParsingLoadable.java:182)
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:421)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
This issue persists even when testing the same stream in the official ExoPlayer demo app, where it generates the same 403 error. However, the same stream works perfectly fine in other players such as VLC, without requiring any additional headers or special configurations.
I suspect this might be related to how ExoPlayer handles HTTP requests or data sources for the stream. If needed, I can provide the stream link for further testing and debugging on your end.
Could you please assist in identifying the cause of this issue? If there are any specific configurations or adjustments required to make ExoPlayer compatible with such streams, I would greatly appreciate your guidance.
Looking forward to your response.
Best regards,
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.