【发布时间】:2021-04-12 14:27:12
【问题描述】:
我正在尝试通过快速 API 从 AWS S3 存储桶流式传输 mp3 文件。
该应用程序可以很好地连接到 AWS,我可以从存储桶下载/流式传输文件。但我在测试时注意到,一旦流完成,我的文件比上传到 S3 存储桶的原始文件长。播放文件时,声音会跳动很多。我已经运行了几次,并且始终比原始文件大,但我不确定为什么。这是我第一次使用任何类型的流数据,但感觉好像我错过了一些明显的东西。我认为这可能与信息块周围的元数据有关,但我不确定。我试过搜索为什么会出现这种情况,但我不确定使用什么词汇来搜索我需要的答案。
这是我用来从 AWS 流式传输文件的代码,将其直接通过管道传输到 API 调用的响应对象中。
s3Client
.getObject(params, (err, data) => {
if (err) console.log("There was an error finding object: ", err);
})
.createReadStream()
.on("error", (err) => {
console.log("File Stream error: ", err);
})
.on("data", (chunk) => {
total += chunk.length;
})
.on("end", () => {
console.log("All done");
console.log("Total Streamed MB: ", total / 1000000);
})
.pipe(response);
这是我正在谈论的文件大小的示例: Console output showing streamed file much larger than original file
任何帮助将不胜感激。
【问题讨论】:
标签: node.js typescript amazon-s3 stream