我正在开发实时视频转换演示应用程序。视频文件被解析为node-multiparty,文件的part is piped到avconv.stdin,当处理时,chunk pipes到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);我对附加到文件的part的part事件很感兴趣。通常情况下,当一个部分被解析时,事件应该被触发,这意味着它已经上传了。
我有一个测试视频文件(~800 for )和一个低级笔记本电脑进行测试.在本地主机上运行测试时,end事件在avconv转换过程的末尾触发,持续时间为15s。
800 to的视频文件已经上传得更快了,但是看起来part流仍然不是空的,等待avconv处理数据。
我说得对吗还是还有一件事?
发布于 2014-02-06 20:50:50
你说的完全正确。Readable流只在完全消耗end事件时才会发出它。看看这里:end
https://stackoverflow.com/questions/21590939
复制相似问题