首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fs.createWriteStream到fs.createReadStream

fs.createWriteStream到fs.createReadStream
EN

Stack Overflow用户
提问于 2018-01-06 02:44:54
回答 1查看 1.7K关注 0票数 1

我正在使用一个node.js模块sox-audio来裁剪mp3音频以进行流式处理。从这个example -

代码语言:javascript
复制
var SoxCommand = require('sox-audio');

var trimFileAndPipeExample = function(inputFile, startTimeSeconds, endTimeSeconds, outputPipe) {
    var startTimeFormatted = TimeFormat.formatTimeAbsolute(startTimeSeconds);
    var endTimeFormatted = TimeFormat.formatTimeAbsolute(endTimeSeconds);

    var command = SoxCommand()
        .input(inputFile)
        .output(outputPipe)
        .outputFileType('wav')
        .trim(startTimeFormatted, endTimeFormatted)
        .run();
    return command;
}

为了分配输出,您可以使用- fs.createWriteStream('./output.mp3');

所以

代码语言:javascript
复制
var outputPipe = fs.createWriteStream('./output.mp3');

trimFileAndPipeExample(inputFile, startTime, endTime, outputPipe);

创建输出文件。

我想要做的是从我收到的请求中获取输出并将其定向到fs.createReadStream -

代码语言:javascript
复制
var outputPipe = fs.createWriteStream('./test.mp3');

trim(path, startTime, endTime, outputPipe);

outputPipe.on('finish', () => {
    var readStream = fs.createReadStream('./test.mp3');
    readStream.pipe(res);
});

但我不一定要每次都创建文件,而是将数据定向到fs.createReadStream

有没有一种方法可以重写fs.createWriteStream,使其不需要输出路径,并直接将其直接.pipe到fs.createReadStream?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-06 16:40:58

因为Express已经是一个可写的流,所以您可以直接将其传递给trimFileAndPipeExample

代码语言:javascript
复制
router.get('/cut', function (req, res, next) {
  var inputFile = './assets/utterance_0.wav';
  var startTime = 1;
  var endTime = 5;
  res.set('Content-Type', 'audio/mpeg');
  trimFileAndPipeExample(inputFile, startTime, endTime, res);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48119527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档