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
的输出流吗?还是我应该采用完全不同的方法来解决问题?