2

我正在尝试使用 ffmpeg 和 janus-gateway 在本地网络中流式传输视频。我将 h264 视频直接通过管道传输到 ffmpeg,然后从那里将其作为 rtp 流传输到 janus。然后 Janus 完成其余的工作。

问题是,当我尝试使用 janus 中包含的 streamingtest html 页面打开流时,我可以选择流,但我看不到任何东西。在我启动 janus 的控制台上,它会引发多个错误,开头为:“SDP 缺少必填信息”

显然,SDP 缺少一些这样的授权:

a=ice-ufrag:? 
a=ice-pwd:?

我猜这是演示页面上的 javascript 的问题。

当我加载页面并单击开始按钮时,它会按预期执行所有操作,并且还没有错误。它用我的流填充可用流的列表,当我在 Firefox 中使用网络分析器时,我可以看到,janus 正在向页面的 javascript 发送正确的 SDP。该 SDP 包含有关流的正确信息以及 ice 授权信息。

然后,当我选择流并单击开始按钮时,javascript 会向 janus 发送一个包含 SDP 的请求,但这个 SDP 与之前收到的完全不同,并且确实缺少 ice 授权信息。它还有一堆完全错误的信息。例如,此 SDP 用于 VP8 视频,而我的流以及之前收到的正确 SDP 实际上是 H264 视频。

有人可以发布一个简单的例子来从janus接收一个webrtc视频流吗?

我一直在寻找一个示例,但除了对我不起作用的演示和完全不相关的 webrtc 视频会议或聊天室示例之外,没有找到任何对我没有任何用处的示例。

我要做的就是获得一个信号 H264 视频流,从树莓派到本地托管的同一树莓派的 html 网页,延迟尽可能低,甚至零延迟。

我曾尝试使用 hls,但延迟太高,有人建议使用 webrtc ...

4

2 回答 2

3

我有一个类似的问题

经过“一天的战斗” - 我在我的 janus-webrtc 安装基于 tvbox 的 UserLAnd ( https://github.com/virtimus/tinyHomeServer ) 上使用了 reolink 网络摄像头:

在 reolink web admin(设置/录制/编码)中:

  • 录制音频 - 是的
  • 分辨率 2560*1920
  • 帧率 8
  • 最大比特率 1024
  • h264 profile high(这对我很重要)

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
于 2020-11-07T12:06:54.887 回答
0

没关系。

我现在已经切换到对视频流使用 uv4l 并托管显示视频流的实际网页。

这几乎是开箱即用的,并且相对容易实现。

于 2020-06-13T19:04:02.753 回答