La Fibre
Télécom => Logiciels et systèmes d'exploitation => Linux => Discussion démarrée par: vivien le 12 juillet 2011 à 07:42:37
-
Linux : Faire une capture d'un flux vidéo en ligne de commande
1/ On s'abonne à un flux multicast en tache de fond :
/usr/bin/cvlc rtp://@233.136.0.116 2> /dev/null &
2/ On fait la capture avec TCPdump
/usr/bin/sudo /usr/sbin/tcpdump -i eth0 -n -s 0 -w /tmp/capture.pcap &
3/ On résilie l'abonnement au flux multicast :
/usr/bin/killall -s INT vlc
Dans un script cela donne cela :
$1 est la durée de la capture
/usr/bin/cvlc rtp://@233.136.0.116 2> /dev/null &
# Capture avec TCPdump
/usr/bin/sudo /usr/sbin/tcpdump -i eth0 -n -s 0 -w /tmp/capture1.pcap &
/bin/sleep $1
/usr/bin/sudo /usr/bin/killall -s INT tcpdump
# désabonnement du flux
/usr/bin/killall -s INT vlc
-
3/ On résilie l'abonnement au flux multicast :
/usr/bin/killall -s INT vlc
Mouais... à la trappe tous les autres VLC qui sont lancés, même pour lire un CD!
Et si le processus ne s'appelle plus "vlc", ça marche pas.
1/ On lance cvlc en tâche de fond et on n'oublie pas de noter le PID :
/usr/bin/cvlc rtp://@233.136.0.116 2> /dev/null &
cvlc_pid=$!
2/ (...)
3/ On signale le cvlc qui est en tâche de fond :
/bin/kill -INT ${cvlc_pid}
Dans un script cela donne cela :
$1 est la durée de la capture
/usr/bin/cvlc rtp://@233.136.0.116 2> /dev/null &
cvlc_pid=$!
# Capture avec TCPdump
/usr/bin/sudo /usr/sbin/tcpdump -i eth0 -n -s 0 -w /tmp/capture1.pcap &
tcpdump_pid=$!
/bin/sleep $1
/usr/bin/sudo /bin/kill -INT ${tcpdump_pid}
# désabonnement du flux
/bin/kill -INT ${cvlc_pid}