问题标签 [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.
webrtc - WebRTC H264 连接 - 奇怪的配置文件级别 ID
我正在尝试在 RTSP 相机和浏览器之间建立 WebRTC 连接。cam 创建了一个很好的 h264 流,在 VLC 播放器中播放良好。对于 WebRTC,我正在使用Janus。
摄像头流在 Chrome 和 FF 中都没有播放,因为它提供了一个奇怪的配置文件级别 ID:ffffc028。
如果我强迫 Janus 提供一个众所周知的配置文件级别 ID(这显然是一个 hack!),Chrome 可以播放流,但 FF 在第一个关键帧接收后立即崩溃。
相机流由v4l2rtspserver创建。
请帮我确定这个profile-level-id在哪里。
它是否有效?
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 及更早版本中不可重现。
flutter - 无法 RTCPeerConnection::setRemoteDescription: 无法设置远程报价 sdp: 无法设置远程视频描述发送参数
当我从 janus-gateway 获取 sdp 并尝试将其设置为远程描述时,我使用 webrtc 颤振插件在我的 android webrtc 应用程序上不断收到此错误。
我尝试调整 sdp 因为我认为它无法解析字符串,但它不起作用。
video-streaming - 从 ffmpeg 通过 Janus 流式传输的 H264 WebRTC 视频在播放时非常不稳定
尝试通过以下链流式传输视频:本地实例存储 (AWS) 上的 h264/mp4 文件->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,但到目前为止尝试这样做没有成功。
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:
- Receive RTP video packets from some external sender
- Become a WebRTC peer and connect to an external WebRTC signaling server, STUN, TURN, the usuals
- 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!
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% 是免费的。肯定不是处理器问题。
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/
也不显示任何错误。
如何进一步调试此问题?
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
在过去的两天里,我一直在用头撞墙,但无法解决问题。任何帮助,将不胜感激。我尝试了演示中给出的任何内容,但没有帮助。
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 之间波动。
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)。
我该如何解决?谢谢你。