【问题标题】:Node.js & avconv — real-time video conversionNode.js & avconv — 实时视频转换
【发布时间】:2014-02-05 23:32:44
【问题描述】:

我正在开发实时视频转换演示应用。视频文件用node-multiparty解析,文件的part is pipedavconv.stdin,处理时chunk pipeswrite 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);

我对附加到文件partend 事件感兴趣。通常在解析部分时应该触发该事件,这意味着它已被上传。

我有一个测试视频文件 (~800KB) 和一台用于测试的低级笔记本电脑。在 localhost 上运行测试时,end 事件在 avconv 转换过程的最后触发,持续约 15 秒。

800KB 视频文件上传速度更快,但看起来part 流仍然不为空,等待avconv 处理数据。

我是对的还是有别的问题?

【问题讨论】:

    标签: node.js avconv


    【解决方案1】:

    你完全正确。 Readable 流仅在完全消耗时才会发出 end 事件。 看看这里:http://nodejs.org/api/stream.html#stream_event_end

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多