YouTube的嵌入给出“从特定网站上播放”的错误,尽管API的元数据,否则说明(YouTube e

2019-06-21 04:31发布

我想有我客户端应用程序过滤掉不允许嵌入视频。 在这里,我的理解是,有没有办法限制饲料(即格式= 5不足以)做到这一点,我必须检查条目的属性我自己,对于<yt:accessControl>标签和<app:control><yt:state>标记。

这不是为我工作。

例如,该视频: https://www.youtube.com/watch?v=waxat-_tRH8

没有嵌入: https://www.youtube.com/embed/waxat-_tRH8

即使API返回的数据表明(据我可以告诉),它应该是能够嵌入: https://gdata.youtube.com/feeds/api/videos/waxat-_tRH8?v=2

该条目不包含任何<yt:noembed>标签(参照先有问题)和<media:restriction type='country' relationship='deny'>ME DE RS</media:restriction>不因为我解释这在美国(参见之前的问题) (参见之前的问题) 。

我缺少的是在这里吗?

编辑:在我的客户端应用程序的网页视图上面我的网页浏览器的作品的嵌入链接,但不....!?

Answer 1:

某些视频有一个域级别的白名单或黑名单适用于他们。 这是在内容拥有者的自由裁量权来完成。

如果存在(或许是因为那里不是在你的本地应用程序的情况下,真正的引荐域),白名单或黑名单,并嵌入网站的域名不能确定,则默认行为是阻止播放。

这个博客帖子有一些详细信息,以及: http://youtube-eng.blogspot.co.uk/2011/12/understanding-playback-restrictions_28.html



Answer 2:

正如杰夫Posnick指出 ,一些影片有黑名单。 如果您尝试,并要求视频从一个应用程序,而不是网页的黑名单,你会看到这样的错误信息:

“这部影片含有___的内容。这是从特定网站上播放。”

很可能你的应用程序是不是列入黑名单,那你被错误地列入黑名单。 为了解决这个问题,您需要提供与原您的Youtube API请求(如atulkhatri指出 )。

在Youtube视频的请求头,设置Referer到您打算将使得来自呼叫 (为前。您的应用程序的相应网站的域名)。 如果你没有一个领域,你可以很容易地写一些其他的领域,以及可能工作了。

  • 为Android(Java)的,你可以看到一个例子在这里 。

  • 对于iOS, 看上面

  • 对于本地做出反应,您可以使用origin组件上托到您的域( origin是在文档中提到 ,但不会告诉你很多关于它的)。

  • 下面是另一个例子在浏览器同样的问题时的延伸阻断Referer从良好的措施被发送报头。

这个答案适用于在Youtube的V3 API。



Answer 3:

其实,如果你在这里嵌入视频:

http://www.w3schools.com/html/tryit.asp?filename=tryhtml_default

像这样:

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<iframe width="420" height="315" src="https://www.youtube.com/embed/waxat-_tRH8" frameborder="0" allowfullscreen></iframe>
</body>
</html>

它实际上是可玩。 所以,问题其实回来,为什么它的工作原理上的网站,但没有iOS版移动应用?

然后我发现了这个帖子:

http://support.metacdn.com/hc/en-us/articles/204513985-Video-Player-Embed-Restriction

它解释说,嵌入可能由于缺乏HTTP标头“引荐”字段的限制。

所以,设置参考域之后,该视频将被打在iOS应用:

let youtubeURL = NSURL(string: "https://www.youtube.com/embed/YQHsXMglC9A?autoplay=1") 
let youtubeRequest = NSMutableURLRequest(URL: youtubeURL!) 
youtubeRequest.setValue("https://www.youtube.com", forHTTPHeaderField: "Referer") 
webView.loadRequest(youtubeRequest)

瓦剌,现在的工作!

你快乐吗? 导致我很高兴。 :)



Answer 4:

你可以使用这个答案。 这在我的病例非常完美

添加originplayer varshttps://www.youtube.com

看到这个答案



Answer 5:

对于那些谁遇到同样的问题在web视图Android上。 我固定,通过添加引荐头字段类似于什么@RainCast在她的回答一样。

 Map<String, String> extraHeaders = new HashMap<>();
 extraHeaders.put("Referer", "http://youtube.com");
 String url = "https://www.youtube.com/embed/dQw4w9WgXcQ";

 webView.loadUrl(url, extraHeaders);

它适用于纯粹的URL,但我不知道如何通过这些参数,而在web视图注射的iFrame。



Answer 6:

添加球员瓦尔在初始化YouTube的SDK:

NSDictionary *playerVars = @{
                             @"origin" : @"http://www.youtube.com",
                             };
[self.playerView loadWithVideoId:@"videoid" playerVars:playerVars];

请享用!



Answer 7:

尝试这样的,而不是

<iframe width="300" height="200" src="www.youtube.com/embed/<video-id>?enablejsapi=1" frameborder="0" allowfullscreen></iframe>


文章来源: YouTube embed gives “restricted from playback on certain sites” error despite API metadata indicating otherwise