SJCam M20 et capture vidéo sur Linux en temps réel

Salut à tous,

Pour faire des timelapses de meilleurs qualités sur mon imprimante 3D, j’ai acheté une petite caméra, la M20 de SJCam.

Sans le savoir au moment de l’achat, il y a une fonction wifi, avec le streaming de la caméra en quasi-temps réel en rtsp (capturable avec VLC et ffmpeg ou tout logiciel supportant le protocole rtsp).

1. Dupliquer une carte wifi (optionnel)

Sur mon ordinateur, je n’ai qu’une seul carte wifi, qui me permet de me connecter à internet … si je veux me connecter à ma caméra, il faudrait que je me déconnecte du net … Heureusement pour moi ma carte wifi est une ath9k qui supporte mac80211 qui supporte les VIF (Virtual InterFace).

La commande suivante me permet de rajouter une carte wifi virtuelle nommé cam0

/usr/bin/iw dev [nom-de-interface] interface add cam0 type managed addr 12:34:56:78:ab:cd

Il me faut ensuite une conf netctl (/etc/netctl/cam0_static) :

Interface=cam0
Connection=wireless
IP=static
Address=('192.168.1.253/24')
Routes=('192.168.1.254/32' via 192.168.1.254)
Security=wpa-config
WPAConfigFile='/etc/wpa_supplicant/cam_config.conf'

On se configure en static, car le réseau de la caméra est en 192.168.1.0/24, ce qui est aussi mon réseau local, donc pour éviter de router ma connexion à travers la cam, on met juste une route vers l’ip de la cam et le tour est joué :).

Ainsi qu’une configuration wpa_supplicant (/etc/wpa_supplicant/cam_config.conf) :

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
    ssid="nomdureseauwifidelam20"
    psk="12345678"
}

On peut désormais démarrer la connexion au réseau wifi de la caméra sans se déconnecter d’internet 🙂 :

netctl start cam0_static

Et voilà, on peut passer à la suite.

2. Streaming en direct de la SJCam M20

Une fois connecté au réseau wifi de la caméra, on peut aller avec son navigateur web sur : http://192.168.1.254 et on a accès à l’ensemble des fichiers présent sur la sdcard de la caméra.

Si l’on veut récupérer le stream, c’est aussi simple, il suffit d’utiliser l’url suivante : rtsp://192.168.1.254. Vous pouvez directement utiliser cette url avec VLC ou ffmpeg.

Voilà, c’est tout :).