为什么 Android OS-10 中的 ExoPlayer 在预览时显示黑色预览屏幕
Why ExoPlayer in Android OS-10 shows black preview screen while preview
我正在使用 Exoplayer 以横向模式录制视频并以纵向模式显示预览,同时连续录制视频,同时改变方向,反之亦然一旦播放器预览显示空白屏幕。
我正在使用 Exoplayer 2.9.6 作为 Gradle 的依赖项并使用 android OS 版本 10。
E/BufferQueueProducer: [SurfaceTexture-0-22659-29]
setMaxDequeuedBufferCount: requested buffer count 2 is less than
minimum 3
E/Surface: IGraphicBufferProducer::setBufferCount(2)
returned Invalid argument E/ACodec: native_window_set_buffer_count
failed: Invalid argument (22)
E/ExoPlayerImplInternal: Internal
runtime error.
java.lang.IllegalArgumentException
at android.media.MediaCodec.native_setSurface(Native Method)
at android.media.MediaCodec.setOutputSurface(MediaCodec.java:2042)
at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setOutputSurfaceV23(MediaCodecVideoRenderer.java:1014)
at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setSurface(MediaCodecVideoRenderer.java:422)
at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.handleMessage(MediaCodecVideoRenderer.java:387)
at com.google.android.exoplayer2.ExoPlayerImplInternal.deliverMessage(ExoPlayerImplInternal.java:864)
at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageToTarget(ExoPlayerImplInternal.java:835)
at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageInternal(ExoPlayerImplInternal.java:817)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:330)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:237)
at android.os.HandlerThread.run(HandlerThread.java:67)
Android 10 向 MediaCodecInfo 引入了新的 API,用于查询编解码器是否是硬件加速的,是否只是软件的,以及它是由设备制造商还是 Android 平台提供的。 ExoPlayer 2.11 通过新的 hardwareAccelerated、softwareOnly 和供应商标志在其自己的 MediaCodecInfo class 中显示此信息。即使在 Android.
的旧版本上 运行 时,这些标志也可以访问并且(在大多数情况下)可以正确设置
我正在使用 Exoplayer 以横向模式录制视频并以纵向模式显示预览,同时连续录制视频,同时改变方向,反之亦然一旦播放器预览显示空白屏幕。 我正在使用 Exoplayer 2.9.6 作为 Gradle 的依赖项并使用 android OS 版本 10。
E/BufferQueueProducer: [SurfaceTexture-0-22659-29] setMaxDequeuedBufferCount: requested buffer count 2 is less than minimum 3
E/Surface: IGraphicBufferProducer::setBufferCount(2) returned Invalid argument E/ACodec: native_window_set_buffer_count failed: Invalid argument (22)
E/ExoPlayerImplInternal: Internal runtime error. java.lang.IllegalArgumentException at android.media.MediaCodec.native_setSurface(Native Method) at android.media.MediaCodec.setOutputSurface(MediaCodec.java:2042) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setOutputSurfaceV23(MediaCodecVideoRenderer.java:1014) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setSurface(MediaCodecVideoRenderer.java:422) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.handleMessage(MediaCodecVideoRenderer.java:387) at com.google.android.exoplayer2.ExoPlayerImplInternal.deliverMessage(ExoPlayerImplInternal.java:864) at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageToTarget(ExoPlayerImplInternal.java:835) at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageInternal(ExoPlayerImplInternal.java:817) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:330) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:237) at android.os.HandlerThread.run(HandlerThread.java:67)
Android 10 向 MediaCodecInfo 引入了新的 API,用于查询编解码器是否是硬件加速的,是否只是软件的,以及它是由设备制造商还是 Android 平台提供的。 ExoPlayer 2.11 通过新的 hardwareAccelerated、softwareOnly 和供应商标志在其自己的 MediaCodecInfo class 中显示此信息。即使在 Android.
的旧版本上 运行 时,这些标志也可以访问并且(在大多数情况下)可以正确设置