2016-08-20 3 views
0

Ich versuche, einen Schaber zu bauen Video-Streams zum Download und und sie in einer privaten Cloud-Instanz speichert NightMareJs mit (http://www.nightmarejs.org/)Download Video Streams von Remote-URL NightmareJs

Ich habe die Dokumentation gesehen und es zeigt, wie einfach herunterladen Dateien wie diese -

.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"); 
}) 

- basierend auf dem SO hier posten ->Download a file using Nightmare

Aber ich will Video-Streams mit NodeJS Asynchron-Streams api zum Download bereit. Gibt es eine Möglichkeit, einen Stream von einer Remote-URL zu öffnen und ihn an einen lokalen/anderen schreibbaren Stream mit NodeJs im eingebauten Strom zu schicken apis

Antwort

0

Sie können überprüfen, ob der Server die "Accept-Ranges" (14.5) und "Content" sendet -Length "(14.13) Kopfzeilen über eine HEAD-Anfrage an diese Datei, dann fordern Sie kleinere Teile der Datei, die Sie herunterladen möchten mit der" Content-Range "(14.16) Header und schreiben Sie jeden Chunk in die Zieldatei (Sie können Verwenden Sie den Anfügemodus, um die Verwaltung des Dateistroms zu reduzieren.

Natürlich ist dies ziemlich langsam, wenn Sie sehr kleine Stücke nacheinander anfordern. Sie könnten einen Pool von Anforderern (z. B. 4) erstellen und nur den nächsten korrekten Chunk in die Datei schreiben (so würden die anderen Anforderer keine zukünftigen Chunks übernehmen, wenn sie bereits heruntergeladen wurden).

+0

Dies ist nur eine Anfahrtsbeschreibung. Wenn Sie einen funktionierenden Code haben, beantworten Sie diese Frage bitte selbst. –

Verwandte Themen