在Android WebView中启用HTML5视频播放?

17
我正在构建一个简单的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>

Main Activity.java :

主要活动.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中启用视频播放?


1
当你说不会播放时,是指根本无法播放还是不会自动播放?只是让你知道,在Android上不支持自动播放。 - peterept
嗨,它根本不会播放。只有灰色的缩略图出现,里面带有默认的剪辑图标。另一方面,我已经成功使用脚本在默认的Android Web浏览器中自动播放了剪辑:http://server.info-spot.net但是同样的剪辑在Webview中无法播放.... :( - Edmond Tamas
如何在运行时从网络上获取视频链接? - kishor ramani
4个回答

28

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

使用:

        mainWebView.setWebChromeClient(new WebChromeClient());

在设置setWebViewClient之前,请将其放置。您可以重写WebChromeClient来拦截任何需要处理的事件。

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

android:hardwareAccelerated="true"

以下引用摘自SDK页面(向下滚动至HTML5视频支持)

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


感谢您的支持,我迫不及待想尝试它,一回到电脑前就会开始。 - Edmond Tamas
我已经在我的ISActivity.java文件中添加了一行代码,但是我收到了一个错误信息:“WebChromeClient无法解析为类型”,就在它前面。 :( - Edmond Tamas
我不是专家,还在学习中。但是我需要让这个工作起来,请帮忙。 - Edmond Tamas
请确保添加以下导入语句:import android.webkit.WebChromeClient; - peterept
1
嗨,Edmond,请在您满意的情况下将此标记为正确。关于您的另一个问题,我必须告诉您,在任何Android手机上都没有可靠的方法来自动播放视频。它总是会被视为一种黑客行为,因为按设计,Android(和iOS)不希望您自动播放视频。已经有各种各样的黑客行为(在正文加载后使用javscript技巧,模拟手指按压的Android黑客行为),但我没有看到过可靠的黑客行为。也许唯一的方法是发布一个自定义版本的webkit。 - peterept
显示剩余2条评论

1
据我所知,Android WebView使用的是Chromium引擎,不支持全屏模式下的HTML 5视频(H.264)。您可以尝试播放视频,但视频会超出屏幕,并且在所有设备上都不一致。如果WebView是应用程序的主要部分,则最好切换到Mozilla的GeckoView,但这将使您的APK文件增加30到40 MB。

0
以下的HTML5标签适用于我的Android代码,无需进行任何更改。
<video src="video/placeholder.m4v" poster="video/placeholder.jpg" onclick="this.play();"/>

你可以在这里检查详细信息 这里

来源:不规则棚屋


-16

我成功地使用以下代码展示了使用HTML5视频标签的视频:

mainWebView.setWebChromeClient(new WebChromeClient());

android:hardwareAccelerated="true"

我认为我在Webview下仍然面临HTML5问题... @Phantom,Geckoview怎么样? - gumuruh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接