Faire une diffusion en temps réel de l’écran de votre appareil UT sur votre PC

Ubuntu Touch possède un utilitaire en ligne de commande appelé mirscreencast qui récupère les trames vidéo dans un fichier. L’idée est d’afficher dynamiquement l’écran de l’appareil UT sur un ordinateur client à travers le réseau ou directement via adb. On peut alors le regarder en temps réel ou l’enregistrer dans un fichier.

En utilisant adb

Vous pouvez capturer directement la sortie de la commande adb exec-out et la rediriger vers mplayer:

adb exec-out timeout 120 mirscreencast -m /run/mir_socket --stdout --cap-interval 2 -s 384 640 | mplayer -demuxer rawvideo -rawvideo w=384:h=640:format=rgba -

NB: timeout est ici utilisé pour tuer le processus correctement sur l’appareil (ici 120 secondes). Dans le cas contraire, le processus restera actif même si il est tué sur l’ordinateur. Vous pouvez réduire ou augmenter le nombre de trames par secondes avec``–cap-interval`` (1 = 60fps, 2=30fps, …) et la taille des trames 384 640 correspond à largeur=384 hauteur=640

A travers le réseau

Sur le récepteur

Pour l’affichage en temps réel :

Préparer votre ordinateur à écouter sur un port tcp (ici 1234) et rediriger le flux vidéo brut vers un programme de lecture vidéo (ici mplayer) avec une taille de trame de 384x640:

nc -l -p 1234 | gzip -dc | mplayer -demuxer rawvideo -rawvideo w=384:h=640:format=rgba -

Pour l’enregistrement du flux:

Préparer votre ordinateur à écouter sur un port tcp (ici 1234) et rediriger le flux vidéo brut vers un programme d’encodage vidéo (ici mpencoder):

nc -l -p 1234 | gzip -dc | mencoder -demuxer rawvideo -rawvideo fps=60:w=384:h=640:format=rgba -ovc x264 -o out.avi -

Sur l’appareil

Rediriger et compresser (gzip) le flux à 60 fps (–cap-interval 1) et une avec une taille de trame de 384x640 vers l’ordinateur 10.42.0.209 sur le port 1234:

mirscreencast -m /run/mir_socket --stdout --cap-interval 1 -s 384 640 | gzip -c | nc 10.42.0.209 1234

Script d’exemple

Ce script vous permet de diffuser l’affichage de l’écran d’un appareil UT distant sur votre PC local (vous devez avoir un accès ssh sur votre appareil UT et mplayer installé sur le PC), lancez le sur votre PC:

#!/bin/bash
SCREEN_WIDTH=384
SCREEN_HEIGHT=640
PORT=1234
FORMAT=rgba


if [[ $# -eq 0 ]] ; then
    echo 'usage: ./mircast.sh UT_IP_ADDRESS , e.g: ./mircast.sh 192.168.1.68'
    exit 1
fi

IP=$1

LOCAL_COMMAND='nc -l -p $PORT | gzip -dc | mplayer -demuxer rawvideo -rawvideo w=$SCREEN_WIDTH:h=$SCREEN_HEIGHT:format=$FORMAT -'
REMOTE_COMMAND="mirscreencast -m /run/mir_socket --stdout --cap-interval 1 -s $SCREEN_WIDTH $SCREEN_HEIGHT | gzip -c | nc \$SSH_CLIENT $PORT"
ssh -f phablet@$IP "$REMOTE_COMMAND"
eval $LOCAL_COMMAND

Vous pouvez le télécharger ici: :télécharger:`files/mircast.sh`