我正在尝试使用 ffmpeg 和 janus-gateway 在本地网络中流式传输视频。我将 h264 视频直接传输到 ffmpeg,然后从那里将其作为 rtp 流传输到 janus。然后 Janus 完成剩下的工作。
问题是,当我尝试使用janus中包含的streamingtest html页面打开流时,我可以选择流,但我永远看不到任何东西。在我启动 janus 的控制台上,它抛出多个错误,开头为:“SDP 缺少强制信息”
显然 SDP 缺少一些授权,如下所示:
a=ice-ufrag:?
a=ice-pwd:?
我猜这是演示页面上的javascript问题。
当我加载页面并单击开始按钮时,它会按预期执行所有操作,并且还没有错误。 它用我的流填充可用流列表,当在 Firefox 中使用网络分析器时,我可以看到,janus 正在将正确的 SDP 发送到页面的 javascript。该 SDP 包含有关流的正确信息以及ice 授权信息。
当我选择流并单击开始按钮时,javascript 向 janus 发送包含 SDP 的请求,但该 SDP 与之前收到的完全不同,并且确实缺少ice 授权信息。它还包含一堆完全错误的信息。例如,此 SDP 用于 VP8 视频,而我的流以及之前收到的正确 SDP 实际上是 H264 视频。
有人可以发布一个简单的示例,用于仅从 janus 接收单个 webrtc 视频流吗?
我已经搜索示例有一段时间了,但除了对我不起作用的演示以及完全不相关的 webrtc 视频 session 或聊天室示例之外,没有找到任何对我没有任何用处的东西。
我想做的就是从树莓派到本地托管的同一个树莓派的 html 网页上获得尽可能低延迟甚至零延迟的单一 H264 视频流。
我尝试过使用 hls,但是延迟太大,有人建议使用 webrtc...
最佳答案
我也遇到了类似的问题
经过“一天的战斗”后 - 我在我的 janus-webrtc 安装的基于电视盒的 UserLAnd 上使用 reolink 网络摄像头( https://github.com/virtimus/tinyHomeServer ):
在 reolink 网络管理中(设置/录制/编码):
- 录制音频 - 是
- 分辨率2560*1920
- 帧速率 8
- 最大比特率 1024
- h264 配置文件较高(这对我来说很重要)
janus.plugin.streaming.jcfg:
reolink-rtp: {
type = "rtp"
id = 999
description = "Reolink RTP"
audio = true
audioport = 5051
audiopt = 111
audiortpmap = "opus/48000/2"
video = true
videoport = 5052
videopt = 96
videortpmap = "H264/90000"
videofmtp = "profile-level-id=42e028;packetization-mode=1"
#videofmtp = "profile-level-id=420032;packetization-mode=1"
}
ffmpeg命令(双转发视频/音频):
ffmpeg -i 'rtsp://admin:[password]@192.168.2.148:554/h264Preview_01_main' -an -c:v copy -flags global_header -bsf dump_extra -f rtp rtp://localhost:5052 -vn -codec:a libopus -f rtp rtp://localhost:5051
关于javascript - 查看 janus webrtc 视频流时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62344842/