-2

我正在尝试使用 javascript 远程下载视频,但我遇到了一些问题。这是HTML:

<button onclick = "downloadRemote();">
Download youtube video
</button>

这是javascript:

function downloadRemote(){
var URL = this.window.URL || this.window.webkitURL;
var file = new Blob(
    ["https://www.youtube.com/watch?v=vWDbSopp8SQ"],
    {"type" : "video\/mp4"});
    const link = document.createElement("a");
var name = 'file.mp4';


  link.href = URL.createObjectURL(file);
  link.download = name;
  link.click();
  URL.revokeObjectURL(link.href)

}

但由于某种原因,它不起作用。它会下载视频,但是当我在文件中单击它时,它只是显示为空白。有人可以帮我按预期完成这项工作。提前感谢您的所有帮助!

4

1 回答 1

1

您在这里有两个主要问题:

  1. https://www.youtube.com/watch?v=vWDbSopp8SQ是 HTML 文档的 URL,而不是视频
  2. 您传递给的数组new Blob需要包含您要放入其中的数据,而不是 URL。您正在有效地创建一个包含 URL 的文本文件。

因此,要实现您想要的,您需要:

  1. 计算出视频的实际 URL(YouTube 很可能一开始就没有指向视频的纯 HTTP URL)
  2. 下载它(这需要通过 CORS 获得 YouTube 的许可……他们不会提供)
  3. 将该数据放入Blob。
于 2020-09-23T22:55:40.263 回答