androidx / androidx/media

Player gets stuck in the "loading" state after seekToNext/Prev MediaItem

Open
#1,541 14 comments 7 reactions 1 assignee View on GitHub

@rohitjoins is already working on this.

Since Jul 12, 2024.

bug needs triage
Dominant language
Java
Stars
3k
Forks
955
Avg merge
12d 14h
Merged PRs (30d)
2

Description

Version

Media3 1.3.1

More version details

Tested on:

  • 1.1.0
  • 1.3.1
  • release-1.4.0-rc01
Devices that reproduce the issue
  • Pixel 8 Pro (Android 15) - AP31.240517.022
  • Pixel Fold (Android 14) - AP2A.240705.004
  • Pixel 7 Pro (Android 14) - AP2A.240705.004
  • Pixel 6a (Android 14) - AP2A.240605.024
  • I guess, any Android 14+ device with Google Tensor (not sure)
Devices that do not reproduce the issue
  • Pixel 4a 5G (Android 14) - UP1A.231105.001.B2
  • Pixel 5 (Android 14) - UP1A.231105.001
  • Samsung s23 ultra (Android 14)
  • Samsung s22 ultra (Android 14)
  • Oneplus 7 Pro (Android 13)
Reproducible in the demo app?

Yes

Reproduction steps

I see that the problem only occurs when I switch between two HLS videos with different aspect ratios (from vertical to horizontal)

It is easier to test using the sample app: https://github.com/Stronger197/ExoIssue
but you can also reproduce this in "demo-session" app by replacing the source links.

Sample app:

  1. Open the app
  2. Click "next" until the 3rd video appears
  3. Check the media playback notification (infinite loading)

Media3 demo app:

  1. Insert the provided links into "demo-session app" to play them as playlist (via catalog.json for example)
  2. Click "next" until the 3rd video appears
  3. Infinite loading
Expected result

Playlist is playing normally

Actual result

The video gets stuck in the "EventLogger: loading" state.
But when I minimize the app, playback resumes as normal.

Videos:

https://github.com/androidx/media/assets/21480083/fda99f9b-4a9d-4fa0-b5ea-73789a9eb75f

https://github.com/androidx/media/assets/21480083/69bd65a6-59b2-4dd8-ad5a-b7ade62b6e93

Logcat:

EventLogger             androidx.media3.demo.session         D  loading [eventTime=15.72, mediaPos=2.10, window=1, period=1, false]
EventLogger             androidx.media3.demo.session         D  positionDiscontinuity [eventTime=17.09, mediaPos=0.00, window=2, reason=SEEK, PositionInfo:old [mediaItem=1, period=1, pos=3470], PositionInfo:new [mediaItem=2, period=2, pos=0]]
EventLogger             androidx.media3.demo.session         D  mediaItem [eventTime=17.10, mediaPos=0.00, window=2, reason=SEEK]
MediaCodec              androidx.media3.demo.session         D  keep callback message for reclaim
CCodecConfig            androidx.media3.demo.session         I  query failed after returning 15 values (BAD_INDEX)
EventLogger             androidx.media3.demo.session         D  tracks [eventTime=17.10, mediaPos=0.00, window=2
EventLogger             androidx.media3.demo.session         D  ]
Codec2Client            androidx.media3.demo.session         W  query -- param skipped: index = 1073743886.
Codec2Client            androidx.media3.demo.session         W  query -- param skipped: index = 1610614798.
EventLogger             androidx.media3.demo.session         D  state [eventTime=17.10, mediaPos=0.00, window=2, BUFFERING]
TrafficStats            androidx.media3.demo.session         D  tagSocket(178) with statsTag=0xffffffff, statsUid=-1
CCodecBuffers           androidx.media3.demo.session         D  [c2.android.aac.decoder#893:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 0
CCodecBuffers           androidx.media3.demo.session         D  [c2.android.aac.decoder#893:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 1
CCodecBuffers           androidx.media3.demo.session         D  [c2.android.aac.decoder#893:1D-Output.Impl[N]] Client returned a buffer it does not own according to our record: 2
MediaCodec              androidx.media3.demo.session         D  keep callback message for reclaim
EventLogger             androidx.media3.demo.session         D  isPlaying [eventTime=17.10, mediaPos=0.00, window=2, false]
CCodecConfig            androidx.media3.demo.session         I  query failed after returning 20 values (BAD_INDEX)
Codec2Client            androidx.media3.demo.session         W  query -- param skipped: index = 1342179345.
Codec2Client            androidx.media3.demo.session         W  query -- param skipped: index = 2415921170.
Codec2Client            androidx.media3.demo.session         W  query -- param skipped: index = 1610614798.
EventLogger             androidx.media3.demo.session         D  videoDisabled [eventTime=17.13, mediaPos=0.00, window=1, period=1]
EventLogger             androidx.media3.demo.session         D  videoSize [eventTime=17.14, mediaPos=0.00, window=1, period=1, 0, 0]
EventLogger             androidx.media3.demo.session         D  audioDisabled [eventTime=17.14, mediaPos=0.00, window=1, period=1]
EventLogger             androidx.media3.demo.session         D  positionDiscontinuity [eventTime=17.14, mediaPos=0.00, window=2, reason=SEEK_ADJUSTMENT, PositionInfo:old [mediaItem=2, period=2, pos=0], PositionInfo:new [mediaItem=2, period=2, pos=0]]
EventLogger             androidx.media3.demo.session         D  loading [eventTime=17.14, mediaPos=0.00, window=2, period=2, true]
EventLogger             androidx.media3.demo.session         D  audioTrackReleased [eventTime=17.14, mediaPos=0.00, window=2, period=2, 2,12,44100,false,false,56704]
TrafficStats            androidx.media3.demo.session         D  tagSocket(179) with statsTag=0xffffffff, statsUid=-1
EventLogger             androidx.media3.demo.session         D  timeline [eventTime=17.33, mediaPos=0.00, window=2, period=2, periodCount=4, windowCount=4, reason=SOURCE_UPDATE
EventLogger             androidx.media3.demo.session         D    period [39.67]
EventLogger             androidx.media3.demo.session         D    period [5503.12]
EventLogger             androidx.media3.demo.session         D    period [32.83]
EventLogger             androidx.media3.demo.session         D    ...
EventLogger             androidx.media3.demo.session         D    window [39.67, seekable=true, dynamic=false]
EventLogger             androidx.media3.demo.session         D    window [5503.12, seekable=true, dynamic=false]
EventLogger             androidx.media3.demo.session         D    window [32.83, seekable=true, dynamic=false]
EventLogger             androidx.media3.demo.session         D    ...
EventLogger             androidx.media3.demo.session         D  ]
MediaCodec              androidx.media3.demo.session         D  keep callback message for reclaim
CCodecConfig            androidx.media3.demo.session         I  query failed after returning 15 values (BAD_INDEX)
Codec2Client            androidx.media3.demo.session         W  query -- param skipped: index = 1073743886.
Codec2Client            androidx.media3.demo.session         W  query -- param skipped: index = 1610614798.
MediaCodec              androidx.media3.demo.session         D  keep callback message for reclaim
CCodecConfig            androidx.media3.demo.session         I  query failed after returning 20 values (BAD_INDEX)
Codec2Client            androidx.media3.demo.session         W  query -- param skipped: index = 1342179345.
Codec2Client            androidx.media3.demo.session         W  query -- param skipped: index = 2415921170.
Codec2Client            androidx.media3.demo.session         W  query -- param skipped: index = 1610614798.
EventLogger             androidx.media3.demo.session         D  videoEnabled [eventTime=17.39, mediaPos=0.00, window=2, period=2]
EventLogger             androidx.media3.demo.session         D  audioEnabled [eventTime=17.39, mediaPos=0.00, window=2, period=2]
EventLogger             androidx.media3.demo.session         D  tracks [eventTime=17.39, mediaPos=0.00, window=2, period=2
EventLogger             androidx.media3.demo.session         D    group [
EventLogger             androidx.media3.demo.session         D      [X] Track:0, id=0, mimeType=video/avc, container=application/x-mpegURL, bitrate=173000, codecs=avc1.42c01f, res=88x144, supported=YES
EventLogger             androidx.media3.demo.session         D      [X] Track:1, id=1, mimeType=video/avc, container=application/x-mpegURL, bitrate=173000, codecs=avc1.42c01f, res=88x144, supported=YES
EventLogger             androidx.media3.demo.session         D      [X] Track:2, id=2, mimeType=video/avc, container=application/x-mpegURL, bitrate=376000, codecs=avc1.42c01f, res=136x240, supported=YES
EventLogger             androidx.media3.demo.session         D      [X] Track:3, id=3, mimeType=video/avc, container=application/x-mpegURL, bitrate=376000, codecs=avc1.42c01f, res=136x240, supported=YES
EventLogger             androidx.media3.demo.session         D      [X] Track:4, id=4, mimeType=video/avc, container=application/x-mpegURL, bitrate=502000, codecs=avc1.42c01f, res=208x360, supported=YES
EventLogger             androidx.media3.demo.session         D      [X] Track:5, id=5, mimeType=video/avc, container=application/x-mpegURL, bitrate=502000, codecs=avc1.42c01f, res=208x360, supported=YES
EventLogger             androidx.media3.demo.session         D      [X] Track:6, id=6, mimeType=video/avc, container=application/x-mpegURL, bitrate=488000, codecs=avc1.4d401f, res=272x480, supported=YES
EventLogger             androidx.media3.demo.session         D      [X] Track:7, id=7, mimeType=video/avc, container=application/x-mpegURL, bitrate=488000, codecs=avc1.4d401f, res=272x480, supported=YES
EventLogger             androidx.media3.demo.session         D      [X] Track:8, id=8, mimeType=video/avc, container=application/x-mpegURL, bitrate=845000, codecs=avc1.640029, res=408x720, supported=YES
EventLogger             androidx.media3.demo.session         D      [X] Track:9, id=9, mimeType=video/avc, container=application/x-mpegURL, bitrate=845000, codecs=avc1.640029, res=408x720, supported=YES
EventLogger             androidx.media3.demo.session         D      [X] Track:10, id=10, mimeType=video/avc, container=application/x-mpegURL, bitrate=1625000, codecs=avc1.640029, res=608x1080, supported=YES
EventLogger             androidx.media3.demo.session         D      [X] Track:11, id=11, mimeType=video/avc, container=application/x-mpegURL, bitrate=1625000, codecs=avc1.640029, res=608x1080, supported=YES
EventLogger             androidx.media3.demo.session         D    ]
EventLogger             androidx.media3.demo.session         D    group [
EventLogger             androidx.media3.demo.session         D      [X] Track:0, id=0, mimeType=audio/mp4a-latm, container=application/x-mpegURL, codecs=mp4a.40.2, supported=YES
EventLogger             androidx.media3.demo.session         D    ]
EventLogger             androidx.media3.demo.session         D    group [
EventLogger             androidx.media3.demo.session         D      [X] Track:0, id=ID3, mimeType=application/id3, supported=YES
EventLogger             androidx.media3.demo.session         D    ]
EventLogger             androidx.media3.demo.session         D    Metadata [
EventLogger             androidx.media3.demo.session         D      HlsTrackMetadataEntry
EventLogger             androidx.media3.demo.session         D    ]
EventLogger             androidx.media3.demo.session         D  ]
EventLogger             androidx.media3.demo.session         D  downstreamFormat [eventTime=17.47, mediaPos=0.00, window=2, period=2, id=10, mimeType=null, container=application/x-mpegURL, bitrate=1625000, codecs=avc1.640029, mp4a.40.2, res=608x1080]
EventLogger             androidx.media3.demo.session         D  videoInputFormat [eventTime=17.48, mediaPos=0.00, window=2, period=2, id=10, mimeType=video/avc, bitrate=1625000, codecs=avc1.640029, res=608x1080, color=BT601/Limited range/SDR SMPTE 170M/8/8]
EventLogger             androidx.media3.demo.session         D  audioInputFormat [eventTime=17.48, mediaPos=0.00, window=2, period=2, id=1/15, mimeType=audio/mp4a-latm, codecs=mp4a.40.2, channels=2, sample_rate=44100]
CCodecBufferChannel     androidx.media3.demo.session         D  [c2.exynos.h264.decoder#400] Ignoring stale input buffer done callback: last flush index = 102, frameIndex = 102
EventLogger             androidx.media3.demo.session         D  audioTrackInit [eventTime=17.51, mediaPos=0.00, window=2, period=2, 2,12,44100,false,false,56704]
TrafficStats            androidx.media3.demo.session         D  tagSocket(221) with statsTag=0xffffffff, statsUid=-1
BufferPoolAccessor2.0   androidx.media3.demo.session         D  bufferpool2 0xb40000703df8c698 : 0(0 size) total buffers - 0(0 size) used buffers - 166/174 (recycle/alloc) - 5/162 (fetch/transfer)
BufferPoolAccessor2.0   androidx.media3.demo.session         D  evictor expired: 1, evicted: 1
EventLogger             androidx.media3.demo.session         D  timeline [eventTime=18.42, mediaPos=0.00, window=2, period=2, periodCount=4, windowCount=4, reason=SOURCE_UPDATE
EventLogger             androidx.media3.demo.session         D    period [39.67]
EventLogger             androidx.media3.demo.session         D    period [5503.12]
EventLogger             androidx.media3.demo.session         D    period [32.83]
EventLogger             androidx.media3.demo.session         D    ...
EventLogger             androidx.media3.demo.session         D    window [39.67, seekable=true, dynamic=false]
EventLogger             androidx.media3.demo.session         D    window [5503.12, seekable=true, dynamic=false]
EventLogger             androidx.media3.demo.session         D    window [32.83, seekable=true, dynamic=false]
EventLogger             androidx.media3.demo.session         D    ...
EventLogger             androidx.media3.demo.session         D  ]
EventLogger             androidx.media3.demo.session         D  loading [eventTime=19.19, mediaPos=0.00, window=2, period=2, false]
Media

I hope this link hasn't expired :)
Play one after another as playlist

https://bl.rutube.ru/route/2ff1f14bfebbe5634d278c648cc6de86.m3u8?guids=b90d44fe-f06e-4c7f-a581-c7116d1a473c_608x1080_1519012_D39667_B1314619A192000_F30A44100_avc1.640029_mp4a.40.2,0ce1b425-a61f-40af-8910-963a9b184e93_136x240_361044_D39667_B289700A64200_F30A44100_avc1.42c01f_mp4a.40.2,9617f7f1-55cf-492e-b587-f422553a6522_408x720_940485_D39667_B736087A192000_F30A44100_avc1.640029_mp4a.40.2,88b6838a-9bcb-46f0-b722-4f9b593ffbd7_208x360_501465_D39667_B430120A64200_F30A44100_avc1.42c01f_mp4a.40.2,60f244aa-3163-435b-b8cf-74d35be010f5_816x1440_2249244_D39667_B2044856A192000_F30A44100_avc1.640034_mp4a.40.2,f22360d9-dd6c-4c35-a936-b359c08f96e6_88x144_172858_D39667_B101511A64200_F30A44100_avc1.42c01f_mp4a.40.2,a1f7dca1-eb55-4827-9e2d-2ed3450e1605_272x480_568444_D39667_B431229A128119_F30A44100_avc1.4d401f_mp4a.40.2&sign=vP2Vz8QlYBIODz-wdpuvlQ&expire=2020699397&guarantee=7&scheme=https&minimal_long_temperature=300000

https://bl.rutube.ru/route/c2cf2d92119ccab132ad699458451fce.m3u8?guids=87e6d49e-1696-49bb-a453-47f02e3828b3_256x144_371448_D6765360_B236316A64000_F25A44100_avc1.42c01f_mp4a.40.2,ef7dfe4e-f9b0-40d2-b551-fc11a6aa90a8_432x232_642613_D6765360_B507481A64000_F25A44100_avc1.42c01f_mp4a.40.2,d42dab1b-3865-4519-9417-f878d196f742_640x360_1084340_D6765360_B949208A64000_F25A44100_avc1.42c01f_mp4a.40.2,548fa999-fce5-4c71-a37b-ca533f36b05b_856x480_1232930_D6765360_B968230A128000_F25A44100_avc1.4d401f_mp4a.40.2,519407aa-7bf6-490b-aa2f-d70c242466f5_1280x720_2070581_D6765360_B1677879A192000_F25A44100_avc1.640029_mp4a.40.2,14da8ad5-f497-42e9-9ab4-5b8c873e53e8_1920x1080_3890152_D6765360_B3497450A192000_F25A44100_avc1.640029_mp4a.40.2&sign=rq6XzKCy5PYfIyXf_9_8tA&expire=2020699377&guarantee=6&scheme=https&minimal_long_temperature=300000

https://bl.rutube.ru/route/192d0fe316aa7a2ab770ce578f5a7540.m3u8?guids=ddc15d68-e53e-48f9-bae6-e031da021cc2_256x144_568311_D5503120_B433178A64000_F25A44100_avc1.42c01f_mp4a.40.2,00192241-2eda-422b-b84d-3438cb624c72_432x232_1045583_D5503120_B910450A64000_F25A44100_avc1.42c01f_mp4a.40.2,62c27499-607b-48d2-9689-feb56c82e354_640x360_1776586_D5503120_B1641453A64000_F25A44100_avc1.42c01f_mp4a.40.2,6b0e22b1-7b74-4332-95a4-1bf526f5f902_1920x1080_5616400_D5503120_B5223696A192000_F25A44100_avc1.640029_mp4a.40.2,9963f111-6b1a-4fb5-86ae-2b715b9a6a08_856x480_1862389_D5503120_B1597687A128000_F25A44100_avc1.4d401f_mp4a.40.2,57d0d863-19e5-4db1-bc75-8b85da6a4741_1280x720_3024962_D5503120_B2632259A192000_F25A44100_avc1.640029_mp4a.40.2&sign=hEvSYkYZIJPQaUvRW3XFDA&expire=2020699353&guarantee=6&scheme=https&minimal_long_temperature=300000

https://bl.rutube.ru/route/4c9da41e277d036cb6bffc17a01ed1d9.m3u8?guids=058d4f53-8f85-4ffe-8857-16ea89398fca_272x480_488270_D33025_B385337A96000_F30A44100_avc1.4d401f_mp4a.40.2,47efff58-a2ff-458d-a339-9e4f0b0af650_88x144_173302_D33025_B102546A64155_F30A44100_avc1.42c01f_mp4a.40.2,461c6f6f-d208-45c2-b598-8ec62f2f5cbe_208x360_502295_D33025_B433457A64155_F30A44100_avc1.42c01f_mp4a.40.2,6e745cc6-105b-4219-886f-bcebf012870b_408x720_845200_D33025_B744348A96000_F30A44100_avc1.640029_mp4a.40.2,a7f732b6-9422-40fd-9789-1e1fd5e55f87_608x1080_1625210_D33025_B1528911A96000_F30A44100_avc1.640029_mp4a.40.2,dbf26a41-ec66-4f6b-a54f-a2bfc4c01d0a_136x240_376925_D33025_B307357A64155_F30A44100_avc1.42c01f_mp4a.40.2&sign=cqHoZkCOPkFCmkua5GP6eg&expire=2020699329&guarantee=6&scheme=https&minimal_long_temperature=300000
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.