【发布时间】:2015-09-24 22:30:09
【问题描述】:
我想连接上传到 Amazon S3 服务器上的文件。 我该怎么做。
我可以使用以下代码在本地机器上进行连接。
var fs = require('fs'),
files = fs.readdirSync('./files'),
clips = [],
stream,
currentfile,
dhh = fs.createWriteStream('./concatfile.mp3');
files.forEach(function (file) {
clips.push(file.substring(0, 6));
});
function main() {
if (!clips.length) {
dhh.end("Done");
return;
}
currentfile = './files/' + clips.shift() + '.mp3';
stream = fs.createReadStream(currentfile);
stream.pipe(dhh, {end: false});
stream.on("end", function() {
main();
});
}
main();
【问题讨论】:
-
你不能,因为你不能在 S3 服务器上执行代码。您需要下载、连接、上传。
-
可以在 unix shell 中使用
cat管道|和大于>来完成连接文件。将两个 mp3 放在一起是一个不同的问题。请区分并更好地描述您的问题。 -
是的,连接 mp3 的内容是不同的业务,然后只是连接文件
-
连接文本文件是一回事......你只需下载 concat 然后上传。但是,二进制媒体文件(例如 MP3)不能只是串联,因为这实际上是一个相当复杂的过程。关于 MP3 或如何从 S3 连接通用文本文件的问题也是如此。请适当编辑您的问题。
-
您可以使用 audiosprite 节点模块将 mp3 文件与 ffmpeg 连接起来。
https://github.com/tonistiigi/audiosprite。正如其他人所提到的。您通常需要从 S3 下载 mp3 文件,然后加入它们。根据您的最终目标,可以加入并将加入的文件提供给您的用户,而无需下载到您的服务器,而是根据用户事件(例如join button)使用 AWS lambda 进行处理。 lambda 和 S3 靠得很近,因此不会增加双倍延迟或额外的服务器负载。如果这是您想知道的,请更新问题。
标签: node.js amazon-web-services express amazon-s3