【问题标题】:Vimeo thumbnail from private video来自私人视频的 Vimeo 缩略图
【发布时间】:2018-01-07 17:36:56
【问题描述】:

我已经阅读了 API 文档,但我迷路了。

我只想从私人视频中获取缩略图。

我不是在构建应用程序,但要获得所需的密钥,我必须包含应用程序的站点、徽标和应用程序的返回 url。

我只需要一个缩略图。

我对 API 并不陌生,但我确实需要一些示例 php 代码来帮助我入门,以及如何设置应用程序来获取我需要的密钥。

据我所知,我应该使用 oembed,这看起来很简单,但我需要身份验证方面的帮助。

【问题讨论】:

    标签: php thumbnails vimeo vimeo-api


    【解决方案1】:

    创建一个App

    首先,您需要在您的帐户下的 Vimeo 开发者网站上创建一个应用程序。不要太担心应用程序的站点、徽标和应用程序的返回 url。

    您可以简单地输入 localhost 作为网站 url 和返回 url,然后您可以上传自己的图片作为徽标(注意图片不是必需的)。

    不过,我建议您填写“描述”以最符合您的要求。

    这三个要求仅适用于特定的身份验证,对于您想要做的事情不是必需的。

    请确保您对以下问题回答 NO

    您会向用户收取使用您的应用的费用吗? 您的集成是否受广告支持?

    并对问题回答“Web 服务器”:

    什么平台将运行这个应用程序?

    他们可能会询问您的应用是否需要上传访问权限。请务必回答 NO,因为请求 UPLOAD 访问权限的应用程序会经过审核。

    创建令牌

    进入您应用的“身份验证”标签。

    基本上,我们将跳过使用回调 url 的身份验证,直接创建具有以下范围的令牌:

    公共、私人 别费心复制我的令牌,我已经删除了。

    创建令牌后,请确保将其复制并将其存储在服务器端某处。刷新页面后,您将无法再次获取令牌。请注意,您只使用 PUBLIC 和 PRIVATE 范围。由于您只是请求信息,这就足够了。

    此外,您需要在应用的身份验证选项卡下提供的客户端标识符客户端密码

    使用Official Vimeo PHP LIbrary

    使用客户端 ID、客户端密码和令牌的基本身份验证。

    //Where $client_id and $client_secrets are variables with your vimeo client id 
    //and secrets that you copied from the app you created on Vimeo.
    $vimeoLib = new \Vimeo\Vimeo($client_id, $client_secrets);
    
    //Where $token is the variable containing the token you generated earlier
    $vimeoLib->setToken($token);
    

    获取所有缩略图

    Vimeo 将生成多个缩略图(大小不同)。如果您不知道视频的缩略图 ID 是什么,那么我们必须先检查所有视频数据。

    我们将首先了解如何从单个视频返回的所有数据中获取缩略图。

    为此,我们将使用此 API:

    GET https://api.vimeo.com/videos/{video_id}
    

    返回以下内容:

    +------------------+--------------------------------------------------+
    | Http Status Code | Explanation                                      |
    +------------------+--------------------------------------------------+
    | 200 Ok           |                                                  |
    +------------------+--------------------------------------------------+
    | 404 not found    | If the video cannot be found.                    |
    +------------------+--------------------------------------------------+
    

    只要确保你知道你的 vimeo id 是什么。

    //Where $vimeo_id is a variable containing your video's vimeo Id
    $response = $vimeoLib->request("/me/videos/".$vimeo_id);
    

    带有缩略图的响应将如下所示:

    {
        //I've replaced information regarding my videos with {SOME_DESCRIPTIVE_TEXT}
        //More info here
        "pictures": {
                "uri": "/videos/{VIMEO_ID_HERE}/pictures/{THUMBNAIL_ID_HERE}",
                "active": true,
                "type": "custom",
                "sizes": [
                    {
                        "width": 100,
                        "height": 75,
                        "link": "https://i.vimeocdn.com/video/{THUMBNAIL_ID_HERE}_100x75.jpg?r=pad",
                        "link_with_play_button": "https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F{THUMBNAIL_ID_HERE}_100x75.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"
                    },
                    {
                        "width": 200,
                        "height": 150,
                        "link": "https://i.vimeocdn.com/video/{THUMBNAIL_ID_HERE}_200x150.jpg?r=pad",
                        "link_with_play_button": "https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F{THUMBNAIL_ID_HERE}_200x150.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"
                    },
                    {
                        "width": 295,
                        "height": 166,
                        "link": "https://i.vimeocdn.com/video/{THUMBNAIL_ID_HERE}_295x166.jpg?r=pad",
                        "link_with_play_button": "https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F{THUMBNAIL_ID_HERE}_295x166.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"
                    },
                    {
                        "width": 640,
                        "height": 360,
                        "link": "https://i.vimeocdn.com/video/{THUMBNAIL_ID_HERE}_640x360.jpg?r=pad",
                        "link_with_play_button": "https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F{THUMBNAIL_ID_HERE}_640x360.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"
                    },
                    {
                        "width": 960,
                        "height": 540,
                        "link": "https://i.vimeocdn.com/video/{THUMBNAIL_ID_HERE}_960x540.jpg?r=pad",
                        "link_with_play_button": "https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F{THUMBNAIL_ID_HERE}_960x540.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"
                    },
                    {
                        "width": 1920,
                        "height": 1080,
                        "link": "https://i.vimeocdn.com/video/{THUMBNAIL_ID_HERE}_1920x1080.jpg?r=pad",
                        "link_with_play_button": "https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F{THUMBNAIL_ID_HERE}_1920x1080.jpg&src1=http%3A%2F%2Ff.vimeocdn.com%2Fp%2Fimages%2Fcrawler_play.png"
                    }
                ],
                "resource_key": "{RESOURCE_KEY}"
            }
            //More info here
      }
    

    要检索您要查找的信息,您需要执行以下操作:

    //Check to see if the request didn't fail
    if($response["status"] === 200){
    
      //Get the pictures object
      $thumbnailsObject = $response["body"]["data"]["pictures"];
    
      //Get the URI, so next time you can directly request the thumbnails instead of going through the whole video data
      $thumbnailUri = $thumbnailsObject["uri"];
    
      //Array of thumbnail links that'll be populated after loop.
      $thumbnails = [];
      //thumbnail without S
      foreach($thumbnailsObject["sizes"] as $thumbnailObject){
        $thumbnails[] = $thumbnailObject["link"];
      }
    
      //Done, do something with $thumbnails
    }
    

    仅请求缩略图:

    获得 URI 后,您可以在以后的请求中调用缩略图,如下所示:

    GET https://api.vimeo.com/videos/{video_id}/pictures/{picture_id}
    
    $response = $vimeoLib->request("/me/videos/".$vimeo_id."/pictures/".$picture_id);
    

    或使用之前的 $thumbnailUri 变量。

    $response = $vimeoLib->request("/me".$thumbnailUri);
    

    【讨论】:

      【解决方案2】:

      我的私人视频缩略图也有同样的问题。为了获得私人视频缩略图,我下载了 Vimeo SDK 并使用了此功能。

      public function get_video_thumbnail_by_id($video_id, $thumbType = 'medium')
      {
          try {
              if (empty($video_id)) {
                  throw new Exception("Invalid video ID");
              }
      
              $response = $this->client->request("/me/videos/$video_id");
      
              if ($response["status"] === 200) {
                  $response_pictures = $response["body"]["pictures"]['sizes'];
      
                  switch ($thumbType) {
                      case 'small':
                          $result = $response_pictures[2]['link'];
                          break;
                      case 'medium':
                          $result = $response_pictures[3]['link'];
                          break;
                      case 'large':
                          $result = $response_pictures[4]['link'];
                          break;
                      default:
                          $result = $response_pictures[3]['link'];
                          break;
                  }
              } else {
                  $result = null;
              }
      
              return $result;
          } catch (VimeoUploadException $ex) {
              return null;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2015-03-18
        • 2019-08-31
        • 1970-01-01
        • 1970-01-01
        • 2021-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-31
        相关资源
        最近更新 更多