问题标签 [mediasoup]

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 投票
1 回答
2101 浏览

openssl - WebRTC 服务器(mediasoup)抛出 SSL 错误,但仅适用于 Firefox(?!)

我在一个独立的机器上运行流行的开源mediasoup WebRTC 服务器,没有防火墙,安装了新的 SSL 证书,并且机器上几乎没有运行其他任何东西(没有 Web 服务器,没有数据库服务器,什么都没有)。当我的视频聊天应用程序尝试通过此服务器将视频流式传输到使用 Firefox 的客户端时,mediasoup 发出 SSL 错误(下面的第 2 行):

现在这很奇怪,这只发生在 Firefox 浏览器上。对于 Safari、Chrome 和 Safari iOS(手机/iPad),完全没有问题。如果我有 5 个人在我的视频聊天室中进行广播,我可以打开这些人并从其他浏览器观看/流式传输视频,而不会出现任何问题。但是 Firefox(最新版本,开发者版和常规 Firefox)导致 mediasoup 抛出 SSL 错误,并且流无法解析并将视频显示给用户。

mediasoup 在端口 8443 上运行,我也在端口 443 上尝试过。我检查了调试日志,找不到任何其他问题——就是这个 SSL 问题。

我想也许我的 Let's Encrypt 证书不好,所以我已经撤销、删除并重新颁发了域的 SSL 证书。那里没有问题或任何奇怪的东西。

我已经运行openssl s_client -connect [my domain running mediasoup].com:8443 -showcerts了,一切看起来都很好,证书也很好——格式与我的 Web 服务器机器上的有效证书的输出相同,也与朋友的 WebRTC 服务器的输出相同。我也试过openssl s_client -host [my domain].com -port 8443 -cert /etc/letsencrypt/live/[my domain].com/cert.pem -key /etc/letsencrypt/live/[my domain].com/privkey.pem机器本身,一切都很好。所以我不认为这是证书。

由于只有 Firefox 出现了这些问题,我想可能是 Firefox 以某种方式缓存了一个旧的/无效的证书,所以我删除并清理了 Firefox 的缓存,还查看了我的 Mac 的钥匙串访问应用程序,看看那里是否有该域的证书mediasoup 在哪里运行(没有)。

到底是怎么回事?!;-) 为什么 Firefox——而且只有 Firefox!——会导致 mediasoup 抛出这个错误,并阻止我的 Firefox 用户使用视频聊天?再次重申:使用 Chrome、Safari、iPad/iPhone,一切都可以完美运行。

(或者,我怎样才能让 mediasoup-worker 进程告诉我更多关于它为什么不喜欢 SSL 证书的信息?)

(另外,为什么只有 Firefox 有问题?它可能是存储在 Firefox 中的证书,它发送到 mediasoup 服务器与之交谈?我知道 WebRTC 协议很复杂并且有很多协商,也许这就是它的一部分......就像它可能指的是与服务器域上的证书不同的证书?)

0 投票
2 回答
2281 浏览

webrtc - WebRTC:我需要 TURN 服务器吗?(这会有帮助吗?)

我有一个使用 WebRTC 和 mediasoup 服务器的网络摄像头聊天室应用程序(所以它是多对多视频共享)。

我遇到了一些问题,我的一些用户无法让传入的视频供稿正常工作。这是一个难题,因为我根本无法重现它,而且我不能轻易地“远程调试”这个问题,因为我的大多数用户都非常不懂技术。到目前为止,我唯一可以确定的是它似乎与网络相关,而不是与浏览器相关,因为我收到了来自使用 Firefox、Chrome、Safari 和 Edge 的人的错误报告。我在端口 443 上运行我的服务器(mediasoup v2),服务器盒上没有防火墙,因此应该使门尽可能宽。我只是不知道确切的问题是什么,所以我感觉在黑暗中。

所以,我正在尝试解决方案。我不认为(?)我设置了 TURN 服务器,但从我所读到的内容来看,添加一个服务器似乎肯定不会受到伤害,并且可以帮助解决我的情况。

我不完全理解整个 WebRTC 协议或 RFC 7118(这东西真的很复杂!)或者 TURN 服务器到底是什么/在哪里/如何适应更大的图景。这会有所帮助,对吧?很多谷歌搜索导致没有明确的答案。希望得到一些帮助!谢谢!

0 投票
1 回答
2782 浏览

webrtc - 为什么使用两个以上 STUN/TURN 服务器会减慢发现速度?

我正在为我的 WebRTC 应用程序(建立在 mediasoup 之上)传递一些 STUN 和 TURN 服务器。当我这样做时,我在控制台中收到一条消息,告诉我:“使用两个以上的 STUN/TURN 服务器会减慢发现速度”

我可以将服务器减少到 2 个……但是……为什么更多的伤害?我不希望有最多的可用选项来建立连接吗?

0 投票
1 回答
333 浏览

webrtc - 服务器端实时分析来自客户端的视频流

我正在尝试构建一个系统,用于在服务器上对使用 WebRTC 从客户端流式传输的视频进行实时分析。

这是我目前的想法。我会从客户端捕获网络摄像头视频流并将其(使用 H.264 压缩?)发送到我的服务器。

在我的服务器上,我将接收流和每个原始帧到我的 C++ 库进行分析。

然后,分析的输出(要绘制的框坐标)将通过 WebRTC 或单独的 WebSocket 连接发送回客户端。

我一直在网上寻找,发现像 Kurento 和 Mediasoup 这样的开源媒体服务器,但是,由于我只需要读取流(无需发送到其他客户端),我真的需要使用现有的服务器吗?或者我可以自己构建它,如果可以,从哪里开始?

总的来说,我对 WebRTC 和视频流世界还很陌生,所以我想知道,这整件事对你来说是否正确?

0 投票
3 回答
1246 浏览

flutter - 在没有 mediasoup-client 的情况下使用来自 Flutter dart 客户端的 mediasoup 服务器

我想将 Flutter 应用程序中的 mediasoup 服务器用于两个用例。

  1. 将流发送到服务器以在服务器端记录(首选 ffmpeg)。
  2. 一对一或小组最多 4 个实时视频聊天。

我想从发送到服务器的单个流的简单选项开始,为此我想使用https://github.com/ethand91/mediasoup3-record-demo作为参考。

我的问题是 mediasoup 在实现 webRTC 客户端时并没有使用我所知道和习惯的标准提供和应答流,并且在所有 mediasoup 示例中,他们使用 mediasoup-client 实际上使用 rtpCapabilities 而不是常用的 SDP 格式。

我确实找到了这个善意的回购:https ://github.com/cloudwebrtc/flutter-mediasoup-client 但到目前为止它看起来只是意图。

所以我的问题是,我应该使用什么流程来为客户端应用程序提供 SDP,或者如何从 mediasoup 传输和路由器 rtpCapabilities 获取 SDP 格式。另外,如果我自己构建 SDP,流程应该是什么?

是否有意义?

任何不同的方法也将受到赞赏。

谢谢。

0 投票
2 回答
3521 浏览

node.js - SFU.、Janus、mediasoup 或 medooze 的作用是什么。在 webRTC 应用程序上

我正在使用带有简单对等npm 包的webRTC应用程序。

我想知道所有这些主题(SFU.、Janus、mediasoup 或 medooze。)的目的是什么,以及如何整合它们以提高我的应用程序性能?

PS:我正在使用node.js服务器捆绑我架构上对等方之间的请求和信令。这些服务器和服务是使我的应用程序性能良好所必需的吗?

希望我能在这里找到答案...

0 投票
0 回答
403 浏览

javascript - 错误 MSB4186:无效的静态方法调用语法

我正在尝试在我的一个 NodeJS 项目上设置 MediaSoup。在我的 PC 中,我运行了 Visual Studio 2019 Community 版本,我按照 MediaSoup 文档中的说明进行操作,但是在尝试从终端安装 MediaSoup 时,我不断收到此错误:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.Cpp.props(29,5):错误 MSB4186:无效的静态方法调用语法:“[Microsoft.Build .Utilities.ToolLocationHelper]::FindRootFolderWhereAllFilesExist($(_VCTargetsPathFolders), $(_RelativeToolsetFiles))"。找不到方法“Microsoft.Build.Utilities.ToolLocationHelper.FindRootFolderWhereAllFilesExist”。静态方法调用应采用以下形式:$([FullTypeName]::Method()),例如 $([System.IO.Path]::Combine(`a`, `b`))。[C:\Projects\NodeJS\CribMd\CribMd-Api\node_modules\mediasoup\worker\deps\getopt\getopt.vcxproj]

我究竟做错了什么?

0 投票
0 回答
190 浏览

webrtc - mediasoup UP 但不转发

我在让mediasoup_v3_example正常工作时遇到问题。

我已经创建了一个远程服务器并部署了代码。从终端看起来一切都很好,我可以看到客户端正在连接。我可以加载“html”页面并启动媒体,我可以点击发布,但每当人们订阅时,他们只会收到一个空框。

我正在使用 Ubuntu 笔记本电脑、Macbook 和 Android 手机进行测试。

这是仅尝试运行广播示例的输出

这是客户端控制台

我还将服务器文件的顶部更改为

感谢您的任何帮助/想法

0 投票
1 回答
1423 浏览

webrtc - WebRTC:如何为视频编码器启用硬件加速

我正在尝试在 WebRTC 的帮助下将屏幕截图的视频发送到 mediasoup。WebRTC 库中有一个类:ScreenCapturerAndroid。它可以工作,但是某些设备上的性能确实很差。特别是如果我使用高清或更好的显示分辨率。

在 stackoverflow 上,我找到了调用setEnableVideoHwAcceleration(true)setVideoHwAccelerationOptions()的建议。但在较新版本的 WebRTC 库中,这些方法已被删除

这是我的代码:

我的问题是:如何使用较新的 WebRTC 库版本为屏幕捕获启用视频硬件加速。

0 投票
1 回答
723 浏览

javascript - WebRTC 'playoutDelayHint' 自动同步所有曲目

我编写了一个简单的应用程序,它从一个主服务器流向多个客户端。由于 Master 可能使用类似 IP 网络摄像头(具有约 1 秒延迟)但内部麦克风(无延迟)之类的东西,我想为音轨添加延迟。不幸的是,延迟似乎在 Firefox 上不起作用,在 chrome 上它自动将所有曲目同步到最高设置的 playoutDelayHint。所以一切都会延迟一秒钟。我检查了两个轨道的两个消费者 RTPreceivers 值,只有音频将 playoutDelayHint 设置为一秒,这不会随着时间而改变,但在流式传输几秒后,视频也会延迟一秒。

即使我添加了另一个视频元素和另一个媒体流,所以每个流(消费者)都得到它自己的 html 元素,我仍然得到相同的效果:

是否可以仅延迟一首曲目,为什么仅延迟(有点)在 chrome 上起作用?提前致谢。:)