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

鬼...

我想串联在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文件包含指定某些信息(例如比特率)的标头,因此将它们简单地串联在一起可能会带来播放问题。参见:https : //stackoverflow.com/a/5364985/1265980

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

在显示的代码示例中,您可以看到它们如何在节点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'); 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从资源播放 mp3 音频文件?(使用媒体播放器而不是 SoundPlayer)

缓存MP3音频文件以供脱机访问

如何从Aws s3流音频文件(mp3)?

将.mp4音频文件另存为mp3文件

iPhone,音频MP3或M4A音频文件不播放声音

如何将3gp音频文件转换为mp3?

您可以在Bixby上播放MP3 /音频文件吗?

在树莓派 Windows IOT 上以 mp3 格式录制音频文件

在iOS中,如何从数据创建音频文件(.wav,.mp3)文件?

如何在静音段将音频文件(mp3或wav)划分为较小的文件

从亚马逊s3获取音频文件对象

如何获得(非常)简短的.mp3音频文件在每次击键时播放?

如何在TensorFlow图中读取Ogg或MP3音频文件?

使用ffmpeg批量减少mp3音频文件的比特率和大小

使用ffmpeg将音频文件转换为mp3

使用LAME将音频文件从.wav转换为MP3时出现问题

400指定MP3编码以匹配音频文件

检查外壳中的音频文件是否有效为MP3

使用python从mp3音频文件中获取振幅数据

使用 NAudio 将 .vox 音频文件转换为 .wav 或 .mp3

Nginx音频文件(wav / ogg / mp3)无法正常工作

如何将.aif音频文件转换为mp3?

如何在(L)ubuntu中将`rm`和`ra`音频文件转换为mp3?

Javascript - 从 mp3 文件录制音频

如何将音频文件(aac或mp3)添加到mp4视频文件?

如何将MP3音频文件读取到numpy数组中/如何将numpy数组保存到MP3?

Android Concat 2音频(WAV或MP3)文件

如何使用ffmpeg将音频文件拆分为与HLS兼容的块?(mp3格式)

通过 Flask 将音频文件从 mp3 转换为 flac,并保存在 Google Cloud Storage