首页 > 解决方案 > 如何以编程方式下载视频?

问题描述

我正在尝试通过链接以编程方式从网络服务器下载视频文件。

如果您通过网络浏览器单击该链接,它只会提示您下载视频并提供文件名称,然后正确下载视频。

我有一些 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 播放该文件时,它只会显示有关文件格式的错误。我错过了一些明显的东西吗?

标签: node.jsvideodownloadmp43gp

解决方案


string如果您假装存储字节,请不要使用,

或者application/octet-stream在我的情况下(这是相同的)

从给定的代码段更改:

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

并确保初始化data如下: let data = Buffer.from([]);


推荐阅读