Closed
Description
I'm working with ExoPlayer and it works fine with all devices i have tested, except for a LG-E975.
On a LG-E975 I'm getting the following exception when i do play a streaming url, and I can't play the stream:
Device: LG-E975
Android version: 4.1.2
ExoPlayer version: 1.5.9
okHttp version: 3.4.1
E/dalvikvm: Could not find class 'android.media.PlaybackParams', referenced from method com.google.android.exoplayer.MediaCodecAudioTrackRenderer.handleMessage
E/MediaCodecUtil: Failed to query codec OMX.qcom.audio.decoder.mp3 (audio/mpeg)
E/ExoPlayerImplInternal: Internal track renderer error.
com.google.android.exoplayer.ExoPlaybackException: com.google.android.exoplayer.MediaCodecUtil$DecoderQueryException: Failed to query underlying media codecs
at com.google.android.exoplayer.SampleSourceTrackRenderer.doPrepare(SampleSourceTrackRenderer.java:78)
at com.google.android.exoplayer.TrackRenderer.prepare(TrackRenderer.java:110)
at com.google.android.exoplayer.ExoPlayerImplInternal.incrementalPrepareInternal(ExoPlayerImplInternal.java:273)
at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:205)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:137)
at android.os.HandlerThread.run(HandlerThread.java:60)
at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)
Caused by: com.google.android.exoplayer.MediaCodecUtil$DecoderQueryException: Failed to query underlying media codecs
at com.google.android.exoplayer.MediaCodecUtil.getDecoderInfosInternal(MediaCodecUtil.java:189)
at com.google.android.exoplayer.MediaCodecUtil.getDecoderInfos(MediaCodecUtil.java:129)
at com.google.android.exoplayer.MediaCodecUtil.getDecoderInfo(MediaCodecUtil.java:106)
at com.google.android.exoplayer.MediaCodecSelector$1.getDecoderInfo(MediaCodecSelector.java:35)
at com.google.android.exoplayer.MediaCodecAudioTrackRenderer.handlesTrack(MediaCodecAudioTrackRenderer.java:216)
at com.google.android.exoplayer.MediaCodecTrackRenderer.handlesTrack(MediaCodecTrackRenderer.java:293)
at com.google.android.exoplayer.SampleSourceTrackRenderer.doPrepare(SampleSourceTrackRenderer.java:76)
at com.google.android.exoplayer.TrackRenderer.prepare(TrackRenderer.java:110)
at com.google.android.exoplayer.ExoPlayerImplInternal.incrementalPrepareInternal(ExoPlayerImplInternal.java:273)
at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:205)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:137)
at android.os.HandlerThread.run(HandlerThread.java:60)
at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)
Caused by: java.lang.IllegalArgumentException
at android.media.MediaCodecList.getCodecCapabilities(Native Method)
at android.media.MediaCodecInfo.getCapabilitiesForType(MediaCodecInfo.java:211)
at com.google.android.exoplayer.MediaCodecUtil.getDecoderInfosInternal(MediaCodecUtil.java:160)
at com.google.android.exoplayer.MediaCodecUtil.getDecoderInfos(MediaCodecUtil.java:129)
at com.google.android.exoplayer.MediaCodecUtil.getDecoderInfo(MediaCodecUtil.java:106)
at com.google.android.exoplayer.MediaCodecSelector$1.getDecoderInfo(MediaCodecSelector.java:35)
at com.google.android.exoplayer.MediaCodecAudioTrackRenderer.handlesTrack(MediaCodecAudioTrackRenderer.java:216)
at com.google.android.exoplayer.MediaCodecTrackRenderer.handlesTrack(MediaCodecTrackRenderer.java:293)
at com.google.android.exoplayer.SampleSourceTrackRenderer.doPrepare(SampleSourceTrackRenderer.java:76)
at com.google.android.exoplayer.TrackRenderer.prepare(TrackRenderer.java:110)
at com.google.android.exoplayer.ExoPlayerImplInternal.incrementalPrepareInternal(ExoPlayerImplInternal.java:273)
at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:205)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:137)
at android.os.HandlerThread.run(HandlerThread.java:60)
at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)
Here is how i do play an url:
Allocator allocator = new DefaultAllocator(NavigationDrawer.BUFFER_SEGMENT_SIZE);
String userAgent = Util.getUserAgent(NavigationDrawer.context, "ExoPlayer");
DataSource dataSource = new DefaultUriDataSource(context, null, new OkHttpDataSource(okHttpClient, userAgent, null));
ExtractorSampleSource sampleSource = new ExtractorSampleSource(radioUri, dataSource, allocator, BUFFER_SEGMENT_SIZE * BUFFER_SEGMENT_COUNT);
MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource, MediaCodecSelector.DEFAULT, null, true, null, null, null, AudioManager.STREAM_MUSIC);
myExoPlayer.prepare(audioRenderer);
myExoPlayer.setPlayWhenReady(true);
Metadata
Metadata
Assignees
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
andrewlewis commentedon Aug 4, 2016
@watemotion Thanks for reporting this. I don't have a test device on Jelly Bean, so please could you try out the following workaround? Add
|| Util.DEVICE.startsWith("gee")
to the condition here and let me know if that solves the issue, or if you see some other error. Thanks!watemotion commentedon Aug 4, 2016
@andrewlewis Your workaround solved the problem, now I can listen the stream. Thank you for replying so quickly.
andrewlewis commentedon Aug 5, 2016
Great. This issue should be updated when we push the fix.
Don't use OMX.qcom.audio.decoder.mp3 on LGE Optimus API 16.
Don't use OMX.qcom.audio.decoder.mp3 on LGE Optimus API 16.