如何以编程方式下载视频?
How to programatically download a video?
我正在尝试通过 link 以编程方式从 Web 服务器下载视频文件。
如果您通过网络浏览器单击 link,它只会提示您下载视频并提供文件名称,然后正确下载视频。
我有一些 nodejs 代码只是向 link 发出 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 媒体播放器播放该文件时,它只显示有关文件格式的错误。我是否漏掉了一些明显的东西?
如果您要假装存储字节,请不要使用 string
,
或 application/octet-stream
在我的情况下(相同)
从给定的片段更改:
resp.on('data', (chunk) => {
data = Buffer.concat([data, Buffer.from(chunk)]);
});
并确保按如下方式初始化 data
:
let data = Buffer.from([]);
我正在尝试通过 link 以编程方式从 Web 服务器下载视频文件。
如果您通过网络浏览器单击 link,它只会提示您下载视频并提供文件名称,然后正确下载视频。
我有一些 nodejs 代码只是向 link 发出 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 媒体播放器播放该文件时,它只显示有关文件格式的错误。我是否漏掉了一些明显的东西?
如果您要假装存储字节,请不要使用 string
,
或 application/octet-stream
在我的情况下(相同)
从给定的片段更改:
resp.on('data', (chunk) => {
data = Buffer.concat([data, Buffer.from(chunk)]);
});
并确保按如下方式初始化 data
:
let data = Buffer.from([]);