简体   繁体   English

exoplayer 2.11.* 版本在 android 5.0/5.1(Lollipop) 设备中抛出渲染器错误

[英]exoplayer 2.11.* version throws Renderer error in android 5.0/5.1(Lollipop) devices

I am using exoplayer for streaming my audio file from firebase storage to my android app.我正在使用exoplayer将我的音频文件从firebase storage流式传输到我的 android 应用程序。 exoplayer works great in android versions which is >= 6.0 . exoplayer>= 6.0的 android 版本中运行良好。 But in Android 5.0/5.1(Lollipop) devices, exoplayer throws me a Renderer error .但是在Android 5.0/5.1(Lollipop)设备中, exoplayer向我抛出一个Renderer error

Here's the Error i got:这是我得到的错误:

E/AudioTrack: AudioFlinger could not create track, status: -12
E/AudioTrack-JNI: Error -12 initializing AudioTrack
E/android.media.AudioTrack: Error code -20 when initializing AudioTrack.
E/ExoPlayerImplInternal: Renderer error: index=1, type=audio, format=Format(null, null, null, audio/mpeg, null, -1, null, [-1, -1, -1.0], [2, 32000]), rendererSupport=YES
      com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.audio.AudioSink$InitializationException: AudioTrack init failed: 0, Config(32000, 12, 32000)
        at com.google.android.exoplayer2.BaseRenderer.createRendererException(BaseRenderer.java:359)
        at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:831)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1590)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:721)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:599)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:329)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:135)
        at android.os.HandlerThread.run(HandlerThread.java:61)
     Caused by: com.google.android.exoplayer2.audio.AudioSink$InitializationException: AudioTrack init failed: 0, Config(32000, 12, 32000)
        at com.google.android.exoplayer2.audio.DefaultAudioSink$Configuration.buildAudioTrack(DefaultAudioSink.java:1428)
        at com.google.android.exoplayer2.audio.DefaultAudioSink.initialize(DefaultAudioSink.java:527)
        at com.google.android.exoplayer2.audio.DefaultAudioSink.handleBuffer(DefaultAudioSink.java:608)
        at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:824)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1590) 
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:721) 
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:599) 
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:329) 
        at android.os.Handler.dispatchMessage(Handler.java:98) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.os.HandlerThread.run(HandlerThread.java:61) 
I/System.out: Player Error::com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.audio.AudioSink$InitializationException: AudioTrack init failed: 0, Config(32000, 12, 32000)
E/Render TAG: TYPE_RENDERER: AudioTrack init failed: 0, Config(32000, 12, 32000)

Here's my Code for streaming audio:这是我的流式音频代码:

//Setting Up Exoplayer
private void SetupPlayer(){
// Create a data source factory.
dataSourceFactory =
        new DefaultHttpDataSourceFactory(Util.getUserAgent(this
                , getApplicationInfo().loadLabel(getPackageManager()).toString()));
loadControl = new DefaultLoadControl.Builder()
        .setBufferDurationsMs(MIN_BUFFER_DURATION, MAX_BUFFER_DURATION, MIN_PLAYBACK_START_BUFFER, MIN_PLAYBACK_RESUME_BUFFER).createDefaultLoadControl();

@DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode = DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER;

renderersFactory = new DefaultRenderersFactory(this) .setExtensionRendererMode(extensionRendererMode);

// Create a progressive media source pointing to a stream uri.
        mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory)
        .createMediaSource(Uri.parse(audio_url));
// Create a player instance.
simpleExoPlayer =  new SimpleExoPlayer.Builder(this,renderersFactory).setLoadControl(loadControl).build();
// Prepare the player with the media source.
simpleExoPlayer.prepare(mediaSource, true, true);
}

I searched Stack Overflow but unable to find any answers.我搜索了 Stack Overflow 但找不到任何答案。 The version of exoplayer i am using was 2.11.8 .我使用的exoplayer版本是2.11.8 I don't know how to fix this error.我不知道如何解决这个错误。 Please help me with some solutions to fix this error in Android 5.0 devices.请帮助我提供一些解决方案来修复 Android 5.0 设备中的此错误。

I've got the exact same issue recently with API <23 and ExoPlayer 2.13.2 and while digging in found this note on ExoPlayer developers web-site :我最近遇到了与 API <23 和 ExoPlayer 2.13.2 完全相同的问题,并且在挖掘时在ExoPlayer 开发人员网站上发现了这个注释:

Android's official emulator (...) supports ExoPlayer provided the system image has an API level of at least 23. System images with earlier API levels do not support ExoPlayer. Android 的官方模拟器 (...) 支持 ExoPlayer,前提是系统映像的 API 级别至少为 23。具有更早 API 级别的系统映像不支持 ExoPlayer。

Unfortunately, I don't have an API-21-powered device.不幸的是,我没有 API-21 驱动的设备。 Still I will leave this note for future generations.我仍然会为后代留下这张纸条。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 identity.v1beta1.devices 创建 403 错误 - identity.v1beta1.devices create 403 error AWS CodeBuild:部署代码在管道中引发 npm 错误 - AWS CodeBuild: deploy the code throws npm error in pipeline 将 Firebase 应用到 Android Studio 项目版本 Bumblebee - Apply Firebase to Android Studio Project version Bumblebee Firebase 使用玩笑和仿真器调用登录的身份验证测试抛出错误:标题 X-Client-Version forbidden - Firebase Auth testing with jest and emulator calling the login throws Error: Headers X-Client-Version forbidden 从 Reactjs 仪表板向 Android 和 iOS 设备发送 Expo 推送通知 - Sending Expo Push Notifications to both Android and iOS devices from Reactjs Dashboard Firebase.initializeApp(); 和 FirebaseMessaging.instance.getToken() 抛出 android 本机异常 - Firebase.initializeApp(); and FirebaseMessaging.instance.getToken() throws android native exceptions FlutterFire:调用云 function 会引发没有详细信息的内部错误 - FirebaseFunctionsException [firebase_functions/17999] - FlutterFire: Calling cloud function throws an internal error with no details - FirebaseFunctionsException [firebase_functions/17999] gcloud sql 操作等待在 csv 导入后抛出 INTERNAL_ERROR - gcloud sql operations wait throws INTERNAL_ERROR after csv import hadoop fs -ls s3://bucket 或 s3a://bucket 抛出“没有这样的文件或目录”错误 - hadoop fs -ls s3://bucket or s3a://bucket throws "No such file or directory" error 带有最新节点版本的异步 Function 上的“解析错误:意外令牌功能” - "Parsing Error: unexpected token function" on Async Function with a recent Node version
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM