Javascript 重新启动ffmpeg子进程?

Javascript 重新启动ffmpeg子进程?,javascript,node.js,ffmpeg,rtsp,child-process,Javascript,Node.js,Ffmpeg,Rtsp,Child Process,我正在使用ffmpeg和child_进程启动多个RTSP流。其中一些RTSP流在第一次连接期间未连接并失败,需要不断重试重新连接以启动流 以下是ffmpeg选项: setOptions() { const options = { "-rtsp_transport": "tcp", "-i": this.url, "-f": "mpegts",

我正在使用ffmpeg和child_进程启动多个RTSP流。其中一些RTSP流在第一次连接期间未连接并失败,需要不断重试重新连接以启动流

以下是ffmpeg选项:

  setOptions() {
    const options = {
      "-rtsp_transport": "tcp",
      "-i": this.url,
      "-f": "mpegts",
      "-s": "1280x720",
      "-speed": "6",
      "-codec:v": "mpeg1video",
      "-codec:a": "mp2",
      "-stats": "",
      "-b:v": "1000k",
      "-ar": "44100",
      "-r": 30,
      "-bf": 0,
      "-ac": "1",
      "-b:a": "128k",
      "-muxdelay": "0.001",
    };
    let params = [];
    for (let key in options) {
      params.push(key);
      if (String(options[key]) !== "") {
        params.push(String(options[key]));
      }
    }
    params.push("-");
    return params;
  }
下面是我用来启动进程的方法,以及在连接失败时重新启动进程的“尝试”:

  startStream() {
    const self = this;
    const wss = new WebSocket.Server({ port: this.port });
    const childSpawn = child_process.spawn(
      "ffmpeg",
      this.setOptions(this.url),
      {
        detached: true,
      }
    );
    childSpawn.stdout.on("data", (data) => {
      wss.clients.forEach((client) => {
        client.send(data);
        /// console.log(data);
        if (self.retries > 0) {
          console.log("-- STREAM HAS CONNECTED");
        }
      });
      self.child = childSpawn;
    });
    childSpawn.on("close", (code, signal) => {
      console.log("process closed");
      if (code === 1) {
        setTimeout(() => {
          console.log("retrying stream", self.url);
          self.startStream();
        }, 50000);
      }
    });
  }
我们的想法是等待X秒,然后再次尝试重新启动

这样做的正确和最好的方法是什么