androidx / androidx/media

Not able to play specific video quality

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

@microkatz is already working on this.

Since Dec 5, 2025.

bug
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

https://d3h6zjaqbnx4yp.cloudfront.net/isuued_file/176224657492867316486/176224657492867316486_7316486.m3u8

Bug Report
  • You will email the zip file produced by adb bugreport to android-media-github@google.com after filing this issue.

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.