Get direct Vimeo video url Android

后端 未结 5 1932
梦毁少年i
梦毁少年i 2020-12-14 05:11

I need to play Vimeo viodes in my app having only video id. For example 83342420. How can I get vimeo video url? Or is there any other way to play video in android?

相关标签:
5条回答
  • 2020-12-14 05:36

    Vimeo does not offer support for any videos play urls. Vimeo only offers 2 methods for playing videos on mobile.

    1. Embeddable videos work in many Android web views.
    2. PRO members have access to direct video file links (including HLS) and can use these in their own mobile apps.
    0 讨论(0)
  • 2020-12-14 05:37

    Ok. For getting direct url for Vimeo video just need to send GET Request to url:

    old url - http://player.vimeo.com/v2/video/<video_id>/config
    **UPD**: new url - http://player.vimeo.com/video/<video_id>/config
    

    In result you will get such response:

    {
      "cdn_url": "http://f.vimeocdn.com",
      "view": 1,
      "request": {
        "files": {
          "h264": {
            "mobile": {
              "profile": 116,
              "origin": "ns3.pdl",
              "url": "http://pdl.vimeocdn.com/84730/904/216566897.mp4?token2=1397407519_8b323701fa08b3531612d6160be9cc5e&aksessionid=01788ff54890a9b2",
              "height": 270,
              "width": 480,
              "id": 216566897,
              "bitrate": 547,
              "availability": 60
            },
            "hd": {
              "profile": 113,
              "origin": "ns3.pdl",
              "url": "http://pdl.vimeocdn.com/87179/143/216566895.mp4?token2=1397407519_1d0ef28841fb628c423f9dbeb93168d4&aksessionid=2a0b480300c82ef7",
              "height": 720,
              "width": 1280,
              "id": 216566895,
              "bitrate": 3142,
              "availability": 60
            },
            "sd": {
              "profile": 112,
              "origin": "ns3.pdl",
              "url": "http://pdl.vimeocdn.com/57248/568/216566886.mp4?token2=1397407519_395f6cf4e80b98826424e21c8de508d1&aksessionid=598e59776ed0979a",
              "height": 360,
              "width": 640,
              "id": 216566886,
              "bitrate": 1198,
              "availability": 60
            }
          },
          "hls": {
            "all": "http://av20.hls.vimeocdn.com/i/,57248/568/216566886,87179/143/216566895,84730/904/216566897,.mp4.csmil/master.m3u8?primaryToken=1397407519_93cf5d54b3482e3a1e716cf28b9550a7",
            "hd": "http://av20.hls.vimeocdn.com/i/,87179/143/216566895,.mp4.csmil/master.m3u8?primaryToken=1397407519_a84194ace821175f0ee0ff9ab8d9241f"
          },
          "codecs": [
            "h264"
          ]
        },
        "ga_account": "UA-76641-35",
        "timestamp": 1397406594,
        "expires": 925,
        "prefix": "/v2",
        "session": "d85291b3aa5b3e5fbf3ea82d81d7d5e849aa50e5",
        "cookie": {
          "scaling": 1,
          "volume": 1.0,
          "hd": null,
          "captions": null
        },
        "cookie_domain": ".vimeo.com",
        "referrer": null,
        "conviva_account": "c3.Vimeo",
        "flags": {
          "login": 1,
          "preload_video": 1,
          "plays": 1,
          "partials": 1,
          "conviva": 1
        },
        "build": {
          "player": "a30ff35f",
          "js": "2.4.7"
        },
        "urls": {
          "zeroclip_swf": "http://f.vimeocdn.com/p/external/zeroclipboard/ZeroClipboard.swf",
          "js": "http://f.vimeocdn.com/p/2.4.7/js/player.js",
          "proxy": "https://f.vimeocdn.com/p/2.4.7/proxy.html",
          "conviva": "http://livepassdl.conviva.com/ver/2.72.0.13589/LivePass.js",
          "flideo": "http://f.vimeocdn.com/p/flash/flideo/1.0.3b10/flideo.swf",
          "canvas_js": "http://f.vimeocdn.com/p/2.4.7/js/player.canvas.js",
          "moog": "http://f.vimeocdn.com/p/flash/moogaloop/6.0.9/moogaloop.swf?clip_id=83342420",
          "conviva_service": "http://livepass.conviva.com",
          "moog_js": "http://f.vimeocdn.com/p/2.4.7/js/moogaloop.js",
          "zeroclip_js": "http://f.vimeocdn.com/p/external/zeroclipboard/ZeroClipboard-patch.js",
          "css": "http://f.vimeocdn.com/p/2.4.7/css/player.css"
        },
        "signature": "09c6bc41e6a7d343748ed3e00420a108"
      },
      "player_url": "player.vimeo.com",
      "video": {
        "allow_hd": 1,
        "height": 720,
        "owner": {
          "account_type": "pro",
          "name": "Sabian",
          "img": "http://i.vimeocdn.com/portrait/2511583_75x75.jpg",
          "url": "http://vimeo.com/sabian",
          "img_2x": "http://i.vimeocdn.com/portrait/2511583_150x150.jpg",
          "id": 8487062
        },
        "thumbs": {
          "1280": "http://i.vimeocdn.com/video/459788805_1280.jpg",
          "960": "http://i.vimeocdn.com/video/459788805_960.jpg",
          "640": "http://i.vimeocdn.com/video/459788805_640.jpg"
        },
        "duration": 25,
        "id": 83342420,
        "hd": 1,
        "embed_code": "<iframe src=\"//player.vimeo.com/video/83342420\" width=\"500\" height=\"281\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>",
        "default_to_hd": 0,
        "title": "Mike Portnoy",
        "url": "https://vimeo.com/83342420",
        "privacy": "anybody",
        "share_url": "http://vimeo.com/83342420",
        "width": 1280,
        "embed_permission": "public",
        "fps": 24.0
      },
      "build": {
        "player": "a30ff35f",
        "rpc": "dev"
      },
      "embed": {
        "player_id": null,
        "outro": "videos",
        "api": 2,
        "context": "embed.main",
        "time": 0,
        "color": "00adef",
        "settings": {
          "fullscreen": 1,
          "byline_badge": {
            "url": "http://vimeo.com/sabian",
            "type": "pro"
          },
          "byline": 1,
          "like": 1,
          "playbar": 1,
          "title": 1,
          "color": 0,
          "branding": 1,
          "share": 1,
          "scaling": 1,
          "logo": 1,
          "info_on_pause": 0,
          "watch_later": 1,
          "portrait": 1,
          "embed": 1,
          "badge": 0,
          "volume": 1
        },
        "on_site": 0,
        "loop": 0,
        "autoplay": 0
      },
      "vimeo_url": "vimeo.com",
      "user": {
        "liked": 0,
        "account_type": "basic",
        "logged_in": 1,
        "owner": 0,
        "watch_later": 0,
        "id": 26896968,
        "mod": false
      }
    }
    
    0 讨论(0)
  • 2020-12-14 05:44

    To Play Vimeo Video from the iframe url, use that code. It's working fine.

    1. Use layout with Web view and frame Layout
    2. Create a custom WebViewClient for Both ChromeClient and WebViewClient and Play video either using Loadurl or LoadBaseUrl .

      {
      
      enter code here
      
          webView = (WebView) findViewById(R.id.web_details);
          mWebViewClient = new myWebViewClient();
          webView.setWebViewClient(mWebViewClient);
          mWebChromeClient = new myWebChromeClient();
          webView.setWebChromeClient(mWebChromeClient);     
          WebSetting settings = webView.getSetting();
          settings.setJavaScriptEnabled(true);
          settings.setDomStorageEnabled(true);
          settings.setMinimumFontSize(10);
          settings.setLoadWithOverviewMode(true);
          settings.setUseWideViewPort(true);
          settings.setBuiltInZoomControls(true);
          settings.setDisplayZoomControls(false);
          webView.setVerticalScrollBarEnabled(false);
          vUrl = changedHeaderHtml(getIntent().getStringExtra("videoUrl"));
          webView.loadDataWithBaseURL(null, vUrl, "text/html", "UTF-8", null);
      }
      public static String changedHeaderHtml(String strUrl) {
          return "<head><meta name=\"viewport\" content=\"width=device-width, user-scalable=yes\" /></head>" + strUrl + "</body></html>";
      }
      public boolean inCustomView() {
          return (mCustomView != null);
      }
      
      public void hideCustomView() {
          mWebChromeClient.onHideCustomView();
      }
      
      @Override
      protected void onPause() {
          super.onPause();    //To change body of overridden methods use File | Settings | File Templates.
          webView.onPause();
      }
      
      @Override
      protected void onResume() {
          super.onResume();    //To change body of overridden methods use File | Settings | File Templates.
          webView.onResume();
      }
      
      @Override
      protected void onStop() {
          super.onStop();    //To change body of overridden methods use File | Settings | File Templates.
          if (inCustomView()) {
              hideCustomView();
          }
      }
      
      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) {
          if (keyCode == KeyEvent.KEYCODE_BACK) {
      
              if (inCustomView()) {
                  hideCustomView();
                  return true;
              }
      
              if ((mCustomView == null) && webView.canGoBack()) {
                  webView.goBack();
                  return true;
              }
          }
          return super.onKeyDown(keyCode, event);
       }
      
      class myWebChromeClient extends WebChromeClient {
          private Bitmap mDefaultVideoPoster;
          private View mVideoProgressView;
      
          @Override
       public void onShowCustomView(View view, int requestedOrientation,CustomViewCallback callback) {
              onShowCustomView(view, callback); //To change body of overridden methods use File | Settings | File Templates.
          }
      
          @Override
          public void onShowCustomView(View view,CustomViewCallback callback) {
      
          // if a view already exists then immediately terminate the new one
              if (mCustomView != null) {
                  callback.onCustomViewHidden();
                  return;
              }
              mCustomView = view;
              webView.setVisibility(View.GONE);
              customViewContainer.setVisibility(View.VISIBLE);
              customViewContainer.addView(view);
              customViewCallback = callback;
          }
      
          @Override
          public View getVideoLoadingProgressView() {
      
              if (mVideoProgressView == null) {
                  LayoutInflater inflater = LayoutInflater.from(WebMainActivity.this);
                  mVideoProgressView = inflater.inflate(R.layout.video_progress, null);
              }
              return mVideoProgressView;
          }
      
          @Override
          public void onHideCustomView() {
              super.onHideCustomView();    //To change body of overridden methods use File | Settings | File Templates.
              if (mCustomView == null)
                  return;
      
              webView.setVisibility(View.VISIBLE);
              customViewContainer.setVisibility(View.GONE);
      
              // Hide the custom view.
              mCustomView.setVisibility(View.GONE);
      
              // Remove the custom view from its container.
              customViewContainer.removeView(mCustomView);
              customViewCallback.onCustomViewHidden();
      
              mCustomView = null;
          }
      }
      
      class myWebViewClient extends WebViewClient {
          @Override
          public boolean shouldOverrideUrlLoading(WebView view, String url) {
              url =vUrl;
      
              return super.shouldOverrideUrlLoading(view, url);  
          }
      }
      
      }
      
    0 讨论(0)
  • 2020-12-14 06:00

    Going off of what Andrew F had commented, I wrote this simple Javascript to handle this process:

    function loadVimeoVideo(id) {
        'use strict';
        var req, json, url;
        if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
            req = new XMLHttpRequest();
        } else { // code for IE6, IE5
            req = new ActiveXObject("Microsoft.XMLHTTP");
        }
        req.onreadystatechange = function () {
            if (req.readyState === 4 && req.status === 200) {
                json = JSON.parse(req.responseText);
                url = json.request.files.h264.sd.url;
                document.getElementById(id).getElementsByTagName("source")[0].setAttribute("src",url);
            }
        };
        req.open("GET", ("https://player.vimeo.com/video/").concat(id, "/config"), true);
        req.send();
    }
    

    The setup in Html looks like this:

    <video id="YOURVIMEOIDHERE" controls loop muted preload="auto" autoplay="false" onloadeddata="loadVimeoVideo('YOURVIMEOIDHERE')">
        <source src="" type="video/mp4" />
        Your browser does not support the video tag, which was introduced in html5.
    </video>
    

    Edit: I'm just going to say it, remember to replace YOURVIMEOIDHERE with your Vimeo video's id.

    0 讨论(0)
  • 2020-12-14 06:01

    use this url - http://player.vimeo.com/video/video_id/config with GET method, and pass your video_id, you will get the below result. this is latest response is coming from Vimeo, because the change response.

    {
      "cdn_url": "https://f.vimeocdn.com",
      "vimeo_api_url": "api.vimeo.com",
      "request": {
        "files": {
          "dash": {
            "separate_av": true,
            "streams": [
              {
                "profile": 164,
                "quality": "360p",
                "id": 1047687609,
                "fps": 30
              },
              {
                "profile": 175,
                "quality": "1080p",
                "id": 1047687611,
                "fps": 30
              },
              {
                "profile": 165,
                "quality": "540p",
                "id": 1047687607,
                "fps": 30
              },
              {
                "profile": 174,
                "quality": "720p",
                "id": 1047687604,
                "fps": 30
              }
            ],
            "cdns": {
              "akfire_interconnect_quic": {
                "url": "https://112skyfiregce-vimeo.akamaized.net/exp=1531572843~acl=%2F279620511%2F%2A~hmac=fc67765d21d06ae32cd69b0fa7a9f229ba5c492a6ea14d14cfee32fce9afb1a2/279620511/sep/video/1047687609,1047687611,1047687607,1047687604/master.json?base64_init=1",
                "origin": "gcs"
              },
              "fastly_skyfire": {
                "url": "https://skyfire.vimeocdn.com/1531572843-0xb2b233940673f62145704b412d1469ea2f179a4c/279620511/sep/video/1047687609,1047687611,1047687607,1047687604/master.json?base64_init=1",
                "origin": "gcs"
              }
            },
            "default_cdn": "akfire_interconnect_quic"
          },
          "hls": {
            "separate_av": false,
            "default_cdn": "akfire_interconnect_quic",
            "cdns": {
              "akfire_interconnect_quic": {
                "url": "https://112skyfiregce-vimeo.akamaized.net/exp=1531572843~acl=%2F279620511%2F%2A~hmac=fc67765d21d06ae32cd69b0fa7a9f229ba5c492a6ea14d14cfee32fce9afb1a2/279620511/video/1047687609,1047687611,1047687607,1047687604/master.m3u8",
                "origin": "gcs"
              },
              "fastly_skyfire": {
                "url": "https://skyfire.vimeocdn.com/1531572843-0xb2b233940673f62145704b412d1469ea2f179a4c/279620511/video/1047687609,1047687611,1047687607,1047687604/master.m3u8",
                "origin": "gcs"
              }
            }
          },
          "progressive": [
            {
              "profile": 175,
              "width": 1920,
              "mime": "video/mp4",
              "fps": 30,
              "url": "https://gcs-vimeo.akamaized.net/exp=1531572843~acl=%2A%2F1047687611.mp4%2A~hmac=90eacf4c4956f322393ac1b5e4d0df91694c5e5af36eabccd2a28780e4364148/vimeo-prod-skyfire-std-us/01/924/11/279620511/1047687611.mp4",
              "cdn": "akamai_interconnect",
              "quality": "1080p",
              "id": 1047687611,
              "origin": "gcs",
              "height": 1080
            },
            {
              "profile": 164,
              "width": 640,
              "mime": "video/mp4",
              "fps": 30,
              "url": "https://gcs-vimeo.akamaized.net/exp=1531572843~acl=%2A%2F1047687609.mp4%2A~hmac=4c90608f99044633906efb33f04e314569cd865266529b96977ee7eeecce4f80/vimeo-prod-skyfire-std-us/01/924/11/279620511/1047687609.mp4",
              "cdn": "akamai_interconnect",
              "quality": "360p",
              "id": 1047687609,
              "origin": "gcs",
              "height": 360
            },
            {
              "profile": 165,
              "width": 960,
              "mime": "video/mp4",
              "fps": 30,
              "url": "https://gcs-vimeo.akamaized.net/exp=1531572843~acl=%2A%2F1047687607.mp4%2A~hmac=a0f28428ec2da33b5501936f32a3bc17aee0446dfbb5f0597c5b51f743cebc65/vimeo-prod-skyfire-std-us/01/924/11/279620511/1047687607.mp4",
              "cdn": "akamai_interconnect",
              "quality": "540p",
              "id": 1047687607,
              "origin": "gcs",
              "height": 540
            },
            {
              "profile": 174,
              "width": 1280,
              "mime": "video/mp4",
              "fps": 30,
              "url": "https://gcs-vimeo.akamaized.net/exp=1531572843~acl=%2A%2F1047687604.mp4%2A~hmac=6a3da45344051eb54196967bebebbd34841f09c049ca377b7f664786f24dfb95/vimeo-prod-skyfire-std-us/01/924/11/279620511/1047687604.mp4",
              "cdn": "akamai_interconnect",
              "quality": "720p",
              "id": 1047687604,
              "origin": "gcs",
              "height": 720
            }
          ]
        },
        "lang": "en",
        "sentry": {
          "url": "https://9e9ab33f1870463393a4a1e85a1280c2@sentry.cloud.vimeo.com/2",
          "enabled": false,
          "debug_enabled": true,
          "debug_intent": 0
        },
        "ab_tests": {},
        "referrer": null,
        "cookie_domain": ".vimeo.com",
        "timestamp": 1531568943,
        "gc_debug": {
          "bucket": "vimeo-player-debug"
        },
        "expires": 3600,
        "currency": "USD",
        "session": "d2a0f4ba2c4a97b7e59e349e54ee5e4d212a78b01531568943",
        "cookie": {
          "scaling": 1,
          "volume": 1,
          "quality": null,
          "hd": 0,
          "captions": null
        },
        "build": {
          "player": "",
          "js": "2.75.6"
        },
        "urls": {
          "zeroclip_swf": "https://f.vimeocdn.com/p/external/zeroclipboard/ZeroClipboard.swf",
          "fresnel": "https://fresnel.vimeocdn.com/add/player-stats",
          "js": "https://f.vimeocdn.com/p/2.75.6/js/player.js",
          "proxy": "https://player.vimeo.com/static/proxy.html",
          "chromeless_css": "https://f.vimeocdn.com/p/2.75.6/css/chromeless.css",
          "flideo": "https://f.vimeocdn.com/p/flash/flideo/1.0.6/flideo.swf",
          "moog": "https://f.vimeocdn.com/p/flash/moogaloop/6.4.5/moogaloop.swf?clip_id=279620511",
          "three_js": "https://f.vimeocdn.com/p/external/three.rvimeo.min.js",
          "mux_url": "https://f.vimeocdn.com/p/external/mux.js",
          "vuid_js": "https://f.vimeocdn.com/js_opt/modules/utils/vuid.min.js",
          "chromeless_js": "https://f.vimeocdn.com/p/2.75.6/js/chromeless.js",
          "moog_js": "https://f.vimeocdn.com/p/2.75.6/js/moogaloop.js",
          "zeroclip_js": "https://f.vimeocdn.com/p/external/zeroclipboard/ZeroClipboard-patch.js",
          "css": "https://f.vimeocdn.com/p/2.75.6/css/player.css"
        },
        "signature": "8544b7e2ca11afdca19cef76f57fed72",
        "flags": {
          "dnt": 0,
          "preload_video": "metadata_on_hover",
          "plays": 1,
          "webp": 0,
          "flash_hls": 1,
          "log_to_es": 0,
          "partials": 1,
          "autohide_controls": 0
        },
        "country": "IN"
      },
      "player_url": "player.vimeo.com",
      "video": {
        "version": {
          "current": null,
          "available": [
            {
              "is_current": 1,
              "id": 20743507,
              "file_id": 1047687416
            }
          ]
        },
        "height": 1080,
        "duration": 543,
        "thumbs": {
          "640": "https://i.vimeocdn.com/video/712935666_640.jpg",
          "960": "https://i.vimeocdn.com/video/712935666_960.jpg",
          "1280": "https://i.vimeocdn.com/video/712935666_1280.jpg",
          "base": "https://i.vimeocdn.com/video/712935666"
        },
        "owner": {
          "account_type": "pro",
          "name": "You Are a CEO",
          "img": "https://i.vimeocdn.com/portrait/26028985_60x60.jpg",
          "url": "https://vimeo.com/user19222589",
          "img_2x": "https://i.vimeocdn.com/portrait/26028985_120x120.jpg",
          "id": 19222589
        },
        "file_codecs": {
          "hevc": {
            "hdr": [],
            "sdr": []
          },
          "avc": [
            1047687611,
            1047687609,
            1047687607,
            1047687604
          ]
        },
        "id": 279620511,
        "embed_code": "<iframe src=\"https://player.vimeo.com/video/279620511\" width=\"640\" height=\"360\" frameborder=\"0\" allowfullscreen></iframe>",
        "title": "DRAFT- MINTSHOW TO UPLIFT",
        "share_url": "https://vimeo.com/279620511",
        "width": 1920,
        "embed_permission": "public",
        "fps": 30,
        "spatial": 0,
        "live_event": null,
        "allow_hd": 1,
        "hd": 1,
        "lang": null,
        "default_to_hd": 0,
        "url": null,
        "privacy": "unlisted",
        "unlisted_hash": "1795b097a5"
      },
      "user": {
        "vimeo_api_interaction_tokens": null,
        "liked": 0,
        "account_type": "none",
        "vimeo_api_client_token": null,
        "progress": 0,
        "owner": 0,
        "watch_later": 0,
        "logged_in": 0,
        "id": 0,
        "mod": 0
      },
      "embed": {
        "autopause": 1,
        "playsinline": 1,
        "settings": {
          "fullscreen": 1,
          "byline": 1,
          "like": 1,
          "playbar": 1,
          "title": 1,
          "color": 0,
          "branding": 1,
          "watch_later": 1,
          "share": 0,
          "scaling": 1,
          "spatial_compass": 1,
          "collections": 0,
          "info_on_pause": 0,
          "portrait": 1,
          "logo": 1,
          "embed": 1,
          "badge": 0,
          "spatial_label": 1,
          "speed": 0,
          "volume": 1
        },
        "color": "00adef",
        "on_site": 0,
        "app_id": "",
        "muted": 0,
        "dnt": 0,
        "player_id": "",
        "api": 3,
        "editor": false,
        "context": "embed.main",
        "time": 0,
        "outro": "videos",
        "log_plays": 1,
        "quality": null,
        "transparent": 1,
        "loop": 0,
        "autoplay": 0
      },
      "view": 1,
      "vimeo_url": "vimeo.com"
    }
    
    0 讨论(0)
提交回复
热议问题