如何在 Electron 中显示 RTSP 流?

How to display RTSP stream in Electron?

我有一个使用 UDP 协议的视频流,可通过 rtp://ipadd:portudp://@:port 访问。我完全无法控制服务器,因此我无法将其更改为通过 WebSocket 提供流或即时将其转码为兼容格式。

我想在 Electron 应用程序中显示流,但是我从 Google 搜索中找到的所有资源都告诉我,我希望完成的事情需要我使用一些东西来组合一个不受欢迎的 hacky 解决方案例如 webchimera.js

我曾尝试按照 this answer, 将 URL 放入 <video> 标签中,但 Electron 表示 udprtp URL 方案不被认可。我还尝试了 require('child_process').execffplay 的静态构建,这有效,但它在整个单独的 window 上显示流,这不是我想要的。 ActiveX、NPAPI 和其他插件解决方案不是一个选项,因为 Electron 不支持它们。

是我运气不好,还是我还没有找到解决方案?

通过查看他人代码的页面和页面来弄清楚。

显然我最初对 WebSockets 的理解是不正确的 - 在我的情况下,我不需要服务器端更改来使用 WebSockets。

我不得不使用 ffmpeg Node.js 包装器将视频流从 Electron 内部转码为 MPEG2,它将视频发送到 Express 服务器实例,然后在静态网页中提供视频由 jsmpeg 呈现。然后静态网页在主 Electron 应用程序页面中显示为 IFrame。

与使用 ffplay 播放原始 UDP 流时相比,生成的流具有更多的视觉效果,并且这种方法可能会引入大量延迟,但它足以满足我的需求。