在 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 中播放

Android webView 播放 YouTube 视频

Flutter WebView 插件无法播放某些 YouTube 视频

如何在没有 UIWebView 的情况下播放 youtube 视频或在 youtube 视频开始使用 webview 播放时检测视频播放器?

YouTube 视频未在 WebView 中播放 - Android

如何在我的应用程序中播放 Youtube 视频而不使用 Webview