大佬教程收集整理的这篇文章主要介绍了node.js – 在amazon S3服务器上的Concat MP3 /媒体音频文件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本地机器上的连接可以使用以下代码.
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文件夹中,并执行外部程序,以更改比特率,连接文件和修复标题.
或者,您可以使用允许您使用 ffmpeg within node.js.的库
在他们的代码示例中,您可以看到他们如何将两个文件合并在节点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 – 在amazon S3服务器上的Concat MP3 /媒体音频文件全部内容,希望文章能够帮你解决node.js – 在amazon S3服务器上的Concat MP3 /媒体音频文件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。