如何在Electron中显示RTSP流?

3
我有一个使用UDP协议的视频流,可以通过rtp://ipadd:portudp://@:port访问。 由于服务器不受我的控制,因此我无法更改它以通过WebSocket提供流或即时转码为兼容格式。
我想在Electron应用程序中显示该流,但是我从Google搜索中找到的源都告诉我,我想要实现的目标需要使用诸如webchimera.js之类的东西组合出一个不理想的hacky解决方案。
我已经按照这个答案,将URL放入了<video>标签中,但是Electron说不支持udprtp URL方案。 我还尝试了require('child_process').execffplay的静态构建版本,它可以工作,但它会在整个单独的窗口中显示流,这不是我想要的。 ActiveX,NPAPI和其他插件解决方案不是选项,因为Electron不支持它们。
难道我没办法了吗? 还是有一个我没有发现的解决方案?
1个回答

5

通过查看其他人的代码,我弄明白了。

显然,我的WebSockets的初始理解是错误的 - 在我的情况下,我不需要进行服务器端更改才能使用WebSockets。

我必须在Electron中使用一个ffmpeg Node.js包装器将流转码为MPEG2,然后将视频发送到Express服务器实例,该服务器实例随后在由jsmpeg渲染的静态Web页面中提供视频。然后在主要的Electron应用程序页面中作为IFrame显示静态Web页面。

与使用ffplay播放原始UDP流时看到的内容相比,生成的流具有更多的视觉伪影,并且这种方法可能会引入很多延迟,但对于我的需求而言,它足够好用。


嘿,dantis,你介意分享一下你用来实现解决方案的代码吗?我正在开发一个带有这些要求的Electron应用程序。 - Erik Martín Jordán
@ErikMartínJordán 你好,Erik!我相信这个提交是你想要的。很抱歉我不能提供更多帮助——我已经放弃这个项目有一段时间了 :( - dantis
谢谢,我会看一下的。我在这个问题上挣扎了很久。干杯! - Erik Martín Jordán

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接