我正在开发一个应用程序,允许您通过YouTube播放器API参考iframe嵌入WebView,在后台Youtube视频和音频中继续接收(如浏览器)。 当您正在观看视频,并使用电源按钮关闭屏幕时,一切仍然正常,但是当我按下应用程序中的主页按钮时,几秒钟就完全可以听,但音频开始出现断断续续的情况。
我尝试在服务中实现WebView,即使使用浮动覆盖窗口,一切正常,但是当我按下主页按钮,开始口吃音频和视频时会发生同样的事情(因为在这种情况下你可以看到视频也是)。之后,如果我回到应用程序,所有都开始恢复正常。似乎app需要保持在前台才能正常工作。
我一直在尝试不同的想法,而且我一直在搜索谷歌一周,但我不知道这是否有解决方案,错误是在Android 6.0,Android 5.0.2正常工作。
当我按下主页按钮时,这是android 5.0.2的logcat:
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,以及我在网上找到的内容,似乎是一个特定于具有缓冲区(缓冲区欠载)的Android 6.0的问题,这可能已在Android 6.0.1中得到修复,但我无法证明。
任何解决方案?谢谢!
答案 0 :(得分:0)
我在Android L(5.1.1)上观察到youtube嵌入视频的类似问题,但在我的情况下,问题仅在于Chrome /本机浏览器中的视频,并且音频工作正常。当我在某个网站上播放youtube嵌入式视频时,视频屏幕仍为“绿色”。在调查之后,我发现问题是对libstagefright中的缓冲区进行了不正确的健全性检查(检查https://android-review.googlesource.com/#/c/178013/)。我正在开发自定义ROM,所以在Android操作系统代码中修复它,现在AV工作没有问题。
作为一种解决方法,如果我从chrome:// flags启用“Media Source API”,那么在chrome中它可以在不改变操作系统的情况下工作。