Linux设备上的WebRTC和gstreamer

Foo*_*iko 11 gstreamer h.264 webrtc

我有小型计算机(类似于Arduino或Raspberry pi),上面安装了Linux,摄像头gstreamer.我需要使用WebRTC技术将h264视频从此设备传输到浏览器.此外,我使用NodeJS作为信令服务器.

简单来说,我需要从我的设备上做一个WebRTC客户端.做这个的最好方式是什么?我可以使用WebRTC Native API实现此目标吗?如何在我的小型设备上安装它?或者,也许,我只需要玩我的gstreamer并为它安装一些webrtc插件?

Ben*_*ent 7

既然你必须使用信令服务器,我会说你应该使用Janus-Gateway.你提到CentOS用于你的信令服务器,如果它专门在CentOS上运行我不是100%,但我已经在Debian Jessie构建中成功运行它,只需要一些依赖安装.

Janus处理与网关建立的整个呼叫(信令和一切).因此,可能必须进行一些端口转发,以便可以进行SDP交换(您必须担心任何信令服务器).

  • 安装网关,有一些依赖,但都是简单的安装

  • 看一下janus_streaming插件.它有一个gstreamer示例,将从gstreamer管道流出.此外,流测试演示页面可以查看Javascript API如何为该插件工作

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

注意:您必须修改JavaScipt发送到网关的SDP,以便它包含H264(可能除去所有其他编解码器以及强制协商).您可以通过在janus JavaScript API()中jsep通过传递给createOffer函数成功案例的对象访问sdp来完成此操作jsep.sdp.


lul*_*lop 5

另一种可能性是使用Kurento媒体服务器(KMS),它是在GStreamer之上编写的.我看到两种可能性

  1. 您在Ubuntu 14.04框中安装KMS并与您的设备桥接,以便设备生成视频流并将其发送到KMS框.从那里,您可以使用kurento客户端API(可以从Node.js中使用)将其转码为VP9并将其作为WebRTC流轻松分发.进行转码的应用程序将需要连接到WebRtcEndpoint(能够通过WebRTC发送视频流)的RtpEndpoint(从RTP/H.264接收设备的视频).此选项实现起来非常简单,因为它是使用KMS的标准方法.但是,您需要在设备上生成RTP/H.264流并为其生成适当的SDP(这可以使用标准GStreamer元素完成)
  2. 您尝试直接将KMS安装到您的盒子中.这可能更复杂,因为它需要将KMS编译到特定设备,这可能需要一些时间投入.此外,在设备中执行转码可能过于昂贵,您可能会使其CPU匮乏.

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