Wifibroadcast 2.3ghz et streaming video avec Wifi AP

Wifibroadcast 2.3ghz et streaming video avec Wifi AP

pre-requis : Vous devez déja configurer votre Wifi Acces Point sur la station au sol  (GCS) ici : Configuration du point d’accès Wifi de la station au sol

La première solution : Broadcast over wifi network at 2.3GHz & 30dBm (1) depuis le drone « MyPiDrone » en utilisant le Wifi AP de la station au sol  (WiFi Access Point on Ubuntu)

Cette méthode permet de transmettre de la vidéo à des appareils connectés au wifi AP de la station de contrôle au sol (PC avec Ubuntu). Il est ainsi possible d’adresser plusieurs autres OS tels que :

(1) La configuration de réseau wifi à  2.3GHz n’est pas encore validée sous Android pour le moment.  Cependant la solution est valable avec le 2.4Ghz pour l’application Android Beta Tower ou QtGStreamerHUD.apk

Nous utilisons un  TP-LINK (wlan0) sur le drone et un autre TP-LINK (wlan0) sur la station au sol.

Cette solution est moins efficace que le Wifibroadcast (portée faible et plus de latence): Nous avons validé cette mise en œuvre sans tester l’efficacité.

Pour une application Android vous devez choisir : udp broadcast network (10.0.0.255) ou ip (10.0.0.12)

raspivid -ih -t $TIMEOUT -w $WIDTH -h $HEIGHT -fps $FPS -b $BITRATE -n -g $KEYFRAMERATE -pf high -o - |gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=10 pt=96 ! udpsink port=5000 host=10.0.0.12
Video pour application Android

Pour un client VLC (http, rtsp) :

## mandatory to run cvlc with root user
strings /usr/bin/vlc|egrep "getppid|geteuid"
C=`strings /usr/bin/vlc|grep -c getppid`
if [ $C -eq 1 ]; then
echo "VLC getppid already set"
else
cp /usr/bin/vlc /usr/bin/vlc.ori
sed -i 's/geteuid/getppid/' /usr/bin/vlc
strings /usr/bin/vlc|egrep "getppid|geteuid"
fi
#### http
raspivid -ih -t $TIMEOUT -w $WIDTH -h $HEIGHT -fps $FPS -b $BITRATE -n -g $KEYFRAMERATE -pf high -o - |cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:5000}' :demux=h264
#### rtsp
raspivid -ih -t $TIMEOUT -w $WIDTH -h $HEIGHT -fps $FPS -b $BITRATE -n -g $KEYFRAMERATE -pf high -o - |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:5000/}' :demux=h264
video pour un client VLC

Deuxième solution: Transmission Vidéo Wifibroadcast à 2.3GHz depuis le  drone « MyPiDrone » vers la station au sol (GCS) et retransmission en 2.4GHz avec le réseau wifi en utilisant le point d’accès auquel sont connecté les appareils.

Cette solution utilise un TP-LINK (wlan: mode monitor) sur le drone et deux TP-LINK (wlan0 AP & wlan1: mode monitor) sur la station de contrôle au sol.

Sur le drone  la transmission de la vidéo est en wifibroadcast (wlan1):

raspivid -ih -t $TIMEOUT -w $WIDTH -h $HEIGHT -fps $FPS -b $BITRATE -n -g $KEYFRAMERATE -pf high -o - | tee $VIDEO | ./tx -p $PORT -b $BLOCK_SIZE -r $FECS -f $PACKET_LENGTH $
wifibroadcast video depuis le drone

La station au sol reçoit la vidéo en wifibroadcast  (wlan1) et rediffuse la  vidéo en streaming vers une application Android connectée au Wifi AP (wlan0) :

./rx -p $PORT -b $BLOCK_SIZE -r $FECS -f $PACKET_LENGTH $WLAN |gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=10 pt=96 ! udpsink port=5000 host=10.0.0.12
Video streaming pour application Android

Retransmission pour un client VLC connecté au Wifi AP (wlan0) :

./rx -p $PORT -b $BLOCK_SIZE -r $FECS -f $PACKET_LENGTH $WLAN |cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:5000}' :demux=h264
video streaming pour un client VLC

NOTE : Vous pouvez utiliser picamera à la place raspivid. Voir :
Superposition de la télémétrie en mode texte sur la vidéo avant la transmission en Wifibroadcast

Pages