YouTube限制播放问题



我无法嵌入某些YT视频。

我收到的错误如下:

该视频包含来自VEVO的内容,VEVO已阻止该视频在本网站上显示。

我不相信它只是限制嵌入,因为我正在测试的视频显示,嵌入到其他网站,如:

http://youtubeonrepeat.com/watch/?v=fk4BbF7B29w

我正在使用YouTube IFRAME API来加载视频,我试图使用playervars(如"origin"one_answers"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

谢谢。

我想如果你读一下理解播放限制会有所帮助。

增强的内容控件增加了复杂性。唯一的确定用户是否有权观看视频的简单方法是让他们试着看一下。如果你在写一个应用你想阻止用户看到他们没有的视频观看的能力,这里有一些事情要检查:

  1. yt:accessControl

可嵌入第三方应用程序的视频将具有以下内容:

<yt:accesscontrol action='embed' permission='allowed' />

如果您想只搜索可嵌入的视频,请在查询中添加format=5。就像视频可以嵌入或不嵌入一样,它也可以是可聚合的或不可聚合的:

<yt:accesscontrol action='syndicate' permission='allowed' />

可嵌入但不可联合播放的视频将在YouTube.com或其他嵌入YouTube播放器的网站上播放,但可能无法在手机或电视等设备上播放。如果您想了解更多关于检索适合在移动设备上播放的视频的信息,请参阅开发人员指南。

<
  • 地理限制/gh>

    某些视频可能在某些国家受到限制。此限制适用于查看器所在的位置,而不是第三方服务器所在的位置。例如,如果一个视频在美国被屏蔽,它将有以下内容:

    <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暴露的其他限制
  • 还有一些更微妙的限制偶尔会起作用。目前并非所有这些都可以通过API查询。例如,有些视频只能在特定的域上播放。正如我上面提到的,知道用户是否有权观看视频的唯一万无一失的方法是让他们尝试观看。

    另外,查看Youtube指南中使用