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

webrtc - WebRTC H264 连接 - 奇怪的配置文件级别 ID

我正在尝试在 RTSP 相机和浏览器之间建立 WebRTC 连接。cam 创建了一个很好的 h264 流,在 VLC 播放器中播放良好。对于 WebRTC,我正在使用Janus

摄像头流在 Chrome 和 FF 中都没有播放,因为它提供了一个奇怪的配置文件级别 ID:ffffc028。

如果我强迫 Janus 提供一个众所周知的配置文件级别 ID(这显然是一个 hack!),Chrome 可以播放流,但 FF 在第一个关键帧接收后立即崩溃。

相机流由v4l2rtspserver创建。

请帮我确定这个profile-level-id在哪里。

它是否有效?

0 投票
2 回答
1367 浏览

google-chrome - Google Chrome 中 ctrl-r、F5 和刷新按钮的区别

我有一个应用程序,它利用 janus-gateway 将 gstreamer 生成的 RTP 流转发到在 google chrome 中运行的 vuejs 客户端。有时在页面刷新时,视频元素中不会显示视频。此问题发生的频率因刷新页面所用的方法而异。例如 ctrl-r 工作约 20 次而没有失败,而按下浏览器刷新按钮只工作 2 次,然后每次尝试都失败。刷新按钮的“硬重新加载”和“空缓存和硬重新加载”选项不会影响失败的频率。

查看 chome://webrtc-internals 时,我看到带宽进入浏览器。janus-gateway admin api 也表明它正在发送正确的带宽。这让我认为这个问题与 chrome 中的资源绑定有关。

ctrl-r、F5和刷新按钮有什么区别?他们是否清除了不同的资源?

此行为始于 chrome 版本 71,在 chrome 版本 70 及更早版本中不可重现。

0 投票
2 回答
3241 浏览

flutter - 无法 RTCPeerConnection::setRemoteDescription: 无法设置远程报价 sdp: 无法设置远程视频描述发送参数

当我从 janus-gateway 获取 sdp 并尝试将其设置为远程描述时,我使用 webrtc 颤振插件在我的 android webrtc 应用程序上不断收到此错误。

我尝试调整 sdp 因为我认为它无法解析字符串,但它不起作用。

0 投票
2 回答
11375 浏览

video-streaming - 从 ffmpeg 通过 Janus 流式传输的 H264 WebRTC 视频在播放时非常不稳定

尝试通过以下链流式传输视频:本地实例存储 (AWS) 上的 h264/mp​​4 文件->ffmpeg->rtp->同一实例上的 Janus->WebRTC 播放 (Chrome/mac)。即使没有任何资源似乎超载(所涉及的任何系统上的 CPU/内存/网络带宽),生成的视频也会断断续续。我也使用 Coturn TURN 服务器,它也完全没有加载,带宽也很充足。

尝试切换编解码器并没有帮助,除了 vp8 工作时(有点 - 波动仍然存在,但非常罕见且可以接受),导致 CPU 消耗如此之高,实际上它是不可接受的。

ffmpeg -re -stream_loop -1 -i ./short.mp4 -s 426x240 -c:v libx264 -profile:v baseline -b:v 1M -r 24 -g 60 -an -f rtp rtp://127.0.0.1:5004

结果 SDP 为:

流使用 Janus API 设置为

尝试了各种bw选项,根本没有帮助。将 -g(GOP 大小)更改为较低的值可以使波动持续时间更短但更频繁。在 -g 3 或 4 时,这是可以接受的,但可以预见的是,可容忍质量的比特率变得疯狂。

预期结果:视频播放没有断断续续。

我的理论是它可能是以下之一:

  • ffmpeg 以缓冲区太小的方式提供数据,因此有时 Janus 需要在尚未准备好时发送下一个数据包,使缓冲区不足并导致中断 - 所以也许有一种方法可以使 ffmpeg 编码为某种短(半秒左右?缓冲来调节流量)。如何?

  • 或者 H264 在 UDP 上的性能太差了,我无能为力。然后我不得不切换到 TCP,但到目前为止尝试这样做没有成功。

0 投票
3 回答
1605 浏览

webrtc - Can Janus WebRTC server implement server-side peer?

I've been reading about Janus, looked at the examples. I'm looking for a webRTC component that I can use in the following way:

  1. Receive RTP video packets from some external sender
  2. Become a WebRTC peer and connect to an external WebRTC signaling server, STUN, TURN, the usuals
  3. Send the incoming RTP packets as a coherent video via the WebRTC peer connection to some other peer on a browser on the Internet

Is Janus the right tool? Maybe there are other tools? Would appreciate some directions..

Thanks!

0 投票
0 回答
751 浏览

ffmpeg - 我在来自 ffmpeg 的 Janus 流中遇到音频和视频不同步的问题

我正在使用 Janus Gateway 流式传输从视频文件中获取并由 ffmpeg 编码的视频。该项目的目标要复杂得多,但我试图将其减少到尽可能低的程度以帮助故障排除。

编码是这样完成的:

我正在使用 Streaming 插件,并且流似乎没有任何技巧配置:

这是我的流媒体插件和 Janus 配置的链接 - 我尝试使用 nack 队列长度和 dtls 超时参数进行一些操作,但无济于事,它们不会改变任何东西。

https://codeda.com/data/janus.jcfg.txt https://codeda.com/data/janus.plugin.streaming.jcfg.txt

生成的视频(WebRTC 播放器页面的屏幕截图)在这里:https ://codeda.com/data/janusSyncIssue.mp4 - 如您所见,视频和音频之间存在相当大的不同步。

如我所见,问题在于视频流和音频流是分开发送的,或者不包含时间码,或者由于某种原因被忽略。显然编码视频和编码音频需要不同的时间,对于视频来说更多,所以会导致视频延迟。

我怀疑这个是对的吗?如果是这样,我该如何解决这个问题?我想有一些 ffmpeg 设置或 Janus 流插件设置。

啊,是的,该服务器上的处理器几乎是免费的,80-85% 是免费的。肯定不是处理器问题。

0 投票
1 回答
1862 浏览

raspberry-pi - 来自 Raspberry Pi 的 WebRTC H.264 视频流仅适用于 Pi 摄像头,不适用于 USB 摄像头

我已将 Janus 设置为通过 WebRTC 从 Raspberry Pi 流式传输 H.264 视频。当我使用 Pi 相机时它可以工作。但是当我使用 USB 网络摄像头 (Logitech C270) 时,视频不会显示在浏览器中。

Pi Camera 流式传输和 USB 网络摄像头流式传输的配置和命令行参数几乎相同。唯一的区别是 Pi Camera,我使用raspivid它来生成 H.264 编码视频,然后通过管道将ffmpeg其用作 RTP 流。而使用 USB 网络摄像头,我直接使用ffmpeg从 V4L2 设备获取输入并将其编码为 H.264。

更具体地说,使用 Pi Camera,我的命令是:

raspivid -t 0 -n -fps 20 -pf baseline -b 700000 -o - | ./ffmpeg -re -i - -c:v copy -bsf dump_extra -an -r 20 -f rtp rtp://0.0.0.0:8004?pkt_size=1300

而使用 USB 摄像头(Legitech C270),我的命令是:

./ffmpeg -f v4l2 -i /dev/video0 -bsf dump_extra -an -r 20 -codec:v h264_omx -profile:v baseline -f rtp rtp://0.0.0.0:8004?pkt_size=1300

Janus 配置完全相同。

当视频未显示时,Javascript 控制台或 Janus 控制台上没有打印错误。chrome://media-internals/也不显示任何错误。

如何进一步调试此问题?

0 投票
1 回答
491 浏览

html - 无法在 Chrome 上设置远程报价 sdp

我正在使用 Janus Gateway 将我的视频从 Gstreamer 流式传输到 Html。它在 Firefox 的情况下工作正常,但在 Chrome 上失败并出现以下错误:

streamingtest.js:166 WebRTC error: DOMException: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote offer sdp: Failed to set remote video description send parameters.

我试图检查是否有人遇到了同样的问题,但找不到任何关于他们如何解决它的解决方案。

我正在使用演示 js 脚本在前端渲染视频。以下是我的 SDP:

按照我用来启动 GStreamer 的命令:

v4l2src ! videoconvert ! videoscale ! videorate ! video/x-raw,width=640,height=480,framerate=15/1 ! videoconvert ! x264enc tune=zerolatency ! h264parse ! rtph264pay config-interval=1 pt=96 ! udpsink host=127.0.0.1 port=8080

在过去的两天里,我一直在用头撞墙,但无法解决问题。任何帮助,将不胜感激。我尝试了演示中给出的任何内容,但没有帮助。

0 投票
1 回答
384 浏览

gstreamer - rtpvp8depay + rtpvp8pay 似乎在 Janus 网关上引入了工件

VP8 流来自 Janus Videoroom 插件,在本地重新流式传输到 10002/10004。从那里,它被以下 gstreamer 管道拾取:

并发送到流插件。正如你所看到的,这里没有转码,只是depayloading和payloading。生成的视频在某些关键帧上分解为伪影,大约在 10 个关键帧中出现一次,只能在下一个关键帧上修复。

如果我删除 depay and pay,只需在 rtp 级别转发,即可获得此

它永远不会发生。

我知道这不是 Janus 问题,而是 gstreamer 问题。但也许有人知道可能是什么问题?这已经过非常可靠的测试,在前一种情况下问题很容易重现,而在后一种情况下永远不会发生。

当然,我所做的目标是转码,在我将其归结为这个级别之前,设置和管道中还有很多内容。转载于安装在全新 Ubuntu 18.04 机器上的 Janus,具有所有开箱即用的设置。

更新:

揭示了此错误消息,每次出现工件时都会退出:

“12”的数字通常在 5 到 12 之间波动。

0 投票
4 回答
3281 浏览

webrtc - CentOS7安装janus-gateway报错

我想在 CentOS7 上安装 janus-gateway。我阅读了以下文档并尝试安装。 https://github.com/meeetecho/janus-gateway/blob/master/README.md

但是,配置 janus-gateway 会导致错误。错误如下。

我通过以下方式安装了 libnice(libnice-0.1.3-4.el7.x86_64)。

我该如何解决?谢谢你。