KEMBAR78
ExoPlayer can't resume playback after stopping Casting · Issue #2382 · androidx/media · GitHub
Skip to content

ExoPlayer can't resume playback after stopping Casting #2382

@JamesJose7

Description

@JamesJose7

Version

Media3 1.6.1

More version details

No response

Devices that reproduce the issue

  • Pixel 7 Pro running Android 15
  • Pixel 9 (emulator) running Android 16

Devices that do not reproduce the issue

No response

Reproducible in the demo app?

No

Reproduction steps

  1. Play media on device.
  2. Without pausing playback, start casting media.
  3. Without pausing playback, stop casting.

Expected result

The media should resume successfully on ExoPlayer.

Actual result

On rare cases, playback will fail and ExoPlayer won't play media anymore until fully restarting the app. CastPlayer continues to work correctly. It throws the following stacktrace:

Audio sink error 
  androidx.media3.exoplayer.audio.AudioSink$InitializationException: AudioTrack init failed 0 Config(48000, 12, 2) Format(null, null, null, audio/raw, null, -1, null, [-1, -1, -1.0, null], [2, 48000])
      at androidx.media3.exoplayer.audio.DefaultAudioSink.buildAudioTrack(DefaultAudioSink.java:1104)
      at androidx.media3.exoplayer.audio.DefaultAudioSink.buildAudioTrack(DefaultAudioSink.java:1076)
      at androidx.media3.exoplayer.audio.DefaultAudioSink.buildAudioTrackWithRetry(DefaultAudioSink.java:1054)
      at androidx.media3.exoplayer.audio.DefaultAudioSink.initializeAudioTrack(DefaultAudioSink.java:833)
      at androidx.media3.exoplayer.audio.DefaultAudioSink.handleBuffer(DefaultAudioSink.java:932)
      at androidx.media3.exoplayer.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:817)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:2109)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:878)
      at androidx.media3.exoplayer.RendererHolder.render(RendererHolder.java:381)
      at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1329)
      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:646)
      at android.os.Handler.dispatchMessage(Handler.java:105)
      at android.os.Looper.loopOnce(Looper.java:232)
      at android.os.Looper.loop(Looper.java:317)
      at android.os.HandlerThread.run(HandlerThread.java:85)
  Caused by: java.lang.IllegalArgumentException: Invalid audio session ID -1
      at android.media.AudioTrack$Builder.setSessionId(AudioTrack.java:1246)
      at androidx.media3.exoplayer.audio.DefaultAudioTrackProvider.createAudioTrackV23(DefaultAudioTrackProvider.java:63)
      at androidx.media3.exoplayer.audio.DefaultAudioTrackProvider.getAudioTrack(DefaultAudioTrackProvider.java:41)
      at androidx.media3.exoplayer.audio.DefaultAudioSink.buildAudioTrack(DefaultAudioSink.java:1102)
      at androidx.media3.exoplayer.audio.DefaultAudioSink.buildAudioTrack(DefaultAudioSink.java:1076) 
      at androidx.media3.exoplayer.audio.DefaultAudioSink.buildAudioTrackWithRetry(DefaultAudioSink.java:1054) 
      at androidx.media3.exoplayer.audio.DefaultAudioSink.initializeAudioTrack(DefaultAudioSink.java:833) 
      at androidx.media3.exoplayer.audio.DefaultAudioSink.handleBuffer(DefaultAudioSink.java:932) 
      at androidx.media3.exoplayer.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:817) 
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:2109) 
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:878) 
      at androidx.media3.exoplayer.RendererHolder.render(RendererHolder.java:381) 
      at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1329) 
      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:646) 
      at android.os.Handler.dispatchMessage(Handler.java:105) 
      at android.os.Looper.loopOnce(Looper.java:232) 
      at android.os.Looper.loop(Looper.java:317) 
      at android.os.HandlerThread.run(HandlerThread.java:85)

Edit: Additional exception found when reproducing this error with videos:

Playback error
  androidx.media3.exoplayer.ExoPlaybackException: MediaCodecAudioRenderer error, index=1, format=Format(1/15, null, video/mp2t, audio/mp4a-latm, mp4a.40.2, -1, en, [-1, -1, -1.0, null], [2, 48000]), format_supported=YES
      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:745)
      at android.os.Handler.dispatchMessage(Handler.java:105)
      at android.os.Looper.loopOnce(Looper.java:232)
      at android.os.Looper.loop(Looper.java:317)
      at android.os.HandlerThread.run(HandlerThread.java:85)
  Caused by: androidx.media3.exoplayer.audio.AudioSink$InitializationException: AudioTrack init failed 0 Config(48000, 12, 2) Format(1/15, null, null, audio/raw, null, -1, en, [-1, -1, -1.0, null], [2, 48000])
      at androidx.media3.exoplayer.audio.DefaultAudioSink.buildAudioTrack(DefaultAudioSink.java:1105)
      at androidx.media3.exoplayer.audio.DefaultAudioSink.buildAudioTrack(DefaultAudioSink.java:1077)
      at androidx.media3.exoplayer.audio.DefaultAudioSink.buildAudioTrackWithRetry(DefaultAudioSink.java:1055)
      at androidx.media3.exoplayer.audio.DefaultAudioSink.initializeAudioTrack(DefaultAudioSink.java:834)
      at androidx.media3.exoplayer.audio.DefaultAudioSink.handleBuffer(DefaultAudioSink.java:933)
      at androidx.media3.exoplayer.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:835)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:2109)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:878)
      at androidx.media3.exoplayer.RendererHolder.render(RendererHolder.java:381)
      at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1328)
      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:646)
      at android.os.Handler.dispatchMessage(Handler.java:105) 
      at android.os.Looper.loopOnce(Looper.java:232) 
      at android.os.Looper.loop(Looper.java:317) 
      at android.os.HandlerThread.run(HandlerThread.java:85) 
      Suppressed: androidx.media3.exoplayer.audio.AudioSink$InitializationException: AudioTrack init failed 0 Config(48000, 12, 2) Format(1/15, null, null, audio/raw, null, -1, en, [-1, -1, -1.0, null], [2, 48000])
          ... 15 more
      Caused by: java.lang.IllegalArgumentException: Invalid audio session ID -1
          at android.media.AudioTrack$Builder.setSessionId(AudioTrack.java:1246)
          at androidx.media3.exoplayer.audio.DefaultAudioTrackProvider.createAudioTrackV23(DefaultAudioTrackProvider.java:63)
          at androidx.media3.exoplayer.audio.DefaultAudioTrackProvider.getAudioTrack(DefaultAudioTrackProvider.java:41)
          at androidx.media3.exoplayer.audio.DefaultAudioSink.buildAudioTrack(DefaultAudioSink.java:1103)
          ... 14 more
  Caused by: java.lang.IllegalArgumentException: Invalid audio session ID -1
      at android.media.AudioTrack$Builder.setSessionId(AudioTrack.java:1246)
      at androidx.media3.exoplayer.audio.DefaultAudioTrackProvider.createAudioTrackV23(DefaultAudioTrackProvider.java:63)
      at androidx.media3.exoplayer.audio.DefaultAudioTrackProvider.getAudioTrack(DefaultAudioTrackProvider.java:41)
      at androidx.media3.exoplayer.audio.DefaultAudioSink.buildAudioTrack(DefaultAudioSink.java:1103)
      ... 14 more

Media

Not applicable

Bug Report

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions