是的,这似乎记录不清,或者我在文档中看不到它。我基本上不需要使用JavaScript API的相关视频(?rel=0
)。
$players[$vidIdPlaceholderRef] = new YT.Player('player_' + $vidIdPlaceholderRef, {
height: '550',
width: '840',
videoId: $vidId
});
就是我所拥有的。
我也尝试过:
$players[$vidIdPlaceholderRef] = new YT.Player('player_' + $vidIdPlaceholderRef, {
height: '550',
width: '840',
videoId: $vidId + '?rel=0',
rel : 0
});
没有运气。是否有人知道可以添加的选项(尝试rel : 0
没有运气)
答案 0 :(得分:148)
“rel”是一个播放器参数,如下所示:
https://developers.google.com/youtube/player_parameters#rel
要向iframe播放器添加播放器参数,您需要指定第二个构造函数参数的playerVars属性(在撰写本文时,请记录here,并在IFrame API documentation page上)
e.g。
new YT.Player('playerid', {
height: '550',
width: '840',
videoID: 'video_id',
playerVars: {rel: 0, showinfo: 0, ecver: 2}
});
答案 1 :(得分:12)
rel播放器参数的行为已更改。
rel参数的行为在9月或之后改变 25日,2018年。更改的结果是您将无法 禁用相关视频。但是,您可以选择 指定播放器中显示的相关视频应来自 与刚刚播放的视频相同的频道
因此,不再可能禁用相关视频。相反,playerVars: {rel:0}
会更改播放器的行为并显示来自指定频道的建议。
答案 2 :(得分:3)
接受的解决方案对我不起作用。工作是什么:
1)将iframe放在包含rel参数的html中
<iframe id="youtube-video" width="560" height="315"
src="https://www.youtube.com/embed/M7lc1UVf-VE?enablejsapi=1&rel=0&modestbranding=1"
frameborder="0" enablejsapi="1" allowfullscreen></iframe>
2)使用javascript API附加到现有播放器
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('youtube-video', {
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
console.log("ready");
}
function onPlayerStateChange(event) {
console.log("state changed");
}
答案 3 :(得分:1)
如果您正在使用SWFObject,则只需执行以下操作:
function loadVideo() {
var params = { allowScriptAccess: "always" }
, atts = { id: "myvideo" }
;
//NOTE THE END OF THE BELOW LINE vvvvvv
swfobject.embedSWF("https://www.youtube.com/v/[video id here]?enablejsapi=1&playerapiid=myvideo&version=3&rel=0"
, "videoplaceholderid"
, "768", "432", "8", null, null, params, atts);
}
只需将rel=0
添加到您网址的末尾即可。
答案 4 :(得分:0)
无需通过API进行编码,现在可以通过
轻松完成你管嵌入按钮 - &gt;显示更多 - &gt;选中“视频播放时显示建议的视频”选项
答案 5 :(得分:0)
这是一个快速的解决方案:
setInterval(function(){
if($('iframe').length > 0){
$('iframe').each(function(){
if($(this).hasClass('gotYou')){
//do nothing
}else{
var getMySrc = $(this).attr('src');
var newSrc = getMySrc.split('?');
console.log(newSrc);
var freshURL = newSrc[0]+'?rel=0&'+newSrc[1];
console.log(freshURL);
$(this).addClass('gotYou');
$(this).attr('src', freshURL );
}
});
}
}, 1);
它是做什么的,它将在您的文档中查找iframe。如果找到iframe,它将获取iframe的src,找到?
标记,然后将?
替换为?rel=0&
。这里的目标是淘汰rel=0
答案 6 :(得分:0)
new YT.Player('playerid', {
height: '550',
width: '840',
videoID: 'video_id',
playerVars: {rel: 0},
});
答案 7 :(得分:0)
您会在两个位置获得相关视频:在带网格的视频结尾处,以及暂停时在视频底部。我想出了一种方法,可以在最后删除它们,并使大多数企业至少可以容忍底部的内容。
为避免在视频结尾显示相关视频,我只是停止了视频,所以它返回到显示缩略图和播放按钮:
var player = new YT.Player('player', {
height: '390',
width: '640',
events: {
'onStateChange': function(event){
switch(event.data){
// Stop the video on ending so recommended videos don't pop up
case 0: // ended
player.stopVideo();
break;
case -1: // unstarted
case 1: // playing
case 2: // paused
case 3: // buffering
case 5: // video cued
default:
break;
}
}
}
});
您还可以将player.stopVideo();
替换为要运行的任何其他代码。
IFrame Player API: YouTube Embedded Players and Player Parameters
rel=0
不再避免显示任何相关视频;现在,它仍将显示相关视频,但至少它们仅来自您的频道。这种情况在2018年9月25日(documentation)前后的某个时间发生了变化。
通过在YT.Player中设置playerVars
,我们至少可以使相关视频仅显示我们频道的视频。文档尚不清楚您必须将playerVars
设置为对象,但是可以像这样设置它:
var player = new YT.Player('player', {
...
playerVars:{
rel: 0
modestbranding: 1, // If you're trying to remove branding I figure this is helpful to mention as well; removes the YouTube logo from the bottom controls of the player
// color: 'white', // Can't have this and modestbranding active simultaneously (just a note in case you run into this)
},
...
});
如果有时间,我可能会对其进行更多研究,但这是答案所在:
我们可以轻松访问iframe对象,但无法对其进行任何操作:IFrame Player API: Accessing and modifying DOM nodes。似乎因为我们要从YouTube编辑iframe,所以存在安全方面的顾虑(无论我们实际上在做什么)。理想情况下,我可以使用player.getIframe().contentWindow.document.querySelector('.ytp-pause-overlay.ytp-scroll-min').remove()
删除“更多视频”文本,但是运行player.getIframe().contentWindow.document
时会出现错误SecurityError: Permission denied to access property "document" on cross-origin object
。
但是playerVars
也有一个origin
值,无论如何它可以让我们访问iframe的对象:
var player = new YT.Player('player', {
...
playerVars:{
origin: 'https://mywebsite.com'
},
...
});
它不适用于localhost,但适用于that may be a Chromium and Firefox thing。在现场站点上,这也许是一个合法的选择。当/如果我尝试通过此方式通知我是否成功,我会更新该帖子。