问题标签 [janus-gateway]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
opencv - 从 RTP 数据包重建图像
我正在尝试通过网络将用户的网络摄像头流式传输到基于 C 的服务器。我用过Janus 网关。
我创建了一个很大程度上基于 echotest 演示示例的小插件:我的浏览器通过 WebRTC 技术连接到我的 janus 服务器,并让它流式传输用户的网络摄像头。
在服务器端,我有janus_incomming_rtp函数,它给了我一个char * buffer和int length。经过检查,传入的数据缓冲区大约是 MTU 的长度:我的视频的每一帧都是通过几个 RTP 数据包发送的。
我已经按照这个维基百科页面检查了一些标题,但我不知道如何从 UDP RTP 数据包流中重建图像。理想情况下,我想将流传递给 openCV 以进行实时图像处理。
我听说过 gstreamer,但我不明白它是什么,也不知道它对我有什么帮助;除了我不知道openCV是否有任何内置函数来“重建”图像?而且我不知道视频帧以哪种格式编码:PT(有效负载类型)似乎是 116,它被定义为“动态”,但我不知道它是什么意思。
有什么帮助吗?
webrtc - 为 webrtc 实现 Janus 网关
我正在按照 janus 文档构建视频 mcu 系统。我根据自述文件安装了它的所有依赖项。
http://janus.conf.meetecho.com/docs/
之后,当我使用运行脚本sh install.sh
时出现以下错误
我也按照上述步骤安装了libwebsock,但仍然显示错误。event2 目录不在 janus-gateway 代码中。这是所有源代码的 github 链接。https://github.com/meeetecho/janus-gateway.git
任何形式的帮助将不胜感激。
google-chrome - which gstreamer pipeline settings are needed to process chrome's rtp stream?
I'm streaming a webcam from a browser using webrtc to a server where the following setup works:
- using firefox and a modified echo-test html from janus gateway I send the webcam stream to a janus server
- the janus server is running using a modified echotest plugin which simply udp-streams the given char *buf in janus_videorecv_incoming_rtp() to port 5060, just for testing purpose (pretty much like this)
- the following gstreamer command line actually opens a window showing the streaming video
GST_DEBUG=p*:5 gst-launch-1.0 -vvv udpsrc caps="application/x-rtp,media=video,clock-rate=90000,payload=96" port=5060 ! rtpvp8depay ! vp8dec ! autovideosink
in the modified echo test javascript i remove a few lines from the sdp answer the browser will receive like the following:
below, one can find the modified firefox sdp answer which works for above gstreamer command but the, in the same way, modified sdp answer doesnt work in case of chrome i thought about adjusting the payload in the gstreamer caps, but 32,33,96,100,120 didnt work
so the question is: what is needed in case of chrome to get this to work?
i also tried adding fir/pli requests like in videoroom.c from janus as suggested here
the gstreamer output in case of chrome is, where the command just keeps waiting at the last line:
chrome answer:
firefox answer:
UPDATE:
i modified the sdp-answer so both firefox and chrome get nearly the same
except for the "o=" and "s=" lines which i just copy from the sdp-offer
v=0
o=- 7589782217972865757 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio video
a=msid-semantic: WMS janus
m=audio 1 RTP/SAVPF 111
a=mid:audio
c=IN IP4 192.168.0.1
a=sendrecv
a=rtcp-mux
a=ice-ufrag:g0kZ
a=ice-pwd:d5oEody1jqIzDYUdf1fg6t
a=ice-options:trickle
a=fingerprint:sha-256 C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44
a=setup:active
a=connection:new
a=rtpmap:111 opus/48000/2
a=ssrc:1038736511 cname:janusaudio
a=ssrc:1038736511 msid:janus janusa0
a=ssrc:1038736511 mslabel:janus
a=ssrc:1038736511 label:janusa0
a=candidate:1 1 udp 2013266431 192.168.0.1 51232 typ host
m=video 1 RTP/SAVPF 100
a=mid:video
c=IN IP4 192.168.0.1
a=sendrecv
a=rtcp-mux
a=ice-ufrag:g0kZ
a=ice-pwd:d5oEody1jqIzDYUdf1fg6t
a=ice-options:trickle
a=fingerprint:sha-256 C5:5F:DA:7D:84:47:B1:BF:6B:55:16:62:48:31:3E:D3:F1:7B:25:89:92:4A:4B:4D:4D:D9:D5:AF:EA:D8:15:44
a=setup:active
a=connection:new
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=ssrc:2455978689 cname:janusvideo
a=ssrc:2455978689 msid:janus janusv0
a=ssrc:2455978689 mslabel:janus
a=ssrc:2455978689 label:janusv0
a=candidate:1 1 udp 2013266431 192.168.0.1 51232 typ host
m=application 0 DTLS/SCTP 0
c=IN IP4 192.168.0.1
debugging - 使用 gdb 调试 janus 网关
我是在 webrtc 中使用 janus 网关的新手。我已经在 janus 网关中运行了演示应用程序。现在我想在 gdb 上运行 janus 应用程序来测试调试信息。我怎样才能做到这一点并将调试信息保存到文件中。任何形式的帮助将不胜感激。
以下是 janus 网关文档的链接。
http://janus.conf.meeetecho.com/docs/
webrtc - Gstreamer:如何在不重新编码的情况下将 rtpvp8depay 导入 webmmux?
从提供 Webrtc 的浏览器中,我收到一个 RTP 流,该流使用 janus 网关解密。在仅接收到视频 rtp 数据包后,将被中继到本地多播组以进行测试。
所以,假设我在 udp 端口上接收到 vp8 编码的 rtp 数据包。我也可以随时请求新的关键帧。
问题管道:
产生错误
Kurento 项目提供了一个名为“vp8parse”的 gstreamer 插件来解决这个问题:
看一下vp8parse 源,似乎这个插件除了将 rtpvp8depay 提供的未触及到其接收器的帧通过管道传输之外什么也没做,但也将 src 上限设置为视频宽度、高度和帧速率。
另一种可行的管道是:
但使用 vp8dec !vp8enc 显然没有多大意义,因为我已经收到了一个 vp8 编码流。
现在我的问题是如何在不重新编码流且不依赖 vp8parse 的情况下解决这个问题?如果没有其他选择,我似乎必须使用它,但由于这是目前无法通过标准 gstreamer 插件包获得的插件,我想避免这种情况。是否可以将上限强制为特定的宽度、高度、帧速率,以便 webmmux 不会抱怨?因为我认为这就是为什么第一个管道没有谈判的原因。
我尝试使用像 rtpvp8depay 这样的 capsfilter !capsfilter caps="video/x-vp8,width=640,height=480,framerate=10/1" !webmmux,但它也没有协商。
linux - How to combine audio and video mjr files to generate one file?
I am using janus-gateway for recording in web-browser. Once the recording is completed, two files are generated, one is audio and another is a video. Both have format mjr. How can I combine both these files to create a single file?
unity3d - 将 wifi 接入点摄像头的视频流式传输到远程计算机
在花了数周的时间搜索论坛并尝试不同的方法后,我没有找到解决我非常具体的问题的方法。我很感谢你可能提供的每一个提示。
我购买了一台 Kodak Pixpro 360 相机,它通过 wifi 提供取景器功能(即实时视频流)。现在我正在尝试将这个摄像头用作可以从任何地方(不仅仅是本地网络)访问的监控摄像头。一个 ODROID 将通过 wifi 连接到相机,并使用第二个 wifi 加密狗连接到 LAN。传入的视频流应实时转发给客户端(一次只有一个)。然后在用 Unity3d 编写的应用程序中查看接收到的 360 度内容。
到目前为止,我已经设法获取了 cam 的 MJPEG 流并将其作为 JPEG 提供,而不是使用 NodeJS 服务器。然后通过该WWW.LoadImageIntoTexture
方法渲染 JPEG。正如您可能想象的那样,每帧的 GET 请求非常慢,大约每秒 0.5 帧。
我的一位同事向我指出 WebRTC 和 Janus 网关是一种更优雅的解决方案。这个简单的对等聊天使用 SocketIO,并且与我的网络摄像头配合得很好,但我不知道如何更改此代码以使用来自 PIXPRO 而不是我的本地设备的视频流。渲染内容也应该很有趣,因为您需要一个用于 WebRTC 的浏览器,而我不确定其中有多少可以嵌入到 Unity3d 中。
不幸的是,相机本身无法连接到 LAN,而是充当 wifi 接入点。这使得我为 ip cams 找到的所有解决方案都过时了。
我发现了一个类似的项目,它设法通过 Janus 和 WebRTC 转发他们的视频流,但我不确定是否以及如何应用他们的方法。 https://babyis60.wordpress.com/2015/02/04/the-jumping-janus/
更新
好的,我自己设法缩小了我的问题范围。PIXPRO 没有 RTP 支持,所以我坚持使用 JPEG 流。现在我正在尝试加速 paparazzo.js 实现,该实现读取相机的 TCP 响应并通过搜索帧之间的边界返回 JPEG。然后通过 http 响应提供这些 JPEG。我想通过使用 SocketIO 将这些帧推送到客户端并在那里呈现它们来加速这个过程。奇怪的是,数据在服务端似乎很好(当我通过 导出它时,我得到了一个有效的 JPEG 图像fs.writeFileSync('testimage.jpg', buffer, 'binary');
,但是在我通过 发送图像后,我无法让它在客户端工作io.sockets.emit("stream",{image: image});
。当我尝试通过在浏览器中显示此图像$("#video").attr("src", "data:image/jpeg;," + data.image);
,图像没有被正确解析。检查器显示视频源已更新,但只有一个二进制字符串。
webrtc - Janus-Gateway WebRTC 分辨率
我在 ubuntu 服务器上安装了 Janus-WebRTC 网关并开始创建多用户聊天和广播。何时运行此示例Janus 示例 在我自己的服务器中,无论我的上传带宽如何,我总是得到一个糟糕的分辨率 640x480。我试图更改 janus.js 上的默认值,但没有结果。
另一个可能有帮助的信息。当我运行 janus 并运行示例时,我收到此警告
[警告] 为视频获取大量 NACK(慢速上行链路),强制降低 REMB:65536
有没有办法处理这个问题以实现最佳分辨率?
centos - Janus WebRTC CentOS
我正在尝试在 CentOS 6.7 中安装 Janus Gateway,但我无法安装依赖项 sofia-sip,并且我还有其他问题,例如请求的 glib 和 libssl 大于我的版本。
我的问题是:
- 可以在 CentOS 中安装 Janus 吗?或者只需要克服依赖问题。
- 如果不可能,您知道 CentOS 有什么好的 webrtc 媒体服务器解决方案吗?
webrtc - IP 摄像头到 webRTC/ORTC 网关有哪些选择?Onvif 兼容与否
这里有一些关于这个话题的讨论,但不是针对我的问题。您可以将其视为对那里提出的问题的扩展。谷歌搜索只提供两种可能的解决方案:Kurento和Janus。我的问题是:
- 还有其他选择,开源还是其他?
在这些选项中,有人可以根据实际使用情况分享一些经验吗?
是否有与此类网关兼容的 IP 摄像机列表?或者
IP 摄像机必须具备哪些特定功能才能使用这样的 WebRTC 网关?
是否正确地说,如果 webRTC 确实起飞,那么 webRTC 对 IP 摄像机的支持只是时间问题,它将被纳入 Onvif 等标准中吗?
我不需要应用程序本身,只需要最低限度,以便可以插入其他 WebRTC 组件来创建应用程序。问题不仅与编解码器转换有关,还与一些相关信号有关(与无论如何都未标准化的 WebRTC 信号不同)。这在 Kurento 上得到了很好的讨论。
我还阅读了有关 IP 摄像机标准的信息,尤其是 Onvif。我不是在寻找与这个标准的任何兼容性,这是一个不同的问题。
我确实看过可以说是最流行的闭路电视摄像机开源软件: Z oneminder,但这是一个非常臃肿的软件,一个成熟的应用程序,不支持通过 webRTC 流式传输摄像机视频/音频。