更新:以下所有内容仍然正确,但是官方YouTube Android API现已推出。
到目前为止,在Android上播放YouTube视频最简单的方法是通过启动本机Android YouTube应用程序来触发Intent。当然,如果您不在拥有Google应用程序补充的认证Google设备上(例如Kindle Fire可能是这种设备的最大例子),则此方法将失败。这种方法的问题在于,当视频结束时,用户不会自动回到您的应用程序;他们必须按下返回按钮,此时您可能已经失去了他们。
作为第二个选项,您可以使用MediaPlayer API播放YouTube视频。但是,这种方法有三个注意事项:
1)您需要调用YouTube的GData Web服务API,向其传递视频的ID。您将获得大量元数据以及应该传递给MediaPlayer以播放H.264编码流的RTSP URL。这可能是您尝试使用MediaPlayer失败的原因;您可能没有使用正确的URL进行流式传输。
2) GData/MediaPlayer方法只能播放低分辨率的内容(176x144或类似分辨率)。这是YouTube故意为之,以防止内容被盗。当然,这并不能提供非常令人满意的体验。有一些后门黑客可以获得更高分辨率的流,但它们不支持所有Android版本,并且使用它们会违反YouTube的服务条款。
3) RTSP流可能会被某些内部网络/防火墙屏蔽,因此这种方法可能对所有用户都不起作用。
第三个选项是在您的应用程序中嵌入一个WebView。这里有两种方法:
1)您可以嵌入Flash对象并运行YouTube的标准桌面Flash播放器。您甚至可以使用Javascript API来控制播放器,并将事件传递回本机Android应用程序。这种方法效果很好,但不幸的是,Flash正在Android平台上被弃用,并且在Android 4.1及更高版本中将无法使用。
2) 你可以通过HTML5嵌入<video>
标签来播放YouTube。这在不同版本的Android中支持程度有所不同。它在Android 4.0及更高版本上运行良好;早期版本的HTML5 <video>
支持有些不稳定。因此,根据您的应用程序必须支持的Android版本,您可以采取混合方法,在Android 4.x或更高版本上嵌入HTML5,并在所有早期版本的Android上使用Flash。
这里在StackOverflow上有几个关于使用HTML5播放YouTube视频的主题讨论;但没有一个地方真正描述了您必须遵循的整个过程。以下是其中一些链接:
Android - 如何在WebView中播放Youtube视频?
如何在Android WebView中嵌入YouTube剪辑
在Android WebView中播放Youtube HTML5嵌入式视频
在未来几周/几个月内,所有这些都将变得更加容易;在2012年的Google I/O大会上,他们展示了一个新的YouTube API for Android,支持直接嵌入YouTube内容到你的应用程序中,并且完全支持Android 2.2及以上版本(截至本文撰写时,约占95%的Android用户)。它不能够快速到达。
get_video
的YouTube URL,但现在已经不支持了。代码的新版本(可以在Google Code上找到http://code.google.com/p/android-youtube-player)使用`get_video_info`来解决格式问题,但我担心即使是对这些URL的支持也可能会被取消而没有通知。然而,在等待易于使用的API部署的同时,如果代码能够正常工作,那么它可能是Flash播放器和GData/`VideoView`/`MediaPlayer`之间的一个不错的补充,后者的质量可能仅仅低了一点点,而这是我所需要的。 - Giulio Piancastelli