【问题标题】:How to identify the YouTube videos that can't embed on file如何识别无法嵌入文件的 YouTube 视频
【发布时间】:2022-11-07 02:36:38
【问题描述】:

我有一个在 web 视图中嵌入一些 youtube 视频的移动应用程序。

问题是,使用 YouTube Data API v3 我得到了一个“可嵌入“要显示的项目。但其中一些说“视频不可用”。当我将相同的代码粘贴到 jsfiddle 或域或某种网络服务器, 它确实有效但是当从文件或通过导航到 html 字符串网页浏览, 它不工作.

我的问题是,我怎么能理解我正在尝试的视频嵌入实际上是可嵌入的文件或不?

我检查了每个视频的 youtube 数据 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


    【解决方案1】:

    YouTube 数据 API v3 provides a not working embed page while it says that it is

    而对于像这样的其他视频 (ZqYezph-hgg) it works

    所以我的想法只是检索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,因此该视频可播放。

    【讨论】:

    • 基本上,此方法向嵌入端点发送请求并检查其内容中的单词“UNPLAYABLE”。它可以很容易地用任何编程语言实现
    • 我还添加了一个“Accept-Language=en”标题以确保我总是得到英文的结果
    • Accept-Language=en 不是必需的,因为 UNPLAYABLE 在 YouTube JSON 答案中作为 status 的值写入,因此未向最终用户显示,因此未翻译。
    【解决方案2】:

    我发现这个entry on Google Support可能解释为什么视频不可用。

    引用:

    实际上在这里发现了问题。显示此内容的视频 embed 在后台播放“受版权保护”的音乐。 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被退回。

    不幸的是,此信息未提供有关视频不可用原因的任何有用数据 - 尽管response of the YouTube Data API says is is embeddable

    "status": {
        "uploadStatus": "processed",
        "privacyStatus": "public",
        "license": "youtube",
        "embeddable": true,
        "publicStatsViewable": true,
        "madeForKids": false
      },
    

    您也可以使用 this alternative 嵌入 YouTube 视频 - 我在这里分享它,因为我觉得它很有趣。

    【讨论】:

      【解决方案3】:

      确保在所有请求的标头中设置了引荐来源网址和引荐来源网址策略。

      【讨论】:

        猜你喜欢
        • 2019-01-04
        • 2014-08-06
        • 2016-04-20
        • 2017-08-16
        • 1970-01-01
        • 2016-11-27
        • 2011-09-06
        • 2014-01-16
        • 1970-01-01
        相关资源
        最近更新 更多