从远程url下载视频流使用梦魇



我正在尝试构建一个刮板来下载视频流,并使用恶梦js (http://www.nightmarejs.org/)将它们保存在私有云实例中

我看过文档,它展示了如何下载像这样的简单文件-

.evaluate(function ev(){
    var el = document.querySelector("[href*='nrc_20141124.epub']");
    var xhr = new XMLHttpRequest();
    xhr.open("GET", el.href, false);
    xhr.overrideMimeType("text/plain; charset=x-user-defined");
    xhr.send();
    return xhr.responseText;
}, function cb(data){
    var fs = require("fs");
    fs.writeFileSync("book.epub", data, "binary");
})

——基于这里的SO post ->使用Nightmare下载文件

但是我想使用NodeJs异步流api下载视频流。有没有一种方法可以从远程url打开流,并使用NodeJs内置的流api将其管道到本地/其他远程可写流

你可以检查服务器是否通过HEAD请求发送"Accept-Ranges"(14.5)和"Content-Length"(14.13)报头到该文件,然后请求你试图使用"Content-Range"(14.16)报头下载的文件的较小块,并将每个块写入目标文件(你可以使用附加模式,以减少文件流的管理)。

当然,如果您顺序地请求非常小的块,这将非常慢。你可以建立一个请求者池(例如4),并且只将下一个正确的块写入文件(这样其他请求者就不会在他们已经完成下载的情况下承担未来的块)。

相关内容

  • 没有找到相关文章

最新更新