什么?
将附加的写入流 ,fs.createWriteStream(filePath, { flags: 'a' })
作为输出传递似乎不起作用。
我试图运行的代码
const stream = require('stream');
let bufferReadStream = new stream.PassThrough();
bufferReadStream.end(Buffer.concat(largeChunk));
ffmpeg(bufferReadStream)
.format('mp3')
.output(fs.createWriteStream(filePath, { flags: 'a' }))
.on('end', () => {
console.log('formatting finished!');
})
.on('error', err => {
console.log('format buffer error: ', err);
})
.run();
我期望发生的事情和实际发生的事情
我正在将音频流(.webm)上传到节点,该节点被接受为缓冲区数组。由于大型音频文件的等待时间,我试图避免将非常大的音频文件保存到磁盘然后将其格式化为 .mp3 文件。
我尝试获取音频文件的块并将它们直接转换为 mp3 并将它们附加到 mp3 文件中。该代码第一次成功运行,创建了一个 mp3 文件,但在第二次之后,它抛出了一个错误,而不是将其附加到现有的 mp3 文件中。
format buffer error:
Error: ffmpeg exited with code 1: pipe:0: Invalid data found when processing input
at ChildProcess.<anonymous> (/Users/inspiredtolive/Desktop/HackReactor/Picky-Notes/node_modules/fluent-ffmpeg/lib/processor.js:177:22)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)