【问题标题】:How can I get direct video url from YouTube video URL?如何从 YouTube 视频网址获取直接视频网址?
【发布时间】:2023-04-03 01:57:01
【问题描述】:

我将使用 React-Native 播放 YouTube 和 Vimeo 视频。 现在我实现了React-Native-Video,它不支持播放 YouTube 或 Vimeo 网址,但可以播放直接视频网址。 所以我只想从 YouTube 视频 URL 中直接引用文件(或流?)。 例如来自

https://www.youtube.com/watch?v=PCwL3-hkKrg

有没有好的第三方服务或网站可以解决这个问题? 尽管我目前正在使用 React-Native 播放 YouTube 视频,但无论您将使用什么类型的代码或方式。

【问题讨论】:

  • “直接视频网址”是什么意思?
  • 请提供Minimal, Complete, and Verifiable您的尝试示例,以便我们尝试解决您的问题并解释您自己的尝试失败的原因 - 这样您就可以学到对您未来发展有用的东西,以及得到这个单一问题的答案。
  • 我们可以下载的网址。

标签: javascript android ios youtube react-native


【解决方案1】:

您可以通过此代码获取YouTube的视频网址:

    // ES6 version
const videoUrls = ytplayer.config.args.adaptive_fmts
  .split(',')
  .map(item => item
    .split('&')
    .reduce((prev, curr) => (curr = curr.split('='),
      Object.assign(prev, {[curr[0]]: decodeURIComponent(curr[1])})
    ), {})
  )
  .reduce((prev, curr) => Object.assign(prev, {
    [curr.quality_label || curr.type]: curr
  }), {});

console.log(videoUrls);

// ES5 version
var videoUrls = ytplayer.config.args.adaptive_fmts
  .split(',')
  .map(function (item) {
    return item
      .split('&')
      .reduce(function (prev, curr) {
        curr = curr.split('=');
        return Object.assign(prev, {[curr[0]]: decodeURIComponent(curr[1])})
      }, {});
  })
  .reduce(function (prev, curr) {
    return Object.assign(prev, {
      [curr.quality_label || curr.type]: curr
    });
  }, {});

console.log(videoUrls);

【讨论】:

  • 输出的链接不起作用。获取拒绝访问错误。
【解决方案2】:

最后,我能够从KeepVid 网站获取 youtube 视频文件参考网址。

因为我认为该网站不支持restful api,所以我获取了它的html内容并解析以获取下载url。 我没有在这里写代码,因为它很简单。 如果对你有帮助,我会很高兴。

【讨论】:

    【解决方案3】:

    我能理解你想要什么 - 从 Youtube 或 Vimeo 的 URL 下载或播放视频[流]。

    唯一可能的方法是使用 WebView,因为无法获取 Vimeo 或 YouTube 的相关文件(不是“直接 url”)的链接来播放(也许可以下载)。

    如果您必须编写自定义控件,例如用你自己的 SeekBar 或者按钮,...然后你可以通过结合 WebView 控件来实现它,对吧? 我不认为这会很麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-16
      • 2017-10-09
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 2016-12-30
      相关资源
      最近更新 更多