0

ビデオ ストリームをダウンロードし、NightMareJs を使用してプライベート クラウド インスタンスに保存するスクレーパーを構築しようとしています。(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 投稿に基づいて ->ナイトメアを使用してファイルをダウンロードします

しかし、NodeJs 非同期ストリーム API を使用してビデオ ストリームをダウンロードしたいと考えています。NodeJs組み込みストリームAPIを使用して、リモートURLからストリームを開き、ローカル/他のリモート書き込み可能なストリームにパイプする方法はありますか?

4

1 に答える 1

0

サーバーが "Accept-Ranges" ( 14.5 ) および "Content-Length" ( 14.13 ) ヘッダーをそのファイルへの HEAD リクエストを介して送信するかどうかを確認し、" Content-Range" ( 14.16 ) ヘッダーを追加し、各チャンクをターゲット ファイルに書き込みます (ファイル ストリームの管理を減らすために追加モードを使用できます)。

もちろん、非常に小さなチャンクを順番に要求している場合、これは非常に遅くなります。リクエスターのプール (例: 4) を構築し、次の正しいチャンクのみをファイルに書き込むことができます (そのため、他のリクエスターは、既にダウンロードが完了している場合、将来のチャンクを取得しません)。

于 2016-08-20T09:12:55.480 に答える