gpt4 book ai didi

node.js - 亚马逊 S3 服务器上的 Concat MP3/媒体音频文件

转载 作者:IT老高 更新时间:2023-10-28 23:08:35 26 4
gpt4 key购买 nike

我想连接上传到 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 上操作文件

由于 s3 是远程文件存储,因此您无法在 s3 服务器上运行代码以在本地执行操作(如 @Andrey 所述)。您需要在代码中做的是获取每个输入文件,在本地处理它们并将结果上传回 s3。查看 amazon 中的代码示例:

var s3 = new AWS.S3();
var params = {Bucket: 'myBucket', Key: 'mp3-input1.mp3'};
var file = require('fs').createWriteStream('/path/to/input.mp3');
s3.getObject(params).createReadStream().pipe(file);

在此阶段,您将运行连接代码,并将结果上传回来:

var fs = require('fs');
var zlib = require('zlib');

var body = fs.createReadStream('bigfile.mp3').pipe(zlib.createGzip());
var s3obj = new AWS.S3({params: {Bucket: 'myBucket', Key: 'myKey'}});
s3obj.upload({Body: body}).
on('httpUploadProgress', function(evt) { console.log(evt); }).
send(function(err, data) { console.log(err, data) });

合并两个(或更多)mp3 文件

由于 MP3 文件包含指定比特率等信息的 header ,因此将它们简单地连接在一起可能会导致播放问题。见:https://stackoverflow.com/a/5364985/1265980

你想用什么工具来做。您可以采用一种方法将输入的 mp3 文件保存在 tmp 文件夹中,并执行外部程序,例如更改比特率、连接文件和修复标题。或者,您可以使用允许您使用 ffmpeg within node.js. 的库。

在他们展示的代码示例中,您可以看到他们如何在 Node api 中将两个文件合并在一起。

ffmpeg('/path/to/part1.avi')
.input('/path/to/part2.avi')
.input('/path/to/part2.avi')
.on('error', function(err) {
console.log('An error occurred: ' + err.message);
})
.on('end', function() {
console.log('Merging finished !');
})
.mergeToFile('/path/to/merged.avi', '/path/to/tempDir');

关于node.js - 亚马逊 S3 服务器上的 Concat MP3/媒体音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31268510/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com