我想使用SoundManager2音频播放器重现网站上嵌入的所有youtube文件。如何从视频ID访问Youtube文件URL?
注意:Soundcloud提供从歌曲URL获取直接流媒体URL的可能性。这是带有Soundmanager2和Angular的working example。现在我想为Youtube做同样的事情。
答案 0 :(得分:2)
一种有点hacky的方式 - 您可以使用Youtube的OEmbed API,但是您需要提供一个URL,因此您需要将ID添加到最后。 https://www.youtube.com/oembed?url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DiwGFalTRHDA
这将始终返回一个嵌入式iframe,您可以将URL重新出现。
var regex = /<iframe.*?src='(.*?)'/;
var src = regex.exec(str)[1];
答案 1 :(得分:1)
您的标题说使用API。无法通过视频ID访问YouTube文件网址。通过文件URL,您也可以下载它,分发内容等,而不是YouTube Terms。所以没有这样的API。
由于您使用Javascript进行了标记,因此可以直接访问文件网址。这可能不是您想要的,但它可以在任何浏览器中提供的开发人员工具控制台中完美运行。有关详细信息Here you go
const videoUrls = ytplayer.config.args.url_encoded_fmt_stream_map
.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 + ':' + curr.type.split(';')[0]]: curr
}), {});
console.log(videoUrls);