Как программно скачать видео? - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь программно загрузить видеофайл с веб-сервера по ссылке.

Если вы нажмете эту ссылку через веб-браузер, вам будет предложено загрузить видео и указать имя файла, а затем загрузить его правильно.

У меня естьнекоторый код nodejs, который просто делает HTTP-запрос к этой ссылке и успешно получает из него необработанные данные и сохраняет его в файле по умолчанию video.mp4

const https = require('https');
const fs = require('fs');

https.get('https://url.tocdn.com/myvideoid', (resp) => {
let data = '';

// A chunk of data has been recieved.
resp.on('data', (chunk) => {
    data += chunk;
});

// The whole response has been received. Print out the result.
resp.on('end', () => {
    fs.writeFile('./video.mp4', data, (err) => console.log(err))
});

}).on("error", (err) => {
console.log("Error: " + err.message);
});

Проблема заключается в том, что при попытке воспроизвести этот файл черезWindows Media Player, например, просто показывает ошибку относительно формата файла.Я что-то упускаю из виду?

1 Ответ

0 голосов
/ 14 января 2019

Не используйте string, если вы притворяетесь, что храните байты,

или application/octet-stream в моем случае (что совпадает)

Из данного изменения фрагмента:

resp.on('data', (chunk) => {
    data = Buffer.concat([data, Buffer.from(chunk)]);
});

И обязательно инициализируйте data следующим образом: let data = Buffer.from([]);

...