javascript - 查看 janus webrtc 视频流时出现问题

标签 javascript rtp janus-gateway

我正在尝试使用 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/

相关文章:

ios - 连接到 janus 服务器总是挂起,并显示来自 janus 的挂断消息

javascript - 如何通过双击而不是单击来触发链接(标签)?

javascript - React Native 连接函数不通过 props 将操作传递给子组件

javascript - 如何获取类名?

c++ - 如何在C语言中检测环绕计数器和大负值之间的区别

node.js - 如何将 Opus 流从 Discord 传输到 RTP

react-native - 使用 Janus-gateway 的远程视频流不显示在 react-native 中

javascript - vue.js v-model 验证和显示字段

java - 从扩展 RTP 数据包头解码 unix 时间戳以计算延迟

amazon-web-services - Janus-Gateway RTP-Forward 将流发送到 AWS Elemental MediaLive