在 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 视频的主要内容,如果未能解决你的问题,请参考以下文章