【发布时间】:2020-05-28 14:23:39
【问题描述】:
将 Android WebView 升级到 80.0.3987.99 版本后,Android TV 不再在基于 WebView 的应用 (ionic 4) 上播放 HLS 直播视频 (h264)。
操作系统:Android TV 9(Android TV 独有) 内核版本:4.9.113
重现步骤:
(1) 只需尝试在使用 WebView 80.0.3987.99 的 Android TV 设备上基于 WebView 的应用上打开 HLS h264 实时视频(m3u8 清单)。您可以使用随附的 APK。
预期结果:视频未播放。
将 WebView 降级为次要版本(例如,75.0.03770.143)并重新启动应用程序,视频实际上播放没有问题。
APK下载测试:
登录 logcat:
2020-02-12 15:57:40.206 24233-24336/com.eninetworks.enitvtester I/cr_MediaCodecBridge: create MediaCodec video decoder, mime video/avc
2020-02-12 15:57:40.277 24233-24349/com.eninetworks.enitvtester I/OMXClient: IOmx service obtained
2020-02-12 15:57:40.373 24233-24348/com.eninetworks.enitvtester I/MediaCodec: MediaCodec will operate in async mode
2020-02-12 15:57:40.382 24233-24348/com.eninetworks.enitvtester D/SurfaceUtils: connecting to surface 0xd1a7f008, reason connectToSurface
2020-02-12 15:57:40.383 24233-24348/com.eninetworks.enitvtester I/MediaCodec: [OMX.amlogic.avc.decoder.awesome] setting surface generation to 24814593
2020-02-12 15:57:40.383 24233-24348/com.eninetworks.enitvtester D/SurfaceUtils: disconnecting from surface 0xd1a7f008, reason connectToSurface(reconnect)
2020-02-12 15:57:40.383 24233-24348/com.eninetworks.enitvtester D/SurfaceUtils: connecting to surface 0xd1a7f008, reason connectToSurface(reconnect)
2020-02-12 15:57:40.386 24233-24349/com.eninetworks.enitvtester I/AmAVUtils: AmAVUtils::getComponentRole isEncoder :0 mime:video/avc
2020-02-12 15:57:40.386 24233-24349/com.eninetworks.enitvtester V/AVUtils: AVUtils::getComponentRole
2020-02-12 15:57:40.393 24233-24349/com.eninetworks.enitvtester E/ACodec: [OMX.amlogic.avc.decoder.awesome] setPortMode on output to DynamicANWBuffer failed w/ err -2147483648
2020-02-12 15:57:40.403 24233-24349/com.eninetworks.enitvtester I/AmAVUtils: AmAVUtils::isAudioExtendFormat input = video/avc
2020-02-12 15:57:40.470 24233-24349/com.eninetworks.enitvtester D/SurfaceUtils: disconnecting from surface 0xd1a7f008, reason setNativeWindowSizeFormatAndUsage
2020-02-12 15:57:40.470 24233-24349/com.eninetworks.enitvtester D/SurfaceUtils: connecting to surface 0xd1a7f008, reason setNativeWindowSizeFormatAndUsage
2020-02-12 15:57:40.470 24233-24349/com.eninetworks.enitvtester D/SurfaceUtils: set up nativeWindow 0xd1a7f008 for 1920x1080, color 0x11, rotation 0, usage 0x402b00
2020-02-12 15:57:40.471 24233-24349/com.eninetworks.enitvtester W/ACodec: [OMX.amlogic.avc.decoder.awesome] setting nBufferCountActual to 10 failed: -1010
2020-02-12 15:57:40.472 24233-24349/com.eninetworks.enitvtester W/ACodec: [OMX.amlogic.avc.decoder.awesome] setting nBufferCountActual to 9 failed: -1010
2020-02-12 15:57:40.473 24233-24349/com.eninetworks.enitvtester W/ACodec: [OMX.amlogic.avc.decoder.awesome] setting nBufferCountActual to 8 failed: -1010
2020-02-12 15:57:40.475 24233-24349/com.eninetworks.enitvtester W/ACodec: [OMX.amlogic.avc.decoder.awesome] setting nBufferCountActual to 7 failed: -1010
2020-02-12 15:57:40.475 24233-24349/com.eninetworks.enitvtester E/ACodec: Failed to allocate buffers after transitioning to IDLE state (error 0xfffffc0e)
2020-02-12 15:57:40.475 24233-24349/com.eninetworks.enitvtester E/ACodec: signalError(omxError 0x80001001, internalError -1010)
2020-02-12 15:57:40.478 24233-24348/com.eninetworks.enitvtester E/MediaCodec: Codec reported err 0xfffffc0e, actionCode 0, while in state 5
2020-02-12 15:57:40.478 24233-24348/com.eninetworks.enitvtester E/libc: Access denied finding property "media.metrics.enabled"
2020-02-12 15:57:40.492 24233-24349/com.eninetworks.enitvtester W/AHierarchicalStateMachine: Warning message AMessage(what = 'omxI') = {
int32_t type = 0
int32_t event = 0
int32_t data1 = 0
int32_t data2 = 1
} unhandled in root state.
2020-02-12 15:57:40.506 24233-24348/com.eninetworks.enitvtester D/SurfaceUtils: disconnecting from surface 0xd1a7f008, reason disconnectFromSurface
**2020-02-12 15:57:40.518 24233-24336/com.eninetworks.enitvtester E/cr_MediaCodecBridge: Cannot start the media codec**
android.media.MediaCodec$CodecException: start failed
at android.media.MediaCodec.native_start(Native Method)
at android.media.MediaCodec.start(MediaCodec.java:2068)
at org.chromium.media.MediaCodecBridge.c(PG:8)
at org.chromium.media.MediaCodecBridgeBuilder.createVideoDecoder(PG:68)
2020-02-12 15:57:40.521 24233-24336/com.eninetworks.enitvtester W/cr_MediaCodecBridge: Releasing: OMX.amlogic.avc.decoder.awesome
2020-02-12 15:57:40.528 24233-24336/com.eninetworks.enitvtester W/cr_MediaCodecBridge: Codec released
2020-02-12 15:57:40.545 24233-24282/com.eninetworks.enitvtester D/AudioTrack: stop() called with 16940 frames delivered
2020-02-12 15:57:45.549 24233-24282/com.eninetworks.enitvtester E/libc: Access denied finding property "media.metrics.enabled"
2020-02-12 15:57:45.544 24233-24233/com.eninetworks.enitvtester W/AudioThread: type=1400 audit(0.0:48242): avc: denied { read } for name="u:object_r:media_prop:s0" dev="tmpfs" ino=2183 scontext=u:r:untrusted_app:s0:c47,c256,c512,c768 tcontext=u:object_r:media_prop:s0 tclass=file permissive=0
【问题讨论】:
-
您不是唯一遇到此问题的人。我也在面对。甚至 Facebook TV 应用程序也无法使用此 webview 播放视频:/。我很高兴看到解决方案
标签: webview ionic4 android-tv