何?
追加の書き込みストリーム を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 ファイルが作成されますが、2 回目以降は、既存の 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)