linux设备上的WebRTC和gstreamer

linux设备上的WebRTC和gstreamer,gstreamer,h.264,webrtc,Gstreamer,H.264,Webrtc,我有一台小型计算机(像Arduino或Raspberry pi),上面安装了Linux、camera和gstreamer。 我需要使用WebRTC技术将h264视频从该设备传输到浏览器。另外,我使用NodeJS作为信令服务器 简单地说,我需要在我的设备上运行WebRTC客户端。最好的方法是什么?我可以用它来实现这个目标吗?如何在我的小型设备上安装它?或者,也许,我只需要使用我的gstreamer并为其安装一些webrtc插件?既然您无论如何都必须使用信令服务器,我想您应该使用。您提到CentOS

我有一台小型计算机(像Arduino或Raspberry pi),上面安装了Linuxcameragstreamer。 我需要使用WebRTC技术将h264视频从该设备传输到浏览器。另外,我使用NodeJS作为信令服务器


简单地说,我需要在我的设备上运行WebRTC客户端。最好的方法是什么?我可以用它来实现这个目标吗?如何在我的小型设备上安装它?或者,也许,我只需要使用我的gstreamer并为其安装一些webrtc插件?

既然您无论如何都必须使用信令服务器,我想您应该使用。您提到CentOS用于您的信令服务器,如果它具体运行在CentOS上,我不是100%,但我已经在Debian Jessie build中成功运行了它,只安装了一些依赖项

Janus通过网关处理整个呼叫设置(信令和一切)。因此,可能必须进行一些端口转发,以便进行SDP交换(对于任何信令服务器,您都必须担心这一点)

  • 安装网关时,有一些依赖项,但都很简单 装置

  • 看看janus_流媒体插件。它有一个gstreamer示例,该示例将从gstreamer管道流式传输。此外,还需要了解Javascript API如何为该插件工作

  • 插件侦听配置文件中给定的端口,并接受来自任何IP地址的流量。因此,我希望您可以在同一网络上的不同机器上运行gstreamer管道,并将其发送到插件

注意:您必须修改JavaScipt发送到网关的SDP,使其包含H264(可能为了强制协商也要去掉所有其他编解码器)。您可以通过传递给janus JavaScript API(
jsep.sdp
)中
createOffer
函数的成功案例的
jsep
对象访问sdp来实现这一点。

您的另一种可能是使用(KMS),它是在GStreamer之上编写的。我认为有两种可能性

  • 您将KMS安装在Ubuntu14.04设备中,并与您的设备连接,以便设备生成视频流并将其发送到KMS设备。由此,您可以使用kurento客户端API(可从Node.js使用)将其转换为VP9,并将其作为WebRTC流分发。进行转码的应用程序需要一个连接到WebRTC端点(能够通过WebRTC发送视频流)的RtpEndpoint(从RTP/H.264中的设备接收视频)。这个选项很容易实现,因为它是使用KMS的标准方式。但是,您需要在设备上生成RTP/H.264流以及相应的SDP(这可以使用标准GStreamer元素完成)
  • 您尝试直接将KMS安装到机箱中。这可能更复杂,因为它需要将KMS编译到特定设备,这可能需要一些时间投资。此外,在设备中执行代码转换可能过于昂贵,并且可能会耗尽其CPU

  • 免责声明:我是Kurento开发团队的成员

    您提到您使用了NodeJS信令服务器。最近,爱立信发布了一个开源WebRTC gstreamer元素:,在发布的同时,他们还发布了一个使用node.js的WebRTC演示;这里的代码:

    < P> >对于WebRTC树莓PI 2,你可能需要考虑。它允许您从RPI到PC(HTML5)上的任何浏览器流直播音频和视频。

    您会考虑一个外部网关来处理WebRTC连接、SRTP解密/加密,这可以将您的视频馈送流到浏览器吗?如果是这样的话,就可以做到这一点,甚至还有一个gstreamer示例(它使用VP8,但修改编解码器应该没有那么难)。如果你想朝这个方向回答,我可以进一步解释。@ BenjaminTrent,外部网关不是最好的方式,但是如果没有其他的,当然,我会考虑它。Janus有点像NodeJS吗。它能代替NodeJS吗?例如,我可以在CentOS上安装它,并将其用作web服务器吗?谢谢。Janus是自己的信令服务器,因此不需要NodeJ。同一台机器也可以作为网页主机。Janus上的CPU利用率非常低,但是需要一些数据包,这就是为什么它可能必须与嵌入式linux机器不同的原因。感谢Benjamin的解释。我会考虑的。“如果你需要任何额外的信息,请问一问。”此外,如果您需要,开发团队对该项目的支持非常快。“它不处理用于同步的控制数据包,但我正在编写一个双向插件”这仍然是真的吗?具体来说,Janus中的gstreamer流媒体无法处理Janus的控制数据包或双向流媒体插件?现在我将Janus网关与我的网络摄像头一起使用,我可以将音频/视频从它流到Janus,并在网页上显示为webrtc流。但是当我试图从另一台设备传输到同一个音频/视频端口时,janus出现了一些小故障。有可能建立到janus的多流传输吗?有可能将h.264视频从我的设备(使用gstreamer)直接传输到openwebrtc,然后在web浏览器上显示吗?实际上我还没有测试openwebrtc,我只是知道而已。尽管如此,我还是能够按照Benjamin Trent的建议,使用Janus网关在WebRTC浏览器中显示gstreamer生成的H.264视频。看看我和Lorenzo(Janus的作者)的对话:爱立信仍处于实验阶段,他们在自己的网站上声明它还没有准备好生产。只是我觉得这个项目已经不可维护了。如果你使用的是PiZero,它就不能正常工作。他削弱了功能(为什么?