我有一个移动应用程序,可以在网络视图中嵌入一些 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:这些块不是区域性的,而是基于域的。
提供 无法使用的嵌入页面 虽然它说是。
对于像这个这样的其他视频(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,
...
}
}
]
}
条目,它可能解释了为什么视频不可用。
引用:
确实在这里发现了问题。YouTube 数据 API 可能不会更新以匹配视频上传者/所有者设置的值以及允许嵌入视频的 YouTube 指南。显示此内容的视频 嵌入在后台播放“受版权保护”的音乐。 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
},
您还可以使用