我正在开发实时视频转换演示应用程序。node-multiparty
视频文件使用, 文件的part is piped
to解析,avconv.stdin
处理时使用chunk pipes
to write stream
。
这是源代码的一部分:
var form = new multiparty.Form(),
args = ['-i', 'pipe:0', '-f', 'webm', 'pipe:1'],
avconv = spawn('avconv', args),
output = fs.createWriteStream(filePath);
form.on('part', function (part) {
if (part.filename) {
part.pipe(avconv.stdin);
part.on('end', function() {
console.log('===== Video has been uploaded! =====');
avconv.stdin.end();
});
}
});
avconv.stdout.pipe(output);
我对end
附加到文件的事件感兴趣part
。通常应该在解析部分时触发该事件,这意味着它已被上传。
我有一个测试视频文件(~800KB)和一个用于测试的低级笔记本电脑。在 localhost 上运行测试时,end
事件在avconv
转换过程的最后触发,持续约 15 秒。
800KB 的视频文件上传速度更快,但看起来part
流仍然不是空的,等待数据处理avconv
。
我是对的还是另有原因?