2

This is my first post here, even though this platform has already helped me a lot.

So, i'm trying to create a stream and display it in a browser. I have already configured NGINX with the rtmp module and my stream works very well with HLS (between 5 and 10 seconds of latency).

Now I would like to set up a low-latency stream and that's why I have installed the janus-gateway webRTC server that allows to take in input an RTP stream and provide in output a webRTC stream.

Here's the schema I'd like to follow :

OBS -> RTMP -> Nginx-rtmp-module -> ffmpeg -> RTP -> Janus -> webRTC -> Browser

But I have a problem with this part : "nginx-rtmp-module -> ffmpeg -> janus"

In fact, my janus's server is running and demos streaming works very well in localhost, but when i try to provide an RTP stream, Janus don't detect the stream in the demos (it shows "No remote video available").

Anyone can help me, please ?

Ressources :

  • My janus.plugin.streaming.jcfg configuration :
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"
}

  • My nginx.conf application :
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;

}

If you need something more for help me, don't hesitate ! Thank you in advance, and sorry for my bad english :)

4

3 回答 3

3

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

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 copy 时,它不起作用。它仅在使用 libx264 编码时才有效,这会增加延迟,我得到了 3 到 4 秒的延迟。

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

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

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

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

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

希望能帮助到你

于 2020-07-08T10:35:43.467 回答
1

我没有声望。所以我写答案。感谢您的回答 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

它的工作延迟 2s 我经常看到滞后。

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

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

于 2020-07-09T09:56:56.500 回答
0

你解决问题了吗?我尝试控制台“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 "

我和你有同样的问题

于 2020-07-07T09:12:27.903 回答