我可以从 PlaylistItems 获取视频 ID 并使用 youtube 播放器播放它们。但是有什么方法可以播放整个播放列表(一个又一个的视频,就像 YouTube 上的那样)。 在 YouTube 上,对于任何播放列表,我们都有类似
的网址https://www.youtube.com/watch?v=zqpkt80WbX0&list=RDaPevLsjcJ7c&index=6
我们如何获取任何视频的“列表”?
你走错了路..你的网址应该是这样的:
String URL = "https://gdata.youtube.com/feeds/api/playlists/your_playlist_Id";
之后你就解析了它。它以 json 和 xml 形式提供。 在 Json 中,您的播放列表 URL 将是:
https://gdata.youtube.com/feeds/api/playlists/RDaPevLsjcJ7c?v=2&alt=json
还有其他问题..
我假设您已经有了播放列表 ID?因此,如果您只是尝试使用 iframe 嵌入,您可以设置 iframe 的源来查看播放列表,如下所示:
<iframe width="560" height="315" src="http://www.youtube.com/embed?listType=playlist&list=RDaPevLsjcJ7c" frameborder="0" allowfullscreen></iframe>
这将使用 YouTube 的嵌入式播放列表播放器,左上角为您提供播放列表控件,媒体栏有跳过按钮,它会自动播放到下一个视频等。它的界面与您在 YouTube.com 上看到的界面不同网站,但仍然很好。
如果您希望获得比 iframe 更多的控制权,则可以使用 YouTube 播放器 API 的播放列表功能来挂钩播放列表 - 然后您可以根据需要加载新的播放列表,或者跟踪索引。以下是一些示例,说明了此类功能(只是演示代码......您需要进行调整以满足您的需求):
<html>
<head>
</head>
<body>
<iframe id="player" width="560" height="315" src="http://www.youtube.com/embed?listType=playlist&list=RDaPevLsjcJ7c&enablejsapi=1&origin=http://humdev.byu.edu" frameborder="0" allowfullscreen></iframe>
<script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
},
});
}
onPlayerReady = function() {
player.loadPlaylist('PL028565C616627F50');
};
onPlayerStateChange = function(evt) {
console.log(evt);
if (evt.data === YT.PlayerState.PLAYING) {
alert(player.getPlaylistIndex());
}
};
</script>
</body>
</html>
(顺便说一句,需要注意的一件事是,您可以使用“loadPlaylist”方法传入常规视频 ID 而不是播放列表 ID ...它会使用播放列表播放器创建单个视频的播放列表接口。不知道什么时候有用,但它有效!)
最后,了解一下在使用播放器 API 时,如果您想动态构建自己的播放列表,您可以这样做并仍然使用可嵌入播放列表播放器,这可能也会有所帮助;在构造播放器对象时,只需传入一个“播放列表”参数以及以逗号分隔的视频 ID 列表,如下所示:
function onYouTubeIframeAPIReady() {
var player;
player = new YT.Player('player', {
videoId: 'M7lc1UVf-VE',
playerVars: { 'autoplay': 1, 'playlist': 'yCjJyiqpAuU,GoSq-yZcJ-4' },
});
}
我使用了以下意图方法
Intent videoint = YouTubeStandalonePlayer.createPlaylistIntent(MyActivity.this, KEY,
playlistID, position, 0, true, false);
startActivityForResult(videoint,STANDALONE_PLAYER_REQUEST_CODE);
之前闲逛,在查看 YouTube 频道的源代码后发现了这一点。因此,它通过网络浏览器使用 YouTube 的可公开访问的客户端 API。 为了使此解决方案发挥作用,您将创建一个书签。
https://www.youtube.com/@DonutOperator
。javascript:window.location="/playlist?list=UU"+ytInitialData.metadata.channelMetadataRenderer.externalId.substring(2)
@DonutOperator
)。