我无法嵌入某些YT视频。
我收到的错误如下:
该视频包含来自VEVO的内容,VEVO已阻止其在本网站上显示。
我不相信它只是限制嵌入我正在测试的视频显示,嵌入其他网站,如:
http://youtubeonrepeat.com/watch/?v=fk4BbF7B29w
我正在使用YouTube IFRAME API来加载视频,并且我尝试使用播放器视频(例如“origin”和“enablejsapi”)嵌入视频无济于事。
示例:
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'fk4BbF7B29w',
playerVars: {
'origin': 'https://api.specivid.com',
'enablejsapi' : 1
},
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
我只是SOL还是我错过了什么?
我正在测试嵌入的页面是: https://api.specivid.com/test.php
谢谢。
答案 0 :(得分:0)
我认为如果你阅读Understand Playback Restrictions会有所帮助。
使用增强的内容控件会增加复杂性。唯一的 确定用户是否有权观看视频的万无一失的方法 让他们试着看。所以,如果你正在写一个应用程序和 你想阻止用户看到他们没有的视频 观看的能力,这里有一个要检查的事项清单:
yt:accessControl
可用于嵌入第三方应用程序的视频将具有以下内容:
<yt:accesscontrol action='embed' permission='allowed' />
如果您只想搜索可嵌入的视频,请在查询中添加format=5
。
就像视频可以嵌入或不嵌入一样,它也可以是可以联合的:
<yt:accesscontrol action='syndicate' permission='allowed' />
可嵌入但不可合并的视频将在YouTube.com或嵌入YouTube播放器的其他网站上播放,但可能无法在移动电话或电视等设备上播放。如果您想了解有关检索适合在移动设备上播放的视频的详情,请参阅开发人员指南。
某些国家/地区可能会限制某些视频。此限制适用于查看者所在的位置,而不适用于第三方服务器所在的位置。例如,如果视频在美国被屏蔽,则会有以下内容:
<media:restriction type='country'
relationship='deny'>US</media:restriction>
进行查询时,您可以添加限制参数来过滤具有特定IP或来自特定国家/地区的客户无法播放的视频。
yt:state
在API响应中查看视频的yt:state
也很重要。即使yt:accessControl
表示允许联合,yt:state
也可能会覆盖它。例如,联合有限的视频将具有以下内容:
<app:control>
<yt:state name='restricted' reasoncode='limitedSyndication'>
Syndication of this video was restricted by its owner.
</yt:state>
</app:control>
您可能还会看到消息“此视频的联合内容受内容所有者限制。”因此,即使上传者允许联合,内容所有者也可以覆盖该视频并禁止联合。例如,如果有人上传包含其他内容所有者拥有的音轨的视频,就会发生这种情况。
有些YouTube视频是租借的。您可以告诉他们出租是因为他们有media:price
标签:
<media:price type='rent' price='1.99' currency='USD' yt:duration='PT2592000S' />
请注意,如果您在查询中使用开发人员密钥,则media:price
标记仅包含在响应中。如果您要构建基于非浏览器的YouTube应用程序,而用户无法租借视频,则可能需要过滤掉租借。您可以通过传递参数paid-content=false
。
偶尔会有更微妙的限制。目前并非所有这些都可通过API查询。例如,某些视频只能在某组域上播放。正如我上面提到的,了解用户是否有权观看视频的唯一简单方法就是让他们尝试观看视频。
另外,请查看Embed a player using an <iframe> tag上的Youtube指南。