【问题标题】: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 视频,但无论您将使用什么类型的代码或方式。
【问题讨论】:
标签:
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 控件来实现它,对吧?
我不认为这会很麻烦。