Vous recevez l'erreur suivante lors de la diffusion :
[out#0/flv @ 0x...] Error opening output rtmp://127.0.0.1:1935/diffusion/orbis: Input/output error
Cela signifie que FFmpeg ne peut pas envoyer le flux vers nginx-rtmp. Le problème vient de la configuration RTMP, pas de BTFS ou des plateformes.
Exécutez d'abord le diagnostic RTMP :
cd ~/OrbisAlternis
./scripts/diagnostic.sh --rtmpCela va vérifier :
- ✓ nginx est-il actif ?
- ✓ Le port 1935 est-il ouvert ?
- ✓ La syntax nginx est-elle valide ?
- ✓ Le module RTMP est-il chargé ?
- ✓ Le bloc RTMP est-il généré et inclus ?
- ✓ Peut-on se connecter au port 1935 ?
sudo systemctl status nginxSi nginx est inactif :
sudo systemctl start nginxsudo nginx -T 2>&1 | grep rtmpou
ls -la /etc/nginx/modules-enabled/ | grep rtmpSi le module n'est pas installé :
sudo apt update
sudo apt install -y libnginx-mod-rtmpPuis redémarrez nginx :
sudo systemctl restart nginxLe bloc RTMP doit être généré dynamiquement avec vos vraies clés de flux.
Lancez le script principal (il génère automatiquement le bloc) :
./scripts/diffuser.sh -l ldl/ldl_tot.txt -p dlive -nVérifiez que le fichier a été créé :
ls -la /etc/nginx/orbis-rtmp-block.confRegardez son contenu :
sudo cat /etc/nginx/orbis-rtmp-block.confIl doit ressembler à ceci :
rtmp {
server {
listen 1935;
chunk_size 4096;
max_message 1M;
application diffusion {
live on;
record off;
allow publish 127.0.0.1;
deny publish all;
allow play all;
push rtmp://stream.dlive.tv/live/VOTRE_CLE_DLIVE;
push rtmp://127.0.0.1:11935/app/VOTRE_CLE_KICK;
}
}
}
Le bloc RTMP doit être inclus au niveau racine de nginx.conf, pas dans le bloc http{}.
sudo grep "orbis-rtmp-block.conf" /etc/nginx/nginx.confSi l'inclusion est absent :
Ajoutez-la manuellement à la fin de /etc/nginx/nginx.conf :
echo "" | sudo tee -a /etc/nginx/nginx.conf
echo "# Orbis Alternis -- bloc RTMP" | sudo tee -a /etc/nginx/nginx.conf
echo "include /etc/nginx/orbis-rtmp-block.conf;" | sudo tee -a /etc/nginx/nginx.confsudo nginx -tVous devez voir : syntax is ok
Si la syntax est invalide :
Affichez la config complète pour identifier l'erreur :
sudo nginx -T 2>&1 | head -100Les erreurs courantes :
- Bloc
rtmp {}mal placé (doit être au niveau racine, pas danshttp {}) - Directive
load_modulemal positionnée (doit être ligne 1) - Accolades manquantes ou en surplus
sudo systemctl reload nginxVérifiez que le port 1935 est maintenant ouvert :
ss -tlnp | grep 1935Vous devez voir une ligne avec :1935 et nginx.
Si vous préférez laisser un script corriger automatiquement, utilisez :
sudo ./scripts/fixer-rtmp.shCe script va :
- Nettoyer les anciennes configurations
- Installer/vérifier le module RTMP
- Générer le bloc RTMP
- Inclure le bloc dans nginx.conf
- Valider et recharger nginx
- Tester que RTMP fonctionne
Une fois les corrections appliquées, testez manuellement :
./scripts/diagnostic.sh --ffmpegCela va envoyer une vidéo de test (couleur noire, 3 secondes) vers nginx-rtmp.
Si le test réussit :
- Vous verrez :
muxing overhead - Cela signifie que RTMP fonctionne maintenant
Si vous avez encore "Input/output error" :
Consultez les logs nginx en temps réel :
sudo tail -f /var/log/nginx/error.logPuis relancez le diagnostic FFmpeg dans un autre terminal. Les erreurs s'afficheront dans les logs.
| Symptôme | Cause | Solution |
|---|---|---|
Port 1935 not listening |
nginx inactif ou module RTMP absent | sudo systemctl restart nginx + sudo apt install libnginx-mod-rtmp |
syntax is not ok |
Bloc RTMP mal formé | Vérifiez /etc/nginx/orbis-rtmp-block.conf (accolades, indentation) |
Input/output error |
nginx refuse la connexion RTMP | Relancez ./scripts/diffuser.sh + sudo systemctl reload nginx |
connection refused |
Pare-feu local bloque 1935 | sudo ufw allow 1935/tcp (si ufw est actif) |
module not found |
libnginx-mod-rtmp non installé | sudo apt install libnginx-mod-rtmp |
sudo nginx -TCherchez le bloc rtmp {}. S'il n'est pas là, le bloc ne s'est pas chargé.
sudo chown -R www-data:www-data /var/log/nginx
sudo chown -R www-data:www-data /var/run/nginxsudo systemctl restart nginxPuis vérifiez :
sudo systemctl status nginxUne fois RTMP rétabli, relancez la diffusion :
./scripts/diffuser.sh -l ldl/ldl_tot.txt -p dlive -nOu avec les deux plateformes :
./scripts/diffuser.sh -l ldl/ldl_tot.txt -p toutes -nSi le problème persiste après tous ces diagnostics, collectez ces informations :
# Diagnostic complet
./scripts/diagnostic.sh --complet 2>&1 | tee ~/orbis-diag-$(date +%Y%m%d_%H%M%S).log
# Logs nginx
sudo tail -100 /var/log/nginx/error.log > ~/nginx-error.log
# Bloc RTMP
sudo cat /etc/nginx/orbis-rtmp-block.conf > ~/orbis-rtmp-block.log
# Config nginx (debut)
sudo head -50 /etc/nginx/nginx.conf > ~/nginx-conf-debut.logPuis partagez ces fichiers pour diagnostic.