问题标签 [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 投票
2 回答
396 浏览

node.js - 我只是想使用 mediasoup npm 但不知道如何记录来自 mediasoup npm 的流/对话

我只是用mediasoup npm 构建一个演示 webrtc 应用程序。我只是想记录对话以进行录音功能。但是 mediasoup 自述文件中没有与此功能相关的文档。

有没有办法使用这个 npm 或任何其他替代方法来实现这一点,使使用 nodejs 构建功能丰富的 webrtc 应用程序?

0 投票
0 回答
576 浏览

webrtc - SFU 与 Kinesis 视频流 SDK js

受KVS 示例的启发,我构建了一个 React.js 和 Node.js 应用程序。

它适用于少数参与者,大师可以通过 WebRTC 流式传输他的网络摄像头视频和音频,并获取每个观众的网络摄像头视频。但我们意识到它不适合 50 人,因为主 CPU 和网络会随着每个查看器连接而增加。对于每个查看器,都会使用 Master 创建一个 peerConnection。我们宁愿主人只将他的流发送一次到服务器(然后将其发送给观众)

我们想要一个 SFU 解决方案,可以使用 Javascript SDK 吗?建议 C SDK 使用 putMedia 和 GStreamer,javascript 中是否有等价物?

我看到 mediaSoup 可以做 SFU 部分,它可以与 Kinesis 一起使用吗?

0 投票
1 回答
728 浏览

webrtc - mediasoup 节点 server.js 错误(工作进程失败 [pid:undefined])

当我建立 mediasoup 环境时,进入目录“服务器”。我使用node server.js导致以下错误的命令:

mediasoup:ERROR:Worker worker process failed [pid:undefined]: spawn /root/mediasoup-demo/server/node_modules/mediasoup/worker/out/Release/mediasoup-worker ENOENT

错误截图

0 投票
3 回答
1725 浏览

docker - 带有 Docker 的 mediasoup v3

我试图在 docker 中运行一个2 WebRTC 示例(使用 mediasoup)

我想运行两台服务器,因为我正在跨一组实例进行视频通话!

我的错误:

你有没有看到这个错误:createProducerTransport null 错误:端口绑定失败,因为地址不可用[传输:udp,ip:'172.17.0.1',端口:50517,尝试:1/50000]

我认为这与设置docker网络有关?

码头工人-compose.yml

Dockerfile

0 投票
1 回答
570 浏览

node.js - 无法在真实服务器上使用 FFmpeg 记录 mediasoup 生产者

我已经为音频呼叫构建了一个不错的应用程序,非常感谢 MediaSoup !

为了更上一层楼,我需要记录我的一些电话。我使用了这个教程作为参考: mediasoup 录制演示

我遵循了 FFmpeg 的方式,并且已经达到了创建一个 plainTransport 的地步

然后我连接到这个传输:

我的第一个疑问:上面提供的 .connect({}) 参数中的 IP 地址是否正确?

其次,FFMPEG 命令需要一个 SDP 标头。这是我的:

当我开始录制时,FFMPEG 进程没有收到任何数据。此外,在停止时,我收到以下消息

输出文件为空,未编码(检查 -ss / -t / -frames 参数是否使用) 正常退出,收到信号 2. 录制过程退出,代码:255,信号:null

当服务器本身在本地主机上运行时,我能够使用 127.0.0.1 将录音保存在本地主机上。

但是,使用 Nginx 托管的实际服务器,我无法弄清楚出了什么问题。

我可以看到正在我的音频端口上发送的数据:

我该如何处理 FFmpeg 以便它开始录制!?

有人可以帮忙吗?

0 投票
0 回答
118 浏览

javascript - FFMPEG 停止直播到 Youtube

我有一个问题...FFMPEG 开始在 Youtube 上进行直播,大约 20 到 40 秒后停止录制。我的终端打印:

复用队列中第一个数据包和最后一个数据包之间的延迟为 10008000 > 10000000:强制输出

0 投票
1 回答
402 浏览

javascript - 直接修改url参数访问时收不到远程视频流

所以我开始玩在这里找到的简单 mediasoup 演示:https ://github.com/Dirvann/mediasoup-sfu-webrtc-video-rooms

我设置了演示,一切正常。

我要做的第一件事是添加 url 参数以绕过登录屏幕,这应该很容易,对吧?但是由于某些原因,当您通过直接修改 url 参数导航到房间时,它不会显示房间中其他用户的远程流!当用户使用登录表单加入房间时,它会显示房间中其他用户的流。

这让我感到困惑,因为无论您单击登录表单上的“加入”按钮,还是您的 url 已经存在参数,都在执行完全相同的 js 方法!

这里我将演示执行流程:

最初,我们有 1 个用户在 123 房间共享网络摄像头。第二个用户导航到没有相关参数的 url,因此,他们会看到登录表单: 在此处输入图像描述

检查详细信息后,用户意识到默认设置很好,然后继续单击加入按钮。这会调用一个简单的函数,通过更新 window.location.href 将房间和用户值添加到 URL(它会导致页面刷新)

页面刷新完成后,会出现必要的参数,这会导致视频室加载并显示远程流,如下所示: 在此处输入图像描述

但是,当我们不通过表单登录时,就会出现问题,我们直接将那些必要的参数添加到 url 中。如图所示: 在此处输入图像描述 这里应该有一个远程流,因为它与上图中的房间相同。我不知道为什么会出现这个问题。

这是我的 index.js 文件,我的更改都在斜杠内,靠近文件底部:

addParams 函数由 index.html 中的 Join 按钮直接调用,如下所示:

请注意:我修改的唯一文件是上面提到的那些。所有其他文件与演示的 github 存储库中的相同(链接在本文顶部。)

如果有人能帮助我深入了解这个问题,我将不胜感激。如果有 url 参数是什么导致房间被加入,为什么将参数放在 URL 中的方法似乎产生了如此显着的差异?

感谢您的时间和您可能提供的任何帮助!:)

0 投票
1 回答
457 浏览

javascript - 为什么用户加入房间时视频不显示?

因此,我对https://github.com/Dirvnn/mediasoup-sfu-webrtc-video-rooms进行了改编,我正在尝试适应使用 React 的 vanilla JS。在我的版本中,不是每个用户都是广播者,而是只有房间创建者才是广播者。

我遇到了一个问题。在 React 版本中,当查看者导航到房间时,他们没有收到流!我不知道为什么,因为他们使用相同的 RoomClient 类:https ://github.com/Dirvann/mediasoup-sfu-webrtc-video-rooms/blob/master/public/RoomClient.js

这条线const consumer = await this.consumerTransport.consume({ id, producerId, kind, rtpParameters, codecOptions, });似乎导致了问题,因为它后面的日志没有被打印出来。在消费函数中,执行了我的日志,上面写着“hi”,但没有执行“blah”。这是客户端控制台的屏幕截图: 在此处输入图像描述

最重要的功能如下所示。全班请点击上面的github链接。

非常感谢您的时间

- -更新 - -

这一行永远不会解决:const consumer = await this.consumerTransport.consume({ id, producerId, kind, rtpParameters, codecOptions, }) 它最终会从包中执行一些看起来很复杂的函数。实际上,在 mediasoup-client 中执行了几行之后,它似乎陷入了一个名为 sdp-transform 的包中的无限循环。

我什至不明白 chrome 调试器是如何工作的。因为如果我在调用的那一行上放一个断点...consume(...,然后单击'step',它会解析这一行:let answer = await this._pc.createAnswer()...这是一个名为 的函数的一部分,receive断点行没有调用它...拜托,有人帮助。

0 投票
1 回答
4720 浏览

linux - 如何生成 fullchain.pem 和 privkey.pem?

我正在尝试安装这个项目:https ://github.com/versatica/mediasoup-demo

它需要fullchain.pemprivkey.pem文件。如何在 Ubuntu 20 上使用 openssl 或类似的东西生成这些?

0 投票
2 回答
922 浏览

javascript - 我是否为 mediasoup 打开了错误的端口?

我正在尝试在 AWS Ubuntu 上启动它

它在本地主机上的 Chrome 下运行良好。(Firefox 存在问题,希望使用 HTTPS 远程运行会使问题消失。但这与这个问题无关。)

我使用 AWS 控制台打开了 readme.MD 上指定的端口(入站 TCP 到端口 3000,入站 UDP 到端口 40000-49999,允许所有传出流量。)

然后将 config.json 改编为:

使用我在 AWS 控制台上找到的值:( 在此处输入图像描述 无法复制/粘贴)

订阅视频不起作用,如此处所示:( 在此处输入图像描述 无法复制/粘贴)

(一段时间后,Chrome 的控制台显示mediasoup-client:Transport connection state changed to disconnected +17s

在我看来,好像我需要打开一两个额外的端口,但我不确定是哪一个。

我将非常感谢一些帮助。先感谢您... :)