Node.js在多个实例中生成进程访问流

时间:2018-12-02 15:08:12

标签: node.js video-streaming raspberry-pi3 spawn nodejs-stream

应用说明

Node.js + Express.js

该应用程序从Raspberry Pi 3摄像机的端点处提供视频流。流部分正在工作。

问题

它仅适用于一个客户端。当第二个客户端请求流传输时,流中断-第二个客户端不接收任何数据,并且第一个连接的客户端停止接收任何其他数据。

代码

const { spawn } = require('child_process');
const express = require('express');

const router = express.Router();
const vstream = spawn('raspivid', ['-t', '9999999', '-o', '-', '-n']);

router.get('/stream', (req, res) => {
  vstream.stdout.pipe(res);
});

module.exports = router;

我认为正在发生的事情

运行代码时,正在执行spawn()的子进程将执行必要的命令以记录来自摄像机的视频。此过程将流输出到其stdout

当客户端请求流传输时,流将通过管道传递到结果对象,即,只要raspivid输出某些内容,客户端就会将其接收为部分响应。

问题

我想知道第二个(以及第三个,等等)客户端何时请求流传输以中断流vstream.stdout.pipe(res)周围发生什么?我应该以某种方式克隆vstream的输出流吗?还是我应该采用完全不同的方法来解决问题?

0 个答案:

没有答案