JavaFX项目播放youtube视频

时间:2013-05-13 22:25:17

标签: youtube javafx

我在自动播放音乐播放器。简而言之,我使用Last.fm api来获取大量的曲目名称和标签。使用这些标签和一些智能计算算法,一旦你播放了一首曲目,播放器就会设置另一首曲目(标签非常适合以前收听的曲目标签)。

我使用youtube API搜索电影的网址,我设法让它发挥作用。现在我想让我的音乐播放器播放视频。我试图将youtube播放器放在WebView上。它有效,但不是预期的。我想控制那个球员。我希望它能够自动开始播放,我想在视频结束时注意到这一点,以便开始下一个视频。

根据使用Youtube API的搜索,我应该怎么做才能播放来自youtube的视频,并控制我放置在GUI上的youtube播放器(让它从命令行播放和停止) ?或者有没有可能下载youtube电影并使用JavaFX API播放它?我搜索了谷歌并注意到我无法将youtube电影下载为可由JavaFX api播放的格式。

2 个答案:

答案 0 :(得分:2)

2015年12月4日更新

某些版本的JavaFX 8无法播放YouTube视频内容。目前,例如,Java 8u66无法播放youtube视频内容,但Java 8u72早期访问版本可以。

另请注意,示例解决方案中引用的某些视频不再可用,或者在嵌入式视频播放器中受到保护。因此,请确保使用可用的视频和未受分发限制的视频执行任何测试。如果需要,请参阅youtube文档以获取有关分发限制的信息。

  

我应该怎样做才能播放来自youtube的视频

作为开始使用的提示,请参阅code playing YouTube videos in JavaFXYouTube HTML5 api

以下是我在JavaFX WebView中运行和播放YouTube视频的示例代码,通过与JavaFX“新歌”按钮的交互,对视频播放进行了一些(非常小的)控制。

slideoutyoutubeplayer

  

或者有没有办法下载youtube电影并使用JavaFX API播放?我搜索了谷歌并注意到我无法将youtube电影下载为可由JavaFX api播放的格式。

我认为这样的用法会违反YouTube's terms of service。我相信YouTube要求您使用YouTube视频播放器播放视频(让他们在视频播放器中插入广告等)。

  

5.1 A

     

您同意不分发本网站的任何部分或部分内容   任何媒体中的服务,包括但不限于任何内容   没有YouTube的事先书面授权,除非YouTube制作   通过功能提供这种分配的方法   服务提供(例如YouTube播放器);

     

5.1 C

     

您同意不通过任何技术访问内容   或网站本身的视频播放页面以外的其他方式,   YouTube播放器或YouTube可能明确表达的其他方式   为此目的指定;

答案 1 :(得分:1)

我提前很少,但我遇到了其他问题。

首先,来自jewelsea的代码很棒。现在我可以将播放器嵌入到我的播放器的辅助窗口中,它会根据我使用youtube api获得的URL显示电影。但看起来JavaFX无法显示大部分电影。它向我展示了youtube播放器和一条错误消息,说我需要安装最新版本的Adobe Flashplayer。根据我的研究,我注意到webView只能显示质量设置为240p而不是更高的电影。

我在Google上搜索了很多关于如何让我的webView播放240p质量的视频。首先,我尝试设置youtube查询参数(https://developers.google.com/youtube/2.0/developers_guide_protocol_api_query_parameters#formatsp)。我尝试了所有的参数:1,5和6.但是,我没有得到可以在JavaFX的webView上查看的格式的电影的URL。

我还尝试将视频质量嵌入到电影的网址中,如下所示: http:/www.youtube.com/watch?v = og2YZlLhjKs& vq = small:240p;但它根本不起作用。我还在浏览器中编写了该URL,看起来youtube会自动将视频设置为最高质量,无论我在URL中写入什么参数。

我使用的youtube api代码与此网页中的相同:http://www.javacodegeeks.com/2010/05/getting-started-with-youtube-java-api.html

我刚将主类代码移动到一个方法,该方法返回列表中第一个视频的URL,然后我更改了“query.setOrderBy(YouTubeQuery.OrderBy.VIEW_COUNT);” to“query.setOrderBy(YouTubeQuery.OrderBy.RELEVANCE);”。这很好用,它显示了我搜索的正确音乐视频的网址。

我很抱歉没有显示我项目的代码,但它很大,它包含2-3个api密钥,如果你告诉我如何更改视频网址http:/www.youtube.com/watch?v = og2YZlLhjKs来处理来自这个网站的代码:https:/gist.github.com/jewelsea/1437374,然后我知道要做的就是让它在我的项目上工作;

关于YouTube播放API的事情也启发了我。我看到API有很多功能,可以帮助我更轻松地播放视频内容(让它播放,让它停止)但问题是我没有关于javascript编程的知识而且很难过我在Java API中也没有这些方法。也许我会尝试将javascript代码插入到我的webview中。但是,如果我使用javascript编辑webview ...它是否会在JavaFX webView上播放更高质量的电影?