在Android应用中播放YouTube视频

问题描述:

在我的Android应用中,我希望用户点击一次图片,自动播放YouTube视频,当视频完成后,用户立即返回到应用。 在Android中执行此操作的最佳方法是什么?在Android应用中播放YouTube视频

我尝试过使用意图。这是因为视频出现在我认为是YouTube的网页上。然而,播放视频需要另一个水龙头。如果可能,我想避免这种情况。

我尝试了整个MediaPlayer,prepareAsync,setOnPreparedListener,并没有得到它的工作。由于某种原因,onPrepared从未被调用过。没有例外被抛出。我正在使用模拟器进行测试,并且我是Android新手,因此我不确定这些行为在物理设备上会有所不同。

我通过使用webviews获得创意,在iOS上获得了良好的工作效果。我希望在Android上它更直接。 docs确实让它听起来很直接。

干杯!

+0

这可能有助于http://www.gadgetsaint.com/android/play-youtube-android-youtube-player-api/ – ASP 2017-04-07 13:42:47

更新:下面的一切仍然正确,但official YouTube API for Android现在可用。

到目前为止,在Android上播放YouTube视频最简单的方法是简单地启动意图以启动本机Android YouTube应用。当然,如果您不在经过认证的Google设备上,该设备就无法使用Google应用程序。 (Kindle Fire可能是这种设备的最大例子)。这种方法的问题在于,视频结束时用户不会自动关闭应用程序,他们必须按下“后退”按钮,此时您可能会丢失它们。

作为第二种选择,您可以使用MediaPlayer API播放YouTube视频。但这种方法有三个注意事项:

1)您需要拨打YouTube的GData webservice API,并将其传递给视频的ID。您将获得大量的元数据,以及您应该传递给MediaPlayer播放H.264编码流的RTSP URL。这可能是您尝试使用MediaPlayer失败的原因;您可能没有使用正确的网址进行流式传输。

2)GData/MediaPlayer方法将只播放低分辨率内容(176x144或类似)。这是YouTube的一项蓄意决定,以防止内容被盗。当然,这并不能提供非常令人满意的体验。有后门黑客可以获得更高分辨率的视频流,但所有版本的Android都不支持它们,使用它们违反了YouTube的服务条款。

3)RTSP流可以被一些内部网络/防火墙阻止,所以这种方法可能不适用于所有用户。

第三个选项是将WebView嵌入到您的应用程序中。有两种方法可以采取在这里:

1)您可以嵌入Flash对象和运行标准桌面Flash播放YouTube上。您甚至可以使用JavaScript API来控制播放器,并将事件转发回原生Android应用程序。这种方法运行良好,但不幸的是Flash在Android平台上已被弃用,并且不适用于Android 4.1及更高版本。

2)您可以嵌入<video>标签,以通过HTML5播放YouTube。对Android的各种版本的支持各不相同。它在Android 4上运行良好。0以后;早期版本的HTML5 <video>支持有点多余。因此,根据您的应用程序必须支持的Android版本,您可以采用在Android 4.x或更高版本中嵌入HTML5的混合方法,以及适用于所有早期版本Android的Flash。

在*上有几个关于使用HTML5播放YouTube视频的主题;他们都没有真正描述你必须在一个地方遵循的整个过程。这里的链接,他们几个:

Android - How to play Youtube video in WebView?

How to embed a YouTube clip in a WebView on Android

Play Youtube HTML5 embedded Video in Android WebView

所有这一切都将让你在几周/几个月来急剧容易;在Google I/O 2012上,他们展示/演示了一款全新的适用于Android的YouTube API,支持将YouTube内容直接嵌入到您的应用程序中,完全支持Android 2.2(截至撰写本文时,大约95%为Android用户群)。它不能够快到。

+0

即将推出的API听起来不错!谢谢(你的)信息。 – SundayMonday 2012-07-18 22:29:32

+0

我会对你提到的那些后门黑客感兴趣。我想补充一点,有些设备无法在Google Play上看到Adobe Flash的下载,从而有效地破坏了依靠YouTube的Flash播放器为Froyo,Gingerbread和Honeycomb实施的混合策略。 – 2012-07-18 22:29:59

+0

@Giuilo - 在我们的应用程序中,如果Flash不存在,我们会回到GData/MediaPlayer API。它比黑屏更好。 – mportuesisf 2012-07-18 22:31:23