在 WebView 中播放 youtube 视频
Posted
技术标签:
【中文标题】在 WebView 中播放 youtube 视频【英文标题】:play youtube video in WebView 【发布时间】:2011-01-18 12:34:06 【问题描述】:在我的 android 应用程序中,我有一个 WebView 来显示来自我们网站的 html 数据。有时该页面会有 youtube 嵌入对象。这在应用程序中没有正确显示。有没有办法在 WebView 中显示/播放 youtube 视频?谢谢。
【问题讨论】:
我在这里回答了如何设置您的 webview 以嵌入和播放 youtube 视频:***.com/a/12850816/223440 【参考方案1】:您不能将它们显示为嵌入的,除非在具有 Flash 的设备上。
但是,如果您可以解析出 YouTube 视频详细信息,则可以构建一个 ACTION_VIEW
Intent
将它们显示在 YouTube 应用程序上...对于那些具有 YouTube 应用程序的 Android 设备。
您还可以试验 HTML5 的 <video>
标签,AFAIK 在浏览器应用程序中受支持,因此可以在 WebView
中工作。
【讨论】:
谢谢马克,我打算在 youtube 网址上开始一个新的意图。 我尝试使用 HTML5 没有成功。浏览器确实加载了视频的“预览”,但根本没有播放功能。【参考方案2】:我偶然发现了这个帖子:link
事实上,我基本上只需要添加到应用程序清单 xml 中:
android:hardwareAccelerated="true"
瞧,连 youtube 视频都开始播放了
【讨论】:
这似乎只在您支持 Honeycomb 3.0 及更高版本时才有效。 是的,提示很好,而且确实只适用于 3.0 及更高版本。【参考方案3】:webView.setWebViewClient(new WebViewClient()
public boolean shouldOverrideUrlLoading(WebView view, String url)
// YouTube video link
if (url.startsWith("vnd.youtube:"))
int n = url.indexOf("?");
if (n > 0)
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("http://www.youtube.com/v/%s", url.substring("vnd.youtube:".length(),n)));
return (true);
return (false);
);
您的 WebView (webView) 将向您发送 shouldOverrideUrlLoading 消息,其 URL 如下所示:
vnd.youtube:VIDEO_ID?PARMS
解析它以将其转换为http://www.youtube.com/v/VIDEO_ID,然后将此修改后的 URL 作为 Intent 传递。
为我工作...
【讨论】:
我点击视频图片怎么没有这个事件?我的链接如下所示:。有什么想法吗? 它适用于 Android 2.1,但不适用于 2.2 和 2.3:***.com/questions/11215443/…【参考方案4】:在此处阅读我在 android-developers 组上的帖子:YouTube in the emulator?
基本上,播放 YouTube 剪辑的最佳方式是为其创建自己的 Activity,这是一个很好的示例:Polish Your App: Free Embeddable Android YouTube Activity!
更新:由于 YouTube 令牌更改导致的不兼容问题已得到修复。该组件的最新版本应该可以很好地用于公共 YouTube 视频。
【讨论】:
感谢 Felix,我曾考虑拥有一个自定义播放器,但最终决定放弃。原因是默认播放器具有更多自定义播放器不具备的功能,例如书签、加注星标等。此外,用户更熟悉默认播放器。 看起来正是我需要的,但它似乎坏了,youtube 安全更改,现在找不到视频【参考方案5】:您可以尝试切换您的网站以嵌入 HTML5 version of the YouTube player 而不是 Flash 版本。仍然不确定这是否能 100% 工作,但它显然会比目前不支持闪存的设备上的闪存版本更好。
编辑:没关系,看起来 HTML5 版本还需要浏览器支持 H.264 编解码器,它看起来不像任何 Android 设备目前都支持。
【讨论】:
【参考方案6】:嵌入的 youtube 视频在桌面浏览器和 iPhone 浏览器中运行良好(即使嵌入在 iPhone 上的应用程序中),所以这似乎是 Android 而不是 YouTube 的问题。
【讨论】:
【参考方案7】:我在 android WebView 中有一个用于 html5 视频标签的库,它也适用于所有 youtube 视频和大多数 flash 视频,支持进入和退出全屏等功能。
VideoEnabledWebView by cprcrack
【讨论】:
以上是关于在 WebView 中播放 youtube 视频的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Youtube 视频没有在 webview android 中播放
Flutter WebView 插件无法播放某些 YouTube 视频
如何在没有 UIWebView 的情况下播放 youtube 视频或在 youtube 视频开始使用 webview 播放时检测视频播放器?