Exoplayer: AudioFlinger could not create track status -12, error initiliazing AudioTrack.

Created on 12 Nov 2015  路  11Comments  路  Source: google/ExoPlayer

Strongly related to #880

I have an activity which contains a list of multiple items. When I click an item it opens up an activity which plays a video. Just like the youtube player.

The player works fine but after I watched like 10 videos, by going back and selecting an other item, I receive multiple exceptions:

11-12 21:29:34.260 8141-9536/com.test.exoplayer E/ACodec: [OMX.SEC.AVC.Decoder] ERROR(0x90000004)
11-12 21:29:34.260 8141-9536/com.test.exoplayer E/ACodec: signalError(omxError 0x90000004, internalError -2147483648)
11-12 21:29:34.265 8141-9535/com.test.exoplayer E/MediaCodec: Codec reported err 0x90000004, actionCode 0, while in state 6
11-12 21:29:34.280 8141-9526/com.test.exoplayer E/AudioTrack: AudioTrack::set : Exit
11-12 21:29:34.285 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal: Internal runtime error.
11-12 21:29:34.285 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal: java.lang.IllegalStateException
11-12 21:29:34.285 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
11-12 21:29:34.285 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:1036)
11-12 21:29:34.285 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.MediaCodecTrackRenderer.drainOutputBuffer(MediaCodecTrackRenderer.java:802)
11-12 21:29:34.285 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:458)
11-12 21:29:34.285 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431)
11-12 21:29:34.285 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213)
11-12 21:29:34.285 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at android.os.Handler.dispatchMessage(Handler.java:98)
11-12 21:29:34.285 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at android.os.Looper.loop(Looper.java:135)
11-12 21:29:34.285 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at android.os.HandlerThread.run(HandlerThread.java:61)
11-12 21:29:34.285 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)
11-12 21:29:34.325 8141-8141/com.test.exoplayer W/System.err: com.google.android.exoplayer.ExoPlaybackException: java.lang.IllegalStateException
11-12 21:29:34.325 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:246)
11-12 21:29:34.325 8141-8141/com.test.exoplayer W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:98)
11-12 21:29:34.325 8141-8141/com.test.exoplayer W/System.err:     at android.os.Looper.loop(Looper.java:135)
11-12 21:29:34.325 8141-8141/com.test.exoplayer W/System.err:     at android.os.HandlerThread.run(HandlerThread.java:61)
11-12 21:29:34.325 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)
11-12 21:29:34.325 8141-8141/com.test.exoplayer W/System.err: Caused by: java.lang.IllegalStateException
11-12 21:29:34.325 8141-8141/com.test.exoplayer W/System.err:     at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
11-12 21:29:34.325 8141-8141/com.test.exoplayer W/System.err:     at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:1036)
11-12 21:29:34.325 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.MediaCodecTrackRenderer.drainOutputBuffer(MediaCodecTrackRenderer.java:802)
11-12 21:29:34.325 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:458)
11-12 21:29:34.325 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431)
11-12 21:29:34.325 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213)
11-12 21:29:34.325 8141-8141/com.test.exoplayer W/System.err:   ... 4 more
11-12 21:29:34.595 8141-9536/com.test.exoplayer E/ACodec: [OMX.SEC.AVC.Decoder] ERROR(0x90000004)
11-12 21:29:34.595 8141-9536/com.test.exoplayer E/ACodec: signalError(omxError 0x90000004, internalError -2147483648)
11-12 21:29:34.595 8141-9535/com.test.exoplayer E/MediaCodec: Codec reported err 0x90000004, actionCode 0, while in state 10
11-12 21:29:34.625 8141-9536/com.test.exoplayer E/Surface: getSlotFromBufferLocked: unknown buffer: 0x473a2320
11-12 21:29:34.625 8141-9536/com.test.exoplayer W/ACodec: [OMX.SEC.AVC.Decoder] can not return buffer 1096875232 to native window
11-12 21:29:34.625 8141-9536/com.test.exoplayer E/Surface: getSlotFromBufferLocked: unknown buffer: 0x473a2080
11-12 21:29:34.625 8141-9536/com.test.exoplayer W/ACodec: [OMX.SEC.AVC.Decoder] can not return buffer 1096873952 to native window
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal: Stop failed.
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal: java.lang.IllegalStateException
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at android.media.MediaCodec.native_stop(Native Method)
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at android.media.MediaCodec.stop(MediaCodec.java:631)
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.MediaCodecTrackRenderer.releaseCodec(MediaCodecTrackRenderer.java:411)
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.MediaCodecTrackRenderer.onDisabled(MediaCodecTrackRenderer.java:379)
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.onDisabled(MediaCodecVideoTrackRenderer.java:280)
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.TrackRenderer.disable(TrackRenderer.java:235)
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.ExoPlayerImplInternal.stopAndDisable(ExoPlayerImplInternal.java:561)
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:548)
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:525)
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:247)
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at android.os.Handler.dispatchMessage(Handler.java:98)
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at android.os.Looper.loop(Looper.java:135)
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at android.os.HandlerThread.run(HandlerThread.java:61)
11-12 21:29:34.630 8141-9526/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)


11-12 21:29:45.900 8141-9722/com.test.exoplayer E/AudioTrack: AudioFlinger could not create track, status: -12
11-12 21:29:45.900 8141-9722/com.test.exoplayer E/AudioTrack-JNI: Error -12 initializing AudioTrack
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/android.media.AudioTrack: Error code -20 when initializing AudioTrack.
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err: com.google.android.exoplayer.audio.AudioTrack$InitializationException: AudioTrack init failed: 0, Config(44100, 12, 101376)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.audio.AudioTrack.checkAudioTrackInitialized(AudioTrack.java:799)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.audio.AudioTrack.initialize(AudioTrack.java:340)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.audio.AudioTrack.initialize(AudioTrack.java:314)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.MediaCodecAudioTrackRenderer.processOutputBuffer(MediaCodecAudioTrackRenderer.java:330)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.MediaCodecTrackRenderer.drainOutputBuffer(MediaCodecTrackRenderer.java:828)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:458)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal: Internal track renderer error.
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal: com.google.android.exoplayer.ExoPlaybackException: com.google.android.exoplayer.audio.AudioTrack$InitializationException: AudioTrack init failed: 0, Config(44100, 12, 101376)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.MediaCodecAudioTrackRenderer.processOutputBuffer(MediaCodecAudioTrackRenderer.java:335)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.MediaCodecTrackRenderer.drainOutputBuffer(MediaCodecTrackRenderer.java:828)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:458)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at android.os.Handler.dispatchMessage(Handler.java:98)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at android.os.Looper.loop(Looper.java:135)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at android.os.HandlerThread.run(HandlerThread.java:61)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:  Caused by: com.google.android.exoplayer.audio.AudioTrack$InitializationException: AudioTrack init failed: 0, Config(44100, 12, 101376)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.audio.AudioTrack.checkAudioTrackInitialized(AudioTrack.java:799)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.audio.AudioTrack.initialize(AudioTrack.java:340)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.audio.AudioTrack.initialize(AudioTrack.java:314)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.MediaCodecAudioTrackRenderer.processOutputBuffer(MediaCodecAudioTrackRenderer.java:330)
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.MediaCodecTrackRenderer.drainOutputBuffer(MediaCodecTrackRenderer.java:828) 
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:458) 
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431) 
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213) 
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at android.os.Handler.dispatchMessage(Handler.java:98) 
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at android.os.Looper.loop(Looper.java:135) 
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at android.os.HandlerThread.run(HandlerThread.java:61) 
11-12 21:29:45.905 8141-9722/com.test.exoplayer E/ExoPlayerImplInternal:     at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40) 
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:98)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at android.os.Looper.loop(Looper.java:135)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at android.os.HandlerThread.run(HandlerThread.java:61)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err: com.google.android.exoplayer.ExoPlaybackException: com.google.android.exoplayer.audio.AudioTrack$InitializationException: AudioTrack init failed: 0, Config(44100, 12, 101376)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.MediaCodecAudioTrackRenderer.processOutputBuffer(MediaCodecAudioTrackRenderer.java:335)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.MediaCodecTrackRenderer.drainOutputBuffer(MediaCodecTrackRenderer.java:828)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:458)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:98)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at android.os.Looper.loop(Looper.java:135)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at android.os.HandlerThread.run(HandlerThread.java:61)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err: Caused by: com.google.android.exoplayer.audio.AudioTrack$InitializationException: AudioTrack init failed: 0, Config(44100, 12, 101376)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.audio.AudioTrack.checkAudioTrackInitialized(AudioTrack.java:799)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.audio.AudioTrack.initialize(AudioTrack.java:340)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.audio.AudioTrack.initialize(AudioTrack.java:314)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:     at com.google.android.exoplayer.MediaCodecAudioTrackRenderer.processOutputBuffer(MediaCodecAudioTrackRenderer.java:330)
11-12 21:29:45.905 8141-8141/com.test.exoplayer W/System.err:   ... 8 more

Just like the problem in #880 described, I need force restart the app in order to play a video again.

I am using a stripped down version of the DemoPlayer , since I am only using standard video formats.

Here's how I release the player

public void release() {
mPlayer.blockingSendMessage(mVideoRenderer, MediaCodecVideoTrackRenderer.MSG_SET_SURFACE, null);
        mPlayer.removeListener(this);
        mPlayer.release();

        mPlayer = null;
        mSurface = null;
        mVideoRenderer = null;
}

I call this method on the onDestroy method in the activity which holds the video, or when surface is destroyed.
Is there anything I am missing, do I need to use the AudioCapabilitiesReceiver for instance?

Extra information

  • Using: compile 'com.google.android.exoplayer:exoplayer:r1.5.2'
  • I get many 'sending message to a Handler on a dead thread' messages, mostly when calling the release method #426
  • Tested on Samsung Galaxy S3 & Motorola Moto G2, both devices have the same problem
question

Most helpful comment

@wilsonssss What were you leaking and how did you fix it?

All 11 comments

The ExoPlayer demo app is structured similarly (activity containing a list + activity for playback). Does the same issue reproduce in the demo app? If not, it sounds like an issue with your application code.

One thing to note is that onDestroy is too late to be releasing the player. You should really be instantiating the player in onResume and releasing it in onPause, as in the demo app.

I am getting the same "AudioTrack InitializationException" error when connected to bluetooth, can there be any connection between the two ?

Hi

We face similar issue.

Using SimpleVideoPlayer(googlemediaframework)
after recreating the SimpleVideoPlayer for the ~10th time we get the same error
event hough we release the resources
Is there a way to increase the buffer that is used?

05-13 13:21:43.964 31499-6377/com.kaltura.adplayerdemo E/AudioTrack: AudioFlinger could not create track, status: -12
05-13 13:21:43.974 31499-6377/com.kaltura.adplayerdemo E/AudioTrack-JNI: Error initializing AudioTrack
05-13 13:21:43.984 31499-6377/com.kaltura.adplayerdemo E/android.media.AudioTrack: Error code -20 when initializing AudioTrack.
05-13 13:21:44.004 31499-6377/com.kaltura.adplayerdemo E/ExoPlayerImplInternal: Internal track renderer error.
com.google.android.exoplayer.ExoPlaybackException: com.google.android.exoplayer.audio.AudioTrack$InitializationException: AudioTrack init failed: 0, Config(44100, 12, 56448)
at com.google.android.exoplayer.MediaCodecAudioTrackRenderer.processOutputBuffer(MediaCodecAudioTrackRenderer.java:344)
at com.google.android.exoplayer.MediaCodecTrackRenderer.drainOutputBuffer(MediaCodecTrackRenderer.java:886)
at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:491)
at com.google.android.exoplayer.SampleSourceTrackRenderer.doSomeWork(SampleSourceTrackRenderer.java:129)
at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431)
at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:136)
at android.os.HandlerThread.run(HandlerThread.java:61)
at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)
Caused by: com.google.android.exoplayer.audio.AudioTrack$InitializationException: AudioTrack init failed: 0, Config(44100, 12, 56448)
at com.google.android.exoplayer.audio.AudioTrack.checkAudioTrackInitialized(AudioTrack.java:904)
at com.google.android.exoplayer.audio.AudioTrack.initialize(AudioTrack.java:462)
at com.google.android.exoplayer.audio.AudioTrack.initialize(AudioTrack.java:436)
at com.google.android.exoplayer.MediaCodecAudioTrackRenderer.processOutputBuffer(MediaCodecAudioTrackRenderer.java:338)
at com.google.android.exoplayer.MediaCodecTrackRenderer.drainOutputBuffer(MediaCodecTrackRenderer.java:886)聽
at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:491)聽
at com.google.android.exoplayer.SampleSourceTrackRenderer.doSomeWork(SampleSourceTrackRenderer.java:129)聽
at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431)聽
at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213)聽
at android.os.Handler.dispatchMessage(Handler.java:98)聽
at android.os.Looper.loop(Looper.java:136)聽
at android.os.HandlerThread.run(HandlerThread.java:61)聽
at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)聽

got the same problem.

updated 160612
@giladna the same stacktrace with me, finally i found the reason was memory leak, just fix it. Then play onResume, stopPlay onStop.

@wilsonssss What were you leaking and how did you fix it?

I have this problem too with .mp4 videos load from URL:

E/AudioTrack-JNI: Error -12 initializing AudioTrack
E/android.media.AudioTrack: Error code -20 when initializing AudioTrack.
E/ExoPlayerImplInternal: Internal track renderer error.
com.google.android.exoplayer.ExoPlaybackException: com.google.android.exoplayer.audio.AudioTrack$InitializationException: AudioTrack init failed: 0, Config(44100, 12, 61440)

I don麓t know how to fix it. Cause sometimes the video works and some time gives this error.....

@willnorris @Joboodi @ojw28 Any solution? can you do releasing the player inside the same activity?

Thank you!

I'm encountering this error as well: @wilsonssss @giladna @Joboodi, can you advise on how you solved it?

I don't actually use ExoPlayer, but I was having a similar problem with my player and AudioTrack. I found that my code wasn't properly releasing the AudioTrack objects and that devices have a fixed number available (https://groups.google.com/d/msg/android-platform/tyITQ09vV3s/DaAeCsYgUGAJ). When I made sure I was releasing the AudioTracks objects properly, my problem went away.

I can't tell you where you might be leaking AudioTrack objects (by not calling release() on them) or by not properly releasing your player or whatever is going on for you, but that's what worked for me.

Finally found the reason.
It was due to creating the SimpleVideoPlayer twice not intentionally and releasing it only once

In case it's useful for someone debugging this, the output of adb shell dumpsys media.audio_flinger includes some useful information on the audio tracks that are active (owning process identifier, sample rate, buffer size, underrun frame count, ...). Each initialized AudioTrack uses up resources, and leaking unreleased AudioTrack instances seems to be a common cause of this error.

Was this page helpful?
0 / 5 - 0 ratings