【发布时间】:2014-02-05 23:32:44
【问题描述】:
我正在开发实时视频转换演示应用。视频文件用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 的end 事件感兴趣。通常在解析部分时应该触发该事件,这意味着它已被上传。
我有一个测试视频文件 (~800KB) 和一台用于测试的低级笔记本电脑。在 localhost 上运行测试时,end 事件在 avconv 转换过程的最后触发,持续约 15 秒。
800KB 视频文件上传速度更快,但看起来part 流仍然不为空,等待avconv 处理数据。
我是对的还是有别的问题?
【问题讨论】: