fs.createWriteStream 至 fs.createReadStream
fs.createWriteStream to fs.createReadStream
我正在使用 node.js 模块 sox-audio
到 trim mp3 音频进行流式传输。
从此example-
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');
所以
var outputPipe = fs.createWriteStream('./output.mp3');
trimFileAndPipeExample(inputFile, startTime, endTime, outputPipe);
创建输出文件。
我想要做的是获取输出并将其从我通过 -
获得的请求定向到 fs.createReadStream
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 就可以了?
谢谢
因为Expressres
已经是Writable Stream了,你可以直接传给trimFileAndPipeExample
。
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);
});
我正在使用 node.js 模块 sox-audio
到 trim mp3 音频进行流式传输。
从此example-
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');
所以
var outputPipe = fs.createWriteStream('./output.mp3');
trimFileAndPipeExample(inputFile, startTime, endTime, outputPipe);
创建输出文件。
我想要做的是获取输出并将其从我通过 -
获得的请求定向到fs.createReadStream
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 就可以了?
谢谢
因为Expressres
已经是Writable Stream了,你可以直接传给trimFileAndPipeExample
。
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);
});