在Android 4.4 Chromium webview上播放内联本地HTML5视频文件的问题

时间:2013-12-12 17:26:30

标签: android html5 video webview local

我正在更新在webview中使用全屏HTML5视频的2.2 / 2.3 Android应用,并尝试在最新的4.4平台上实现内联视频。看过新的Chromium webview对HTML5功能的支持有了很大改进,我认为HTML5视频标签的功能与它在Chrome浏览器上的功能类似。愚弄我。

在努力让内联视频工作之后,我能够做到这一点。正如其他帖子所述,本地文件的内联视频支持仅适用于SD卡上的外部视频文件。我以前无法从Assets文件夹或Raw资源文件访问我的视频文件。我还必须将READ_EXTERNAL_STORAGE权限添加到我的应用程序清单中。这是视频标记和权限标记:

<video id="video1" class="div-centered-content" controls preload="none" src="/sdcard/gizmo.mp4" type="video/mp4"></video>

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

以下是我从我的努力中得出的其他一些结论。如果您不知道,请将这些视为需要正确答案的问题。

  1. 自动播放循环 HTML5视频标记属性不起作用。

  2. 默认播放器控件中的全屏按钮无效。

  3. 新的webview处理src属性不会自动解析和处理Res / Raw文件夹中的资产视频文件和/或资源。由于资产和资源是在.apk中压缩的,因此无法通过HTML5视频的src属性直接加载它们。

  4. 当用户触摸播放器控件上的全屏按钮时,才会调用 onShowCustomView 处理程序。当视频通过javascript播放时,从一开始就没有明显的方法来拦截和手动处理Android中的视频。我不知道是否有通过javascript和桥接器手动调用VideoView并处理它的方式类似于2.2中的方式。如果实际上可以这样做,则没有示例代码说明了这样做的最佳方法。 (我想要这个选项,因为我可以从我的资产/资源中加载视频文件,并提供全屏功能。)

  5. 如果有任何关于如何解决上述问题的简明示例,我相信webview用户社区会很感激这些信息。仍然无法相信,2年后Android webview团队既没有完全支持HTML5视频标签,也没有提供任何文档,可以帮助开发人员更轻松地实现包含视频的webview应用程序。

1 个答案:

答案 0 :(得分:0)

让我们看看我们是否可以互相帮助。我遇到了类似的问题,但在测试了几个浏览器后,我发现UCBrowser与我的目标平台完美配合。我得到的另一个线索是,当我开发我的解决方案以运行Chromecast这样的东西时,我发现它似乎可以在我的Galaxy Tab2上运行。我正在看我的Logcat并注意到在Tab2上Chrome和UCBrowser的工作方式不同。

我通过Logcat注意到Chrome和UCBrowser在达到MediaPlayer级别时似乎有一些差别。这超出了我们的控制范围,因为它是由Webview触发的。

这是一个有趣的部分。我决定让Tab2成为一个网络服务器来托管相同的html页面和视频文件然后宾果游戏!现在Chrome可以显示图片,我的javascript按预期工作。所以在我看来,只有当我们传递像“file:///mnt/sdcard/download/videos.html”这样的网址并且我的所有视频都存储在同一个SD卡上时才会出现问题。我认为这种配置可以让Webview更好地避免在空中使用带宽。

只要我远程保存我的html和视频文件,似乎可以解决我的问题。然而UCBrowser似乎没有这个问题,所以我想知道他们在做什么不同。