【问题标题】:How to send RTP stream to Janus from NGINX RTMP module?如何从 NGINX RTMP 模块向 Janus 发送 RTP 流?
【发布时间】:2020-07-03 08:53:32
【问题描述】:

这是我在这里的第一篇文章,尽管这个平台已经帮助了我很多。

所以,我正在尝试创建一个流并将其显示在浏览器中。我已经为 NGINX 配置了 rtmp 模块,并且我的流与 HLS 配合得很好(延迟在 5 到 10 秒之间)。

现在我想设置一个低延迟的流,这就是为什么我安装了 janus-gateway webRTC 服务器,它允许输入一个 RTP 流并在输出中提供一个 webRTC 流。

这是我想遵循的架构:

OBS -> RTMP -> Nginx-rtmp-module -> ffmpeg -> RTP -> Janus -> webRTC -> 浏览器

但这部分我有一个问题:“nginx-rtmp-module -> ffmpeg -> janus”

事实上,我的 janus 的服务器正在运行,并且演示流在 localhost 中运行良好,但是当我尝试提供 RTP 流时,Janus 没有检测到演示中的流(它显示“没有可用的远程视频”) .

有人可以帮帮我吗?

资源:

  • 我的 janus.plugin.streaming.jcfg 配置:
rtp-sample: {
        type = "rtp"
        id = 1
        description = "Opus/VP8 live stream coming from external source"
        metadata = "You can use this metadata section to put any info you want!"
        audio = true
        video = true
        audioport = 5002
        audiopt = 111
        audiortpmap = "opus/48000/2"
        videoport = 5004
        videopt = 100
        videortpmap = "VP8/90000"
        secret = "adminpwd"
}

  • 我的 nginx.conf 应用程序:
application test {

        deny play all;

        live on;
        on_publish http://localhost/test/backend/sec/live_auth.php;

        exec ffmpeg -i rtmp://localhost/test/$name -an -c:v copy -flags global_header -bsf dump_extra -f rtp rtp://localhost:5004;

}

如果您需要更多帮助我,请不要犹豫!提前谢谢你,对不起我的英语不好:)

【问题讨论】:

  • 你在 janus 上做了什么设置来完成这项工作......我被卡住了
  • @dinindu 对不起,已经一年了,我不记得了,从那以后我已经卸载了所有东西
  • 感谢您的更新。

标签: nginx ffmpeg webrtc rtmp janus-gateway


【解决方案1】:

我终于用下面的命令解决了这个问题:

sudo ffmpeg -y -i "rtmp://127.0.0.1/app/stream" -c:v libx264 -profile:v main -s 1920x1080 -an -preset ultrafast -tune zerolatency -g 50 -f rtp rtp://127.0.0.1:5004

不幸的是,当我使用 -c:v 复制时,它不起作用。它仅在使用 libx264 编码时才有效,这会增加延迟,我得到了 3 到 4 秒的延迟。

但是,当我安装 Janus 时,我的目标是比使用 HLS 做得更好,使用 HLS 协议可以达到 2.5 秒的延迟。

所以 Janus 没有满足我的需要。此外,我被警告说它不是流服务器。经过一番研究,我在 Github 上发现了 Oven Media Engine 项目,这是一个延迟小于 1 秒的流服务器。文档在专用站点上是完整的,并且适用于该服务器的播放器(烤箱媒体播放器)在 MIT 许可下可用。服务器采用 GPLv2 许可。

这是我的架构的当前架构:

OBS -> Nginx(允许使用 on_publish 进行流式传输,因为 OME 还不允许。然后将流推送到 OME 服务器)-> OME -> 以不同的比特率和分辨率进行转码(可选)- > OME -> Edge OME(可选)-> 播放器。

如有任何问题,请不要犹豫,支持非常友好!

希望对你有帮助

【讨论】:

    【解决方案2】:

    我没有声望。所以我写答案。 谢谢您的回答 Oven Media Engine 对我来说是完美的解决方案。

    OBS ->RTMP-> OME ->webrtc-> chrome 播放器。 有可能

    我有疑问。 我试试

    ffmpeg -i rtmp://0.0.0.0:1935/live/test03 -an -c:v libvpx -flags global_header -bsf dump_extra -f rtp rtp://0.0.0.0:5005
    

    它的工作延迟为 500 毫秒,但我看到一点延迟

    ffmpeg -i rtmp://0.0.0.0:1935/live/test03 -an -c:v libx264 -profile:v baseline -preset ultrafast -tune zerolatency -flags global_header -bsf dump_extra -f rtp rtp://0.0.0.0:5006
    

    它的工作延迟 2 秒我经常看到延迟。

    我知道 h246 比 vp8 好。 但就我而言,我想知道 vp8 是否工作得更好。

    我们需要记录所以使用 nginx 如何推送 nginx -> RTMP-> OME 推送 0.0.0.0:1935/$app/$name;不行 推送 0.0.0.0:1935/app/stream;工作 什么???

    【讨论】:

    【解决方案3】:

    你解决问题了吗? 我尝试控制台 " ffmpeg -i rtmp://0.0.0.0:1935/live/test03 -an -c:v copy -flags global_header -bsf dump_extra -f rtp rtp://127.0.0.1:5004 " " sudo ffmpeg -i "rtmp://0.0.0.0:1935/live/test03" -map 0:2 -c:v libx264 -profile:v main -preset ultrafast -tune zerolatency -f rtp rtp://127.0.0.1 :5005 "

    我和你有同样的问题

    【讨论】:

    • 是的,不知道你有没有收到通知,看我的回答
    猜你喜欢
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 2021-03-06
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多