如何识别无法嵌入文件的YouTube视频

问题描述 投票:0回答:3

我有一个移动应用程序,可以在网络视图中嵌入一些 YouTube 视频。

问题是,使用 YouTube Data API v3,我得到了要显示的“Embeddable”项目列表。但有些人说“视频不可用”。当我将相同的代码粘贴到 jsfiddle 或域或某种 webserver 上时,它确实有效,但是当从 File 读取或通过 webview 导航到 html 字符串时,它不起作用

我的问题是,我如何理解我尝试嵌入的视频是否实际上是来自文件可嵌入

我检查了每个视频的 youtube data API v3 输出,但找不到任何有意义的信息。

是否有其他类型的 Web API 或 HTTP 端点可供我检查视频是否正确?

如果没有,我如何以编程方式从youtube播放器获取数据以查看它是否成功嵌入?

无法嵌入文件的 YouTube 视频示例列表如下:

https://www.youtube.com/watch?v=TjI3bzvbCU4
https://www.youtube.com/watch?v=QWveXdj6oZU
https://www.youtube.com/watch?v=KEEnap_h8cs

注意:我的问题是识别不可嵌入项目,因为我想从文件(在移动应用程序中)加载它们。因此,尝试从网络服务器加载它对我来说不是一个选择。

注 2:这些块不是区域性的,而是基于域的。

youtube embed youtube-data-api
3个回答
3
投票
YouTube 数据 API v3

提供 无法使用的嵌入页面 虽然它说是

对于像这个这样的其他视频(

ZqYezph-hgg

它有效

所以我的想法只是检索

https://www.youtube.com/embed/VIDEO_ID并查看视频是否无法播放,例如:

curl -s https://www.youtube.com/embed/TjI3bzvbCU4 | grep "UNPLAYABLE" | wc -l


返回

1

,所以该视频无法播放。

curl -s https://www.youtube.com/embed/ZqYezph-hgg | grep "UNPLAYABLE" | wc -l


返回

0

,所以该视频可以播放。

另请注意,我的

开源 YouTube 操作 API 更正确地实现了此功能,因为 https://yt.lemnoslife.com/videos?part=status&id=TjI3bzvbCU4 返回:

{ "kind": "youtube#videoListResponse", "etag": "NotImplemented", "items": [ { "kind": "youtube#video", "etag": "NotImplemented", "id": "TjI3bzvbCU4", "status": { "embeddable": true, ... } } ] }

https://yt.lemnoslife.com/videos?part=status&id=ZqYezph-hgg 返回:

{ "kind": "youtube#videoListResponse", "etag": "NotImplemented", "items": [ { "kind": "youtube#video", "etag": "NotImplemented", "id": "ZqYezph-hgg", "status": { "embeddable": true, ... } } ] }
    

1
投票
我在 Google 支持上找到了这个

条目,它可能解释了为什么视频不可用。

引用:

确实在这里发现了问题。

显示此内容的视频 嵌入在后台播放“受版权保护”的音乐。 YouTube 显然在嵌入时不会播放这样的视频。 我们有我们的 用户删除音频并重新上传视频,一切正常 现在工作正常。

希望这对某人有帮助。

YouTube 数据 API 可能不会更新以匹配视频上传者/所有者设置的值以及允许嵌入视频的 YouTube 指南。

对于这种情况,我建议您在

Issue Tracker上发布票证。

如果您输入视频的源代码 - 例如:

view-source:https://www.youtube.com/embed/TjI3bzvbCU4

,您可以找到一个名为 
previewPlayabilityStatus
 的属性,如下所示:

"previewPlayabilityStatus": { "status": "UNPLAYABLE", "reason": "Video no disponible", "errorScreen": { "playerErrorMessageRenderer": { "reason": { "runs": [{ "text": "Video no disponible" }] }, "proceedButton": { "buttonRenderer": { "style": "STYLE_DEFAULT", "size": "SIZE_DEFAULT", "isDisabled": false, "text": { "simpleText": "Mirar en YouTube" }, "navigationEndpoint": { "clickTrackingParams": "CAEQ8FsiEwiT6sGfg6j3AhVG25QJHY96Amgu003d"
此信息可通过此端点获得:

https://www.youtube.com/get_video_info?video_id=TjI3bzvbCU4

,但是现在,返回 HTTP ERROR 410

不幸的是,此信息没有提供任何有关视频不可用的原因的有用数据 - 尽管 YouTube 数据 API 的

响应表示它是可嵌入的 :

"status": { "uploadStatus": "processed", "privacyStatus": "public", "license": "youtube", "embeddable": true, "publicStatsViewable": true, "madeForKids": false },
您还可以使用

这个替代方案来嵌入 YouTube 视频 - 我在这里分享它是因为我发现它很有趣。


0
投票
确保您在所有请求的标头中设置了引荐来源网址和引荐来源网址政策。

© www.soinside.com 2019 - 2024. All rights reserved.