androidx / androidx/media

Issue with Multi-Bitrate Live Stream in ExoPlayer Media3 Demo App (HTTP 403 Response Code)

Open
#1,948 3 comments 0 reactions 1 assignee View on GitHub

@rohitjoins is already working on this.

Since Dec 6, 2024.

needs triage question
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.