1
votes

Comment envoyer un flux RTP à Janus à partir du module NGINX RTMP?

Ceci est mon premier message ici, même si cette plate-forme m'a déjà beaucoup aidé.

Donc, j'essaye de créer un flux et de l'afficher dans un navigateur. J'ai déjà configuré NGINX avec le module rtmp et mon flux fonctionne très bien avec HLS (entre 5 et 10 secondes de latence).

Maintenant, je voudrais mettre en place un flux à faible latence et c'est pourquoi je ont installé le serveur webRTC janus-gateway qui permet de prendre en entrée un flux RTP et de fournir en sortie un flux webRTC.

Voici le schéma que je voudrais suivre:

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

Mais j'ai un problème avec cette partie: "nginx-rtmp-module -> ffmpeg -> janus "

En fait, le serveur de mon janus fonctionne et le streaming de démos fonctionne très bien dans localhost, mais quand j'essaye de fournir un flux RTP, Janus ne détecte pas le flux dans les démos affiche "Aucune vidéo distante disponible").

Quelqu'un peut m'aider, s'il vous plaît?

Ressources:

  • Ma configuration janus.plugin.streaming.jcfg:
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;

}

  • Mon application nginx.conf:
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"
}

Si vous avez besoin de quelque chose de plus pour m'aider, n'hésitez pas! Merci d'avance et désolé pour mon mauvais anglais :)


0 commentaires

3 Réponses :


0
votes

Résolvez-vous le problème? J'essaye la console " ffmpeg -i rtmp: //0.0.0.0: 1935 / live / test03 -an -c: v copie -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 ultra-rapide -tune zerolatency -f rtp rtp: //127.0.0.1 : 5005 "

J'ai le même problème que vous


1 commentaires

Oui, je ne sais pas si vous recevez la notification, alors regardez ma réponse



3
votes

J'ai finalement résolu ce problème avec la commande suivante:

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

Malheureusement, lorsque j'utilise -c: v copy, cela ne fonctionne pas. Cela ne fonctionne que lors de l'encodage avec libx264 qui ajoute de la latence et j'ai entre 3 et 4 secondes de latence.

Cependant, quand j'ai installé Janus, mon objectif était de faire mieux qu'avec HLS, protocole avec lequel j'atteins 2,5 secondes de latence.

Donc Janus n'a pas répondu à mon besoin. De plus, j'ai été prévenu que ce n'était pas un serveur de flux. Après quelques recherches, je suis tombé sur Github sur le projet Oven Media Engine, un serveur de flux offrant une latence inférieure à 1s. La documentation est complète sur le site dédié et un lecteur (Oven Media Player) adapté à ce serveur est disponible sous licence MIT. Le serveur est sous licence GPLv2.

Voici le schéma actuel de mon architecture:

OBS -> Nginx (qui permet d'autoriser le streaming avec on_publish, car OME ne le permet pas encore. Le flux est ensuite poussé vers le serveur OME) -> OME -> Transcodage avec différents débits et résolutions (facultatif) -> OME -> Edge OME (facultatif) -> player.

Si vous avez des questions, n'hésitez pas, le support est très sympathique!

J'espère que cela aide


0 commentaires

1
votes

Je n'ai pas de réputation. Alors j'écris la réponse. Merci pour votre réponse Oven Media Engine est la solution parfaite pour moi.

OBS -> RTMP-> OME -> webrtc-> lecteur chrome. est possible

J'ai une question. J'essaye

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

ça marche latence 500ms mais je vois peu de lag

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

ça marche latence 2s que je vois souvent lag.

Je sais que h246 est meilleur que vp8. Mais dans mon cas, je me demande si le vp8 fonctionnait mieux.

nous avons besoin d'enregistrement alors utilisez nginx Comment pousser nginx -> RTMP-> OME pousser 0.0.0.0:1935/$app/$name; ne fonctionne pas pousser 0.0.0.0:1935/app/stream; travailler quoi ???


1 commentaires

C'est très simple: $ app est le nom d'application de nginx et app est le nom d'application par défaut d'OME. Donc, si l'application nginx et l'application OME n'ont pas le même nom, vous devez utiliser ceci: appuyez sur localhost: 1935 / app / $ name ; Sinon, s'ils portent le même nom, vous pouvez utiliser: push localhost: 1935 / $ app / $ name ; Mais pourquoi utilisez-vous FFMPEG? OME peut transcoder: airensoft.gitbook.io/ovenmediaengine/transcoding