Bonsoir à tous,

Je suis désolé de poster ici mais je n'ai pas trouvé un autre forum pouvant correspondre à mon problème.

J'ai installé sur Ubuntu 18.04 un serveur Nginx avec un module serveur RTMP qui fonctionne parfaitement. Je diffuse de la vidéo sur ce serveur et mes 2 autres clients se connecte via VLC sans problème.

Je souhaiterais faire un test régulier via un script batch pour couper VLC et lancer la lecture d'une video en local sur le client en cas de serveur indisponible.

J'ai effectué des recherches et ai trouvé différents scripts que j'ai essayé de reproduire sans succès.

Voici le premier script que j'ai réalisé :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
if [[ `curl --connect-timeout 3 --output /dev/null --silent --head --fail rtmp://127.0.0.1/mytv/test 2>&1` ]]
then
  echo "failing!"
else
  echo "working!"
fi
Le script me retourne systématiquement "Working!" même lorsque je stoppe le démon.

J'ai testé la commande en direct dans le terminal mais elle ne me retourne rien.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
root$ curl --connect-timeout 3 --output /dev/null --silent --head --fail rtmp://127.0.0.1/mytv/test 2>&1
J'ai testé en arrêtant le serveur et la diffusion en streaming mais pareil, rien ne se passe lorsque je test dans le terminal et le script me mets toujours "Working!" alors que la diffusion est stoppé.

J'ai cherché à faire plusieurs modification sur la commande mais j'ai toujours les mêmes retours.

J'ai cherché sur le manuel de curl (Man CURL). Il y a de nombreux commutateurs disponibles et je suis un peu perdu.

De ce fait, je me suis tourné vers rtmpdump.

Streaming stoppé, voici la commande que j'ai essayé dans terminal :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
root$ rtmpdump -v -m6 -B6 -r rtmp://127.0.0.1/mytv/test -o /tmp/test.flv
 
RTMPDump v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Connecting ...
INFO: Connected...
Starting Live Stream
For duration: 6.000 sec
ERROR: RTMP_ReadPacket, failed to read RTMP packet header
0.000 kB / 0.00 sec
Download may be incomplete (downloaded about 0.00%), try resuming
La commande arrive à se connecter au serveur mais comme il n'y a aucune diffusion, j'ai en retour une erreur. Jusque là, c'est ce que j'attendais.

Cette fois ci, voici le retour lorsque le streaming est en live :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ rtmpdump -v -m6 -B6 -r rtmp://127.0.0.1/mytv/test -o /tmp/test.flv
 
RTMPDump v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Connecting ...
INFO: Connected...
Starting Live Stream
For duration: 6.000 sec
INFO: Metadata:
INFO:   Server                NGINX RTMP (github.com/arut/nginx-rtmp-module)
INFO:   width                 960.00
INFO:   height                530.00
INFO:   displayWidth          960.00
INFO:   displayHeight         530.00
INFO:   duration              0.00
INFO:   framerate             30.00
INFO:   fps                   30.00
INFO:   videodatarate         1800.00
INFO:   videocodecid          0.00
INFO:   audiodatarate         160.00
INFO:   audiocodecid          0.00
3333.187 kB / 21.73 sec[/I]
 
Interruption de la commande avec CTRL+C
 
[I]Caught signal: 2, cleaning up, just a second...
ERROR: RTMP_ReadPacket, failed to read RTMP packet header
3333.187 kB / 21.73 sec
Download may be incomplete (downloaded about 0.00%), try resuming
Tout semble fonctionner sauf que je demande que l'enregistrement s'arrête au bout de 6 secondes mais passé ce délai, la commande s'exécute toujours.

Je suis preneur de vos conseils où information qui me permettrait de sortir de l'impasse. Mon niveau en architecture linux et proche du néant mais j'apprends de jour en jour et j'ai vraiment besoin de réaliser ce test. Je suis prêt à me tourner vers python ou un autre langage si besoin mais je trouvais que batch est le plus simple et logique pour ce que je souhaite faire.

Merci par avance de votre aide.