【问题标题】:Enabling HTML5 video playback in android WebView?在 android WebView 中启用 HTML5 视频播放?
【发布时间】:2013-06-23 10:04:18
【问题描述】:

我正在构建一个简单的 webview 应用程序,它现在使用 HTML5 视频播放器显示一个充满短视频剪辑的网站。在默认的 android web 浏览器中一切正常,但 webview 不会播放任何视频剪辑。

用于播放视频片段的Html代码如下:

<video poster preload="true" controls autoplay width="500" height="200">
  <source src="http://www.edmondvarga.com/demo/videos/video.mp4" type="video/mp4">
  </video>

主Activity.java:

package tscolari.mobile_sample;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class InfoSpotActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        setContentView(R.layout.main);

        WebView mainWebView = (WebView) findViewById(R.id.mainWebView);

        WebSettings webSettings = mainWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);

        mainWebView.setWebViewClient(new MyCustomWebViewClient());
        mainWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

        mainWebView.loadUrl("http://server.info-spot.net");
    }

    private class MyCustomWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
}

如何在 webview 中启用视频播放?

【问题讨论】:

  • 当你说不会播放时,你的意思是根本不会播放,还是不会自动播放?让您知道 Android 不支持自动播放。
  • 嗨,它根本不会播放。仅显示灰色缩略图,其中包含默认剪辑图标。另一方面,我已经设法使用脚本在默认的 android web 浏览器中自动播放剪辑:server.info-spot.net 但相同的剪辑不会在 webview 中播放....:(
  • 如何在运行时从网络上获取视频链接?

标签: html webview


【解决方案1】:

我从我们之前做的一个项目中知道,您需要使用 WebChromeClient 来播放 HTML5 视频。 (这也为您提供硬件加速支持 - 前提是您还为您的活动设置标志)。

用途:

        mainWebView.setWebChromeClient(new WebChromeClient());

把它放在你设置 setWebViewClient 之前。您可以覆盖 WebChromeClient 来拦截您需要处理的任何事件。

并在您的活动定义中的 AndroidManifest.xml 中,添加:

android:hardwareAccelerated="true"

以下引用来自SDK Page(向下滚动到 HTML5 视频支持)

为了在您的应用程序中支持内联 HTML5 视频,您需要开启硬件加速,并设置 WebChromeClient。

【讨论】:

  • 感谢您的支持,等我回到我的电脑后立即尝试。
  • 我已将这一行添加到我的 ISActivity.java 中,但我收到一条错误消息:“WebChromeClient 无法解析为一种类型” - 就在它的前面。 :( .
  • 我不是专家,还在学习中。但我需要让这个工作,拜托。
  • 确保添加导入:import android.webkit.WebChromeClient;
  • 您好 Edmond,如果您满意,请将此标记为正确。关于您的其他问题,我不得不告诉您,没有可靠的方法可以让视频在任何 Android 手机上自动播放。这将永远是一个黑客,因为按照设计,Android(和 iOS)不希望你自动播放视频。有各种 hack(javscript 技巧 post body load,android hacks - 模拟手指按压),但我没有看到是可靠的。唯一的方法可能是发布自定义版本的 webkit。
【解决方案2】:

据我所知,android webview 有 Chromium 引擎,它不支持全屏模式下的 HTML 5 视频 (H.264)。您可以尝试播放视频,但视频会出现在屏幕之外,并且在所有设备上都不一致。如果 webview 是应用程序的主要部分,那么最好切换到 mozilla geckoview 但它会为您的 apk 添加 30 到 40 mb。

【讨论】:

    【解决方案3】:

    鉴于以下 html5 标签适用于我,而无需更改 android 代码中的任何内容

    <video src="video/placeholder.m4v" poster="video/placeholder.jpg" onclick="this.play();"/>
    

    您可以详细查看here

    信用:irregular shed

    【讨论】:

      【解决方案4】:

      我使用以下代码成功地使用 html5 视频标签显示视频:

      mainWebView.setWebChromeClient(new WebChromeClient());
      
      android:hardwareAccelerated="true"
      

      【讨论】:

      • 我想我仍然面临 webview 下的 html5 问题...... geckoview @Phantom 怎么样?
      猜你喜欢
      • 2021-05-30
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多