После обновления Android WebView до версии 80.0.3987.99 телевизор Android больше не воспроизводит живое видео HLS (h264) в приложении на основе WebView (ioni c 4).
Операционная система: Android TV 9 (исключительно на Android TV) Версия ядра: 4.9.113
Шаги для воспроизведения:
(1) Просто попробуйте открыть HLS h264 живое видео (манифест m3u8) в приложении на основе WebView на ТВ-устройстве Android с использованием WebView 80.0.3987.99. Вы можете использовать прилагаемый APK.
Ожидаемый результат: видео не воспроизводится.
При понижении версии WebView до второстепенных версий (например, 75.0.03770.143) и перезапуске приложения видео воспроизводится без проблем.
Загрузить APK для тестирования:
https://bugs.chromium.org/p/chromium/issues/attachment?aid=433346&signed_aid=j3jgAQISOSoCW4DBQcRFXw==
Вход в систему 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