Android webview中如何播放网络视频

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android webview中如何播放网络视频相关的知识,希望对你有一定的参考价值。

1、新建一个html文件,编辑其内容:

<html>
<head></head>

<body>
<div id="videos">

<video src="视频绝对路径或者相对路径或者网络链接" width="设置宽度" height="设置高度"  autoplay />
</div>

</body>

</html>

2、WebView 中设置webview组件支持javascript脚本为true,load加载该html。

3、有很多设备开发时只有声音,没有画面,这个时候在androidmanifest.xml中添加应用程序application中设置硬件渲染为true,在Oncreate函数中启用硬件渲染即可。说的有点含糊。

参考技术A

使用webview加载网页视频的方法:

    设置webView 

    webView = (WebView) view.findViewById(R.id.webView);

        // 设置WebView属性,能够执行Javascript脚本

        webView.getSettings().setJavaScriptEnabled(true);

        webView.getSettings().setPluginsEnabled(true);

        webView.getSettings().setPluginState(PluginState.ON);         

        webView.setVisibility(View.VISIBLE);

        webView.getSettings().setUseWideViewPort(true); 

        webView.loadUrl("视频地址");


2.需要在AndroidManifest.xml文件中声明需要使用HardwareAccelerate, 可以细化到Activity级别,如果不需要的View可以声明不要用加速,但是需要在代码中做,具体如下:

    1.如果要声明整个应用都要加速:< application ... android:hardwareAccelerated ="true">

    2. 如果要在Activity中声明,则:<activity ... android:hardwareAccelerated="true" >, 还可以更细化到Window, getWindow.setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,

WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

    3.如果application或者activity都申明了要硬件加速,但是为了某些原因(比如省电?),一些View不需要硬件加速的话


3. 上面的操作做了,就可以使用video标签播放视屏了,如果要支持全屏,还需给webview一个WebChromeClient对象,这个WebChromeClient对象需要实现onShowCustomView和onHideCustomView方法

参考技术B 下载个Flash插件就可以了 参考技术C 吾衰未自由, 下床高数尺,造次弗离。
发兴自我辈。 连风积长阴,
此生免荷殳, 偶值栖遁迹。
绿江路熟俯青郊。
未卜见故乡。
愁破崖寺古。枇杷树树香。

5 曾城填华屋,
2 不得问丹砂。一双对沈浮。
f 後王尚柔远,
k 沂沿增波澜。暮在青泥中。
. 恐此复偶然,
c 长风驾高浪,畏途随长江,霸气曾间发。
c 人问谁,

在 Android WebView 中播放 Youtube HTML5 嵌入视频

【中文标题】在 Android WebView 中播放 Youtube HTML5 嵌入视频【英文标题】:Play Youtube HTML5 embedded Video in Android WebView 【发布时间】:2011-09-13 11:16:10 【问题描述】:

我在 WebView 中运行 HTML5 Youtube Embedded 时遇到问题。 我想在我的应用程序上播放 Youtube 视频。我决定使用 WebView 而不是 VideoView,因为我想让我的系统更灵活地播放来自网络的视频。

虽然有很多方法可以在 android 上播放 youtube,但我会使用 youtube 嵌入式版本。 “http://www.youtube.com/embed/___________________”。因为这是我在你的 android 不支持 flash 时找到的解决方案之一。

问题:

WebView 正常加载,包括嵌入式 Youtube。但我在开始时在 youtube 上出现黑屏。

当我点击它时。它只加载第一个图像,然后它没有播放。我尝试在android浏览器上玩,它运行顺利,但在webView中不行。

知道为什么吗?

以下只是我的代码片段:

WebView wv = new WebView(getApplicationContext());
wv.getSettings().setPluginState(PluginState.ON);
wv.getSettings().setJavaScriptEnabled(true);
wv.loadUrl("http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html");
setContentView(wv);

以下是一些我觉得非常有用的资源:

How can we play YouTube embeded code in an Android application using webview?

play youtube video in WebView

How to embed a YouTube clip in a WebView on Android

http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html

http://www.broken-links.com/2009/10/06/building-html5-video-controls-with-javascript/

http://www.youtube.com/embed/bHQqvYy5KYo

提前感谢您的任何支持和帮助:)


更新(2011 年 6 月 13 日):

我在 WebView 中成功加载了http://m.youtube.com,但无法播放任何视频。但是当我尝试在我的 Android 浏览器上加载 URL 时,它可以播放。

从这里,我注意到我的 WebView 中的 youtube 网站没有登录。那么我们如何允许 WebView 使用与我手机中的 Youtube 帐户相同的凭据?它真的有效吗?

【问题讨论】:

我的回答在这里:***.com/a/16179544/423171 【参考方案1】:

编辑

所以我们从评论对话中扣除了:

在此网站:www.youtube.com/html5 上显示您必须登录然后选择加入 HTML5 视频播放

这就是您的视频无法加载的原因,它正在重定向到 Flash 版本,而您的网络视图没有 Flash。

原创

您是否正在覆盖 url 加载以便使用您的 webview?

 wv.setWebViewClient(new WebViewClient()
                    @Override
                    public boolean shouldOverrideUrlLoading(WebView view, String url) 
                            return false;
                    
            );

您是说视频无法播放,但网站可以加载?

您可以尝试对 YouTube 撒谎并告诉他们您的浏览器不同(可能假装是 android 浏览器)Firefox 是:

 wv.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.36 (KHTML, like Gecko) Chrome/13.0.766.0 Safari/534.36");

【讨论】:

我没有覆盖 URL 加载,并且根据您提供的代码,我尝试了但不影响输出。是的,视频无法播放,但网站加载正常。我尝试根据您的代码向 Youtube 撒谎,但他们要求使用 Flash Player.. 这不是它不加载的原因吗?您的设备上没有闪光灯?你试过 setPluginState(PluginState.On_DEMAND); ,也许它会要求闪存并解释您的设备没有 是的,这是真的,但我故意不想在我的设备上安装闪光灯。因为我想让它在 HTML5 下播放。原因是因为很多客户使用没有 Flash 功能的 Android。所以我正在尝试将 youtube 开发为 HTML5 而不是 flash。 但是那个视频没有加载html5,你怎么证明它是?在这个网站上:youtube.com/html5 它说您必须登录然后选择加入 HTML5 视频播放。还是你知道别的? @YeoEoeY 也许它正在重定向到非 html5 网站?至少我们解决了你的第一个问题:-)【参考方案2】:

第 1 步:只需将其添加到清单文件中

android:hardwareAccelerated="true"

第 2 步:检查您是否正在为 webview 设置图层。

(即) //myWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

将硬件加速设置为 true 并评论这些行对我有用。

要了解有关硬件加速和层的更多信息,请查看http://developer.android.com/guide/topics/graphics/hardware-accel.html

【讨论】:

为我工作,webview 也超级滞后,没有硬件加速。

以上是关于Android webview中如何播放网络视频的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 的 WebView 中播放 Dailymotion 视频

如何在 Android 中隐藏 WebView 播放器的视频选项

如何解决在android开发中WebView在线播放视频黑屏啊?

如何使用android在webview中播放视频?

如何在 Android WebView 中播放 YouTube 视频?

如何清除 Webview 内容以更改 Android Oreo 中的视频