Webview Android棉花糖在后台流媒体上口吃(缓冲区?)

Webview Android棉花糖在后台流媒体上口吃(缓冲区?),webview,youtube,streaming,buffer,android-6.0-marshmallow,Webview,Youtube,Streaming,Buffer,Android 6.0 Marshmallow,我正在开发一个应用程序,它允许您通过Web视图中嵌入iframe的Youtube播放器API参考继续在后台接收Youtube视频和音频(如浏览器)。 当你正在观看视频,并用电源按钮关闭屏幕时,一切都很好,但当我从应用程序中按下home按钮时,几秒钟就可以完美地收听,但随后音频开始断断续续 我尝试在一个服务中实现WebView,即使有一个浮动的覆盖窗口,但当我按下home按钮,开始断断续续地播放音频和视频时,也会发生同样的事情(因为在这种情况下,你也可以看到视频)。稍后,如果我返回到应用程序,所有

我正在开发一个应用程序,它允许您通过Web视图中嵌入iframe的Youtube播放器API参考继续在后台接收Youtube视频和音频(如浏览器)。 当你正在观看视频,并用电源按钮关闭屏幕时,一切都很好,但当我从应用程序中按下home按钮时,几秒钟就可以完美地收听,但随后音频开始断断续续

我尝试在一个服务中实现WebView,即使有一个浮动的覆盖窗口,但当我按下home按钮,开始断断续续地播放音频和视频时,也会发生同样的事情(因为在这种情况下,你也可以看到视频)。稍后,如果我返回到应用程序,所有这些都会重新开始正常工作。似乎应用程序需要留在前台才能正常工作

我一直在尝试不同的想法,我在谷歌搜索了一个星期,但我不知道这是否有解决方案,错误在于安卓6.0,安卓5.0.2工作正常

以下是我按下home按钮时android 5.0.2的日志:

W/cr_media: calling MediaCodec.release()
W/cr_media: calling MediaCodec.release()
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
W/linker: libaricentomxplugin.so has text relocations. This is wasting memory and prevents security hardening. Please fix.
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
E/OMXNodeInstance: OMX_GetExtensionIndex OMX.google.android.index.storeMetaDataInBuffers failed
E/ACodec: [OMX.google.vp9.decoder] storeMetaDataInBuffers failed w/ err -2147483648
E/OMXNodeInstance: getParameter(1868562439) ERROR: 0x8000101a
Android 6.0的logcat:

E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb8b429e0
D/AudioManager: AudioManager dispatching onAudioFocusChange(1) for android.media.AudioManager@7f0c8a8com.mzrsoftware.android.youparrot.WebViewerYoutube$3@898cfc1
W/cr_media: calling MediaCodec.release()
W/cr_media: calling MediaCodec.release()
W/OpenGLRenderer: Fail to change FontRenderer cache size, it already initialized
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
E/OMXMaster: Failed to get omx plugin handle
D/AudioManager: AudioManager dispatching onAudioFocusChange(-1) for android.media.AudioManager@7f0c8a8com.mzrsoftware.android.youparrot.WebViewerYoutube$3@898cfc1
E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
E/OMXMaster: Failed to get omx plugin handle
W/OMXNodeInstance: [1:google.vp9.decoder] component does not support metadata mode; using fallback
E/ACodec: [OMX.google.vp9.decoder] storeMetaDataInBuffers failed w/ err -1010 / is-streaming 1
E/OMXNodeInstance: getParameter(1:google.vp9.decoder, ParamVideoAndroidVp8Encoder(0x6f600007)) ERROR: UnsupportedIndex(0x8000101a)
E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb8e1a248
-----(Here audio, video or both start stuttering)-----
W/OpenGLRenderer: Fail to change FontRenderer cache size, it already initialized
E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb8ed9ff0
通过查看logcat,以及我在网上发现的内容,这似乎是安卓6.0特有的一个带有缓冲区(缓冲区不足)的问题,安卓6.0.1可能已经解决了这个问题,但我无法证明这一点


有什么解决办法吗??谢谢

我在Android L(5.1.1)上观察到youtube嵌入视频的类似问题,但在我的例子中,问题是仅在chrome/本机浏览器中使用视频,音频工作正常。当我在某个网站上播放youtube嵌入视频时,视频屏幕保持“绿色”。经过调查,我发现问题在于对libstagefright中的缓冲区进行了不正确的健全性检查(检查)。我正在开发自定义ROM,所以在android操作系统代码中修复了它,现在AV可以正常工作


作为一种解决方法,在chrome中,如果我从启用“媒体源API”chrome://flags 然后它就可以在操作系统中正常工作。

Android 5.1.1和webview也存在同样的问题,您找到解决方案了吗?谢谢您的回复!我的开发只是以另一种方式进行,但我有一个使用旧代码的备份,我可以探索它!