动态更改 Youtube Iframe playerVars

Posted

技术标签:

【中文标题】动态更改 Youtube Iframe playerVars【英文标题】:Changing Youtube Iframe playerVars dynamically 【发布时间】:2016-04-14 10:01:14 【问题描述】:

我有一个使用 Youtube Iframe API 的网页,并且我设法使用这行代码更改了 videoId:

player.loadVideoById(videoId)

但为了让视频循环播放,videoId 和播放列表必须匹配,因此我还需要更改 playerVars 对象内的播放列表参数。有人能告诉我一个简单的方法吗?

这是原始代码:

var player;
function onYouTubeIframeAPIReady() 
player = new YT.Player('player', 
height: '390',
width: '640',
videoId: 'M7lc1UVf-VE',
playerVars:  
    'loop' : 1,
    'playlist': 'M7lc1UVf-VE'
    ,
events: 
  'onReady': onPlayerReady,
  'onStateChange': onPlayerStateChange
    
 );

我尝试设置一个变量,如下所示,并像 loadVideoById 一样动态更改它:

player.loadVideoById(videoId) 
currentVideoId = videoId

var player;
function onYouTubeIframeAPIReady() 
player = new YT.Player('player', 
height: '390',
width: '640',
videoId: currentVideoId,
playerVars:  
    'loop' : 1,
    'playlist': currentVideoId
    ,
events: 
  'onReady': onPlayerReady,
  'onStateChange': onPlayerStateChange
    
 );

【问题讨论】:

【参考方案1】:

使用.loadPlaylist() 指定播放列表和视频(在播放列表中)的(数字)索引,而不是视频 ID。

player.loadPlaylist(list:String,
                 listType:String,
                 index:Number,
                 startSeconds:Number,
                 suggestedQuality:String):Void

这个函数加载指定的列表并播放它。该列表可以是播放列表、搜索结果提要或用户上传的视频提要。

可选的 listType 属性指定您要检索的结果提要的类型。有效值为 playlistsearchuser_uploads。默认值为 playlist

必需的 list 属性包含一个键,用于标识 YouTube 应返回的特定视频列表。

...

1

参见this example fiddle,其中两个不同播放列表中的两个视频在clickEventHandler() 函数中加载(取决于单击的列表项的id 属性值)。

player.loadPlaylist(
    list: 'PLUdAMlZtaV11U9AtszkMh0bpRqM4dtlDC',
    index: 7
  );

【讨论】:

以上是关于动态更改 Youtube Iframe playerVars的主要内容,如果未能解决你的问题,请参考以下文章

动态创建的 iFrame 上的 YouTube iFrame API

在 WP 中选择更改时更改 YouTube iFrame 源

Soundcloud iframe 和 YouTube iframe 一起出现的问题

javascript 和 jQuery 中的动态 youtube iframe

在DIV中动态加载Youtube视频Iframe嵌入代码

视频取消静音时无法通过 iframe API 播放 YouTube 视频