微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用ffmpeg进行多个输入?

如何解决使用ffmpeg进行多个输入?

我正在尝试使用fluent-ffmpeg打开多个RTSP流,但是出现错误

Error: Only one output stream is supported

我能够使用node-rtsp-stream打开多个流,但是使用不同的websocket端口,但是我需要更多功能,因此我试图构建自己的项目。我注意到当我使用fluent-ffmpeg时,node-rtsp-stream使用child_process,但是我found a project也在使用fluent-ffmpeg,并且能够具有不同的流。

这是我的以下代码

class Stream extends EventEmitter {
  constructor(url) {
    super();
    this.startStream(url);
  }
  async startStream(url) {
    const wss = new WebSocket.Server({ port: 8080 });
    const name = Crypto.createHash("md5").update(url).digest("hex");
    const command = ffmpeg(url)
      .addInputoption("-rtsp_transport","tcp","-buffer_size","102400")
      .fps("24")
      .outputoptions("-f","mpegts")
      .on("error",(err) => {
        console.log(err);
      });
    console.log("id",name);
    wss.on("connection",(socket,req) => {
      if (req.url === "/" + name) {
        const ffstream = command.pipe();
        ffstream.on("data",(data) => {
          socket.send(data);
        });
      }
    });
  }
}
const cams = ["rtsp://someip:554/1","rtsp://someip2:554/1"];
cams.forEach((cam) => {
  const s = new Stream(cam);
});

我在做错什么,如何打开多个流?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。