问题标签 [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.

0 投票
0 回答
289 浏览

janus-gateway - 在我看到远程视频之前,Janus VideoRoom 插件订阅操作花费了太多秒


我正在使用 Janus VideoRoom 插件,我想订阅/取消订阅 2 个或更多不同的发布者。
前 4 或 5 个订阅(开始订阅 -> 让视频可见)需要 2-3 秒。
我称之为正常
但下一次订阅需要更多时间。
我称之为不正常
请告诉我我的错误在哪里?

这是我的 JS(打字稿)


这是我在 4 或 5 次正常订阅启动后的日志//观看
发布者的视频
// 停止上一个订阅
04:01:50 取消订阅状态= 已开始
04:01:50 发送离开命令...
04:01:50 取消订阅状态=STOPPING
04:01:50 unsubscribe state=STOPPING
04:01:50 onPluginMessage
04:01:50 msg:{"videoroom":"event","room":681365,"left":"ok"}
04:01:50 jsep:undefined
04:01:50 remoteFeed:[object Object]
04:01:50 离开房间
04:01:50 onCleanUp
04:01:50 视频停止
04:01:50 Closed PeerConnection
04:01:50 onCleanUp
// new订阅正常开始
04:01: 53 开始请求
04:01:53 initCallback
04:01:53 createSession
04:01:54 onStreamingServerCreateSuccess
04:01:54 attachPlugin 04:01:54
附加插件
04:01:54 参与者总数=1
04:01:54 canJoin=true
04: 01:54 subscriptionData={"request":"join","room":724240,"ptype":"subscriber","feed":3606687285964170,"private_id":680291}
04:01:54 onPluginMessage
04:01: 54 消息:{"videoroom":"attached","room":724240,"id":3606687285964170,"display":"724240"}
04:01:54 jsep:{"type":"offer","sdp":"v=0\r\no=- 1615780141548001 1 IN IP4 185.12.12.24\r\ns=VideoRoom 724240\r\nt=0 0\r\na=group:BUNDLE audio video\r\na=msid-semantic: WMS janus\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP4 185.12.12.24\r\ na=sendonly\r\na=mid:audio\r\na=rtcp-mux\r\na=ice-ufrag:NVx5\r\na=ice-pwd:Tz3hjJNIxACUULUbBBREaL\r\na=ice-options:trickle\ r\na=指纹:sha-256 53:C2:82:E2:61:73:BC:B5:0D:66:E8:2E:11:90:97:66:92:52:62:FE:2C :6B:45:95:A1:EF:08:D6:05:C6:8E:A1\r\na=setup:actpass\r\na=rtpmap:111 opus/48000/2\r\na=extmap: 1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=rtcp-fb:111 transport-cc \r\na=msid:janus janusa0\r\na=ssrc:3479227141 cname:janus\r\na=ssrc:3479227141 msid:janus janusa0\r\na=ssrc:3479227141 mslabel:janus\r\na=ssrc:3479227141 标签:janusa0\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97\r\nc=IN IP4 185.12.12.24\r\na=sendonly\r\na=mid:video\r\na=rtcp -mux\r\na=ice-ufrag:NVx5\r\na=ice-pwd:Tz3hjJNIxACUULUbBBREaL\r\na=ice-options:trikle\r\na=指纹:sha-256 53:C2:82:E2: 61:73:BC:B5:0D:66:E8:2E:11:90:97:66:92:52:62:FE:2C:6B:45:95:A1:EF:08:D6:05: C6:8E:A1\r\na=setup:actpass\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\ na=rtcp-fb:96 nack pli\r\na=rtcp-fb:96 goog-remb\r\na=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap: 3A1\r\na=setup:actpass\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp- fb:96 nack pli\r\na=rtcp-fb:96 goog-remb\r\na=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:3A1\r\na=setup:actpass\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp- fb:96 nack pli\r\na=rtcp-fb:96 goog-remb\r\na=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:3http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext /playout-delay\r\na=extmap:13 urn:3gpp:video-orientation\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=ssrc-group: FID 462666388 1246572010\r\na=msid:janus janusv0\r\na=ssrc:462666388 cname:janus\r\na=ssrc:462666388 msid:janus janusv0\r\na=ssrc:462666388 mslabel:janus\r\na =ssrc:462666388 标签:janusv0\r\na=ssrc:1246572010 cname:janus\r\na=ssrc:1246572010 msid:janus janusv0\r\na=ssrc:1246572010 mslabel:janus\r\na=ssrc:1246572010 标签:janusv0\r\n"}
04:01:54 remoteFeed:[object Object]
04:01:54 创建并附加订阅者
04:01:54 创建答案
04:01:54 onSubscriberGotRemoteStream this.state=STARTING
04:01:54 视频开始
04:01:54 onSubscriberGotRemoteStream this.state=
STARTED 04:01:54 onSubscriberGotRemoteStream this.state=
STARTED 04:01:54 获得 SDP![RTCSessionDescription]
04:01:54 此 WebRTC PeerConnection 的 ICE 状态更改为检查
04:01:54 此 WebRTC PeerConnection 的 ICE 状态更改为已连接
04:01:55 onPluginMessage
04:01:55 msg:{"videoroom":" event","room":724240,"started":"ok"}
04:01:55 jsep:undefined
04:01:55 remoteFeed:[object Object]

//正常开始订阅耗时 2 秒
// 观看发布者的视频
/ / 停止上一个订阅

04:09:55 取消订阅状态=STARTED
04:09:
04:09:55 取消订阅状态=STOPPING
04:09:55 取消订阅状态=STOPPING
04:09:55 onPluginMessage
04:09:55 msg:{"videoroom":"event","room":681365,"left": “ok”}
04:09:55 jsep:undefined
04:09:55 remoteFeed:[object Object]
04:09:55 离开房间
04:09:55 onCleanUp
04:09:55 视频停止
04:09:56 关闭 PeerConnection
04:09:56 onCleanUp

// 新订阅UNNORMAL开始

04:09:58 开始请求
04:09:58 initCallback
04:09:58 createSession
04:09:58 onStreamingServerCreateSuccess
04:09:58 attachPlugin
//巨大的暂停!!!
04:10:17 附加插件
//巨大的停顿!!!
04:10:22 参与者总数=1
04:10:22 canJoin=true
04:10:22 subscriptionData={"request":"join","room":724240,"ptype":"subscriber","feed" :3606687285964170,"private_id":680291}
04:10:28 onPluginMessage
04:10:28 msg:{"videoroom":"attached","room":724240,"id":3606687285964170,"display":"724240" }
04:10:28 jsep:{"type":"offer","sdp":"v=0\r\no=- 1615780141548001 1 IN IP4 185.12.12.24\r\ns=VideoRoom 724240\r\nt=0 0\r\na=group:BUNDLE audio video\r\na=msid-semantic: WMS janus\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP4 185.12.12.24\r\ na=sendonly\r\na=mid:audio\r\na=rtcp-mux\r\na=ice-ufrag:WETD\r\na=ice-pwd:ch2L786bEYlY6OIi+AJ4no\r\na=ice-options:涓涓细流\r\na=指纹:sha-256 53:C2:82:E2:61:73:BC:B5:0D:66:E8:2E:11:90:97:66:92:52:62:FE :2C:6B:45:95:A1:EF:08:D6:05:C6:8E:A1\r\na=setup:actpass\r\na=rtpmap:111 opus/48000/2\r\na= extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=rtcp-fb:111 传输-cc\r\na=msid:janus janusa0\r\na=ssrc:1576733354 cname:janus\r\na=ssrc:1576733354 msid:janus janusa0\r\na=ssrc:1576733354 mslabel:janus\r\na= ssrc:1576733354 标签:janusa0\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97\r\nc=IN IP4 185.12.12.24\r\na=sendonly\r\na=mid:video\r\na=rtcp -mux\r\na=ice-ufrag:WETD\r\na=ice-pwd:ch2L786bEYlY6OIi+AJ4no\r\na=ice-options:trikle\r\na=指纹:sha-256 53:C2:82: E2:61:73:BC:B5:0D:66:E8:2E:11:90:97:66:92:52:62:FE:2C:6B:45:95:A1:EF:08:D6: 05:C6:8E:A1\r\na=setup:actpass\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\ r\na=rtcp-fb:96 nack pli\r\na=rtcp-fb:96 goog-remb\r\na=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=外部地图:3A1\r\na=setup:actpass\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp- fb:96 nack pli\r\na=rtcp-fb:96 goog-remb\r\na=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:3A1\r\na=setup:actpass\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp- fb:96 nack pli\r\na=rtcp-fb:96 goog-remb\r\na=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:3http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext /playout-delay\r\na=extmap:13 urn:3gpp:video-orientation\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=ssrc-group: FID 4137684267 1240900261\r\na=msid:janus janusv0\r\na=ssrc:4137684267 cname:janus\r\na=ssrc:4137684267 msid:janus janusv0\r\na=ssrc:4137684267 mslabel:janus\r\na =ssrc:4137684267 标签:janusv0\r\na=ssrc:1240900261 cname:janus\r\na=ssrc:1240900261 msid:janus janusv0\r\na=ssrc:1240900261 mslabel:janus\r\na=ssrc:1240900261 标签:janusv0\r\n"}
04:10:28 remoteFeed:[object Object]
04:10:28 创建并附加订阅者
04:10:28 创建答案
04:10:28 onSubscriberGotRemoteStream this.state=STARTING
04:10:28 视频开始
04:10:28 onSubscriberGotRemoteStream this.state=
STARTED 04:10:28 onSubscriberGotRemoteStream this.state=
STARTED 04:10:28 获得 SDP![RTCSessionDescription]
04:10:28 此 WebRTC PeerConnection 的 ICE 状态更改为检查
04:10:28 此 WebRTC PeerConnection 的 ICE 状态更改为已连接
04:10:35 onSubscriberGotRemoteStream this.state=
STARTED 04:10:47 onPluginMessage
04: 10:47 msg:{"videoroom":"event","room":724240,"started":"ok"}
04:10:47 jsep:undefined
04:10:47 remoteFeed:[object Object]

// UNNORMAL开始订阅耗时 49 秒

0 投票
0 回答
128 浏览

android - android janus webrtc ondatachannel未触发

我已经让 Janus videoroom 正常工作,现在我想实现 DataChannel 在设备之间相互发送消息

我设置了数据:当发布者发送配置和订阅者加入时为真

这是给订户的

为发布者创建对等连接后,我创建了数据通道:

但我从来没有看到 onDataChannel 被触发,有人可以帮忙吗?

据我所知DataChannel,当 Peer A 已经拥有 datachannel 对象时,Peer B 将在触发 onDataChannel 时接收 datachannel

0 投票
0 回答
471 浏览

webrtc - Janus-gateway:ReferenceError:未定义适配器

我试图遵循 Janus videoroom示例,但在 Janus 实例上调用 attach 时出现错误:

这不允许我获得 videoroom pluginHandle 所以我无法与插件通信。

以下是我尝试制作的代码片段:

作为 Janus 服务器,我使用本地服务的 docker 映像:https ://github.com/canyanio/janus-gateway-docker

任何帮助将不胜感激。谢谢!

0 投票
1 回答
150 浏览

javascript - 在 React Js 中实现 Quickblox 视频会议时获取“DTLS 警报”

我正在我的 React 应用程序中实现 Quickblox 视频会议服务 - 但是我已经在我的 react 应用程序中实现了 Quickblox SDK,并且所有 Quickblox 功能都运行良好。在控制台中,我检查了函数的响应,它们也运行良好。每当系统尝试将我的 localMediaStream 附加到流媒体服务器时,它都会给我这个错误:

我认为这可能是 SSL 的问题,因为它部署在我的本地 MacOS 机器上,所以我将它部署在启用 SSL 的 Live Server 上,但错误仍然相同。这是我正在使用的代码:

日志:

截屏: 我本地机器的截图

解决的步骤:

  • 验证我的本地机器的防火墙已禁用
  • 已验证任何 HTML 块都不会阻塞相机空间
  • 将最终版本上传到启用 SSL 的 Live 服务器,但仍然存在错误

研究了很多小时,但找不到任何关于此的信息。任何帮助,将不胜感激。

提前致谢。

0 投票
0 回答
92 浏览

janus-gateway - Janus RTC:在 WebRTC 中查看的 RTMP 广播

是否可以从 Android 等移动设备广播/发布 RTMP 流,发送到 Janus 网关(媒体服务器)并通过 web 应用程序中的 webrtc 查看?

如果有的话,也有人可以分享这种方法的优势吗?

0 投票
0 回答
78 浏览

webrtc - 使用媒体服务器进行流式传输;使用 RTMP 与 WebRTC 的优势是什么

我们即将开始一个流媒体项目,我们现在正在考虑选项,我们正在考虑的一个选项是我们使用 RTMP 在移动 Android(或 iOS)中流式传输,在后端媒体服务器(Antmedia 或 Janus)中广播和流/使用 RTMP 在移动设备上播放,但对于网络用户,他们将通过 WebRTC 流式传输(因为 RTMP 支持仅在 Flash 中有效)。

这种方法有什么优点,或者这种方法有什么优点和缺点?这是完整 WebRTC 方法的替代方案,其中移动设备向媒体服务器广播和发布 WebRTC,在 WebRTC 中为移动和 Web 用户播放和流式传输。

两种方法的任何优点/缺点?

(对不起,流媒体世界有点新,经理们提出了这样的问题)

0 投票
0 回答
106 浏览

python-3.x - 如何激活 virtualenv 并在 ansible 中安装包

免责声明:我不确定以前是否有人问过这个问题。不管,

我有一个简单的剧本,任务很少。我可以通过任务安装 virtualenv

但是我无法激活和安装我需要的软件包。这是我迄今为止尝试过的

这里的变量是

我得到的错误是

我不确定我在这里做错了什么。任何线索将不胜感激。

0 投票
0 回答
120 浏览

node.js - 我们如何使用 janus webrtc.. 在视频会议应用程序中创建房间?

大家好,我是编程新手,我开始使用 JANUS webRTC 在视频会议应用程序中做一个项目。后端我计划使用节点来注册和签署路线,但我一直在为房间创建 API。前端我打算使用 Reactjs 有人请帮助我继续前进..

0 投票
1 回答
930 浏览

javascript - 简单的 WebRTC 网页在 Chrome 和 Safari 中运行良好,但在 Firefox 中不行

背景
我正在构建一个局域网,带有树莓派相机模块和 USB 麦克风的 WebRTC 婴儿监视器。流是用 GStreamer 合成的,我使用 Janus Gateway 来促进 Web 浏览器和 Pi 之间的 WebRTC 连接。网页和 Javascript 是Meetecho 提供的流媒体演示的精简版。

这是我第一次使用这些技术中的许多,目前我对故障排除有点不知所措。我无法弄清楚为什么该网页在 Chrome 和 Safari 中有效,但在 Firefox 中无效。

它在 Chrome 和 Safari 上运行良好: Chrome 中的应用程序

在 Firefox 中,WebRTC 连接似乎已成功建立和维护(基于 Chrome 和 Firefox 之间的网络流量和控制台输出的比较),但页面似乎在此过程中的某个地方被赶上了: 它在Firefox中不起作用

比较控制台在比较ChromeFirefox
的控制台输出时,它们是相同的,直到此时两个控制台都报告但可能出于不同的原因?Uncaught (in promise) DOMException:

  • 火狐说Uncaught (in promise) DOMException: The fetching process for the media resource was aborted by the user agent at the user's request.
  • 铬 说Uncaught (in promise) DOMException: The play() request was interrupted by a new load request.

这些是具有不同“提示”的相同错误吗?还是由于浏览器之间的一些潜在差异,它们实际上是不同的错误?

在此处输入图像描述

在此错误之后,Firefox 立即通过报告Remote track removed.

我不确定我是否在 JS 中做了一些愚蠢的事情来导致这种情况,或者我是否缺少关于 Firefox 的一些细微差别。

其他可能有用的细节?
下面是页面的html (index.html)javascript (janus_stream.js)的一部分,pastebin 链接包含整个 janus_stream.js。

我也在使用提供的janus.js API Meetecho

问题

  • 我做错了什么阻止它在 Firefox 中工作?
  • 不同的控制台输出可以告诉我我做错了什么?
  • 您对在哪里查看/尝试什么以使其在 Firefox 中工作有任何建议吗?

非常感谢任何指针或想法!如果我可以提供其他信息,请告诉我。

谢谢!

更新:理论/可能的答案?
为了解决该Uncaught (in promise) DOMException: The fetching process for the media resource was aborted by the user agent at the user's request.错误,我将 video.play() 更改为 video.load()。这解决了错误,但相同的Remote track removed“无远程视频”行为仍然存在。

与此同时,我可能发现了更根本的问题:Pi 的视频流是 H264,据我所知,Firefox 不支持这种格式?也许这就是我在使用 Firefox 时遇到问题的原因?

你们中的任何人都可以确认或否认这是真正的问题吗?

0 投票
0 回答
140 浏览

gstreamer - 如何从收音机流式传输并使用 gstreamer 将其转换为 opus 并将其发送到 Janus?

我正在尝试使用这个 .sh 将 gstreamer 流式传输到 Janus:

但收到此错误:

有任何想法吗?