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:
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; }
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 :)
3 Réponses :
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
Oui, je ne sais pas si vous recevez la notification, alors regardez ma réponse
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
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 ???
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 a>; Mais pourquoi utilisez-vous FFMPEG? OME peut transcoder: airensoft.gitbook.io/ovenmediaengine/transcoding