Not able to play specific video quality
@microkatz is already working on this.
Since Dec 5, 2025.
- Dominant language
- Java
- Stars
- 3k
- Forks
- 955
- Avg merge
- 12d 14h
- Merged PRs (30d)
- 2
Description
Version
Media3 main branch
More version details
🐞 ExoPlayer Media3 Bug Report: HLS Adaptive Switch Fails, Only Low Bitrate Renders
Library Version
ExoPlayer/Media3 Version: All version
Issue on all devices.
Media and Content
Manifest URI: https://d3h6zjaqbnx4yp.cloudfront.net/isuued_file/176224657492867316486/176224657492867316486_7316486.m3u8
Media Type: HLS (Muxed Audio/Video, AVC/AAC)
Manifest Snippet:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-STREAM-INF:BANDWIDTH=693880,AVERAGE-BANDWIDTH=510411,RESOLUTION=426x240,FRAME-RATE=25.000,CODECS="avc1.4D4015,mp4a.40.2"
index_1.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1164088,AVERAGE-BANDWIDTH=840375,RESOLUTION=640x360,FRAME-RATE=25.000,CODECS="avc1.4D401E,mp4a.40.2"
index_2.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1477588,AVERAGE-BANDWIDTH=1060375,RESOLUTION=852x480,FRAME-RATE=25.000,CODECS="avc1.4D401E,mp4a.40.2"
index_3.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2798468,AVERAGE-BANDWIDTH=2010763,RESOLUTION=1280x720,FRAME-RATE=25.000,CODECS="avc1.64001F,mp4a.40.2"
index_4.m3u8
📝 Description of Issue
Steps to Reproduce
Initialize ExoPlayer using a DefaultTrackSelector and the provided Master Manifest URI.
Set playWhenReady = true (default "Auto" adaptive start).
What I Expected to Happen
The player should successfully start playback by selecting an appropriate adaptive track (likely 360p or 480p) and render video and audio without issues.
What Actually Happened
The player immediately fails to render the first frame:
Initial Playback Failure: When the player starts on the default "Auto" setting, the screen remains black and there is no audio. The player reports isPlaying=true before onRenderedFirstFrame is hit, indicating a silent stall in the rendering pipeline.
Only 240p Works: The only way to achieve playback is by manually applying a TrackSelectionOverride to force the selection of the lowest quality, 240p track (avc1.4D4015).
Manual Switch Failure: If playback starts successfully at 240p, any subsequent attempt to switch quality (e.g., to 360p, 480p, or 720p) via a TrackSelectionOverride results in the same black screen and silent failure.
🔑 Crucial Debugging Information
This issue appears to be a flaw in the ExoPlayer HLS adaptive switching logic or its interaction with the Android MediaCodec for this specific manifest structure:
Decoder Capable: All higher-bitrate tracks (e.g., 720p, index_4.m3u8) play perfectly fine when their individual child manifest URLs are passed to the player as a standalone stream. This rules out content corruption or a fundamental device decoder limitation.
No Exceptions in Logcat: The failure is silent. No E/ logs are produced with ExoPlaybackException, DecoderInitializationException, or HttpDataSourceException during the initial start-up failure or the manual switch failure. The only related log is onAudioTrackReleased, indicating a pipeline breakdown.
Online Players Work: The video plays successfully across all qualities on web-based players (e.g., Shaka Player demo), confirming the media is compliant.
Devices that reproduce the issue
All Devices
Devices that do not reproduce the issue
None
Reproducible in the demo app?
Yes
Reproduction steps
Just play the url in exoplayer
Expected result
The media plays successfully
Actual result
Not able to play except on 240p
Media
Bug Report
- You will email the zip file produced by
adb bugreportto android-media-github@google.com after filing this issue.
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.