15
Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira <[email protected]> 2015-2017 (rev. 1.1) Table des matières Mise en oeuvre de la caméra IP Wanscam 1 Présentation ......................................................... 1 Branchement de la caméra ................................................. 2 Tests CGI .......................................................... 5 Informations ..................................................... 5 Photo et vidéo .................................................... 8 Commandes de déplacement ............................................. 8 Programmation 8 Séquence 1 : Visualisation du flux vidéo ......................................... 8 Solution n°1 : QWebView .............................................. 8 Solution n°2 : OpenCV ................................................ 9 Séquence 2 : Enregistrement du flux vidéo ........................................ 12 Séquence 3 : Informations et Orientation (PTZ) ..................................... 14 Séquence 4 : Visionner une vidéo ............................................. 15 Mise en oeuvre de la caméra IP Wanscam Présentation La caméra IP Wanscam est conçue pour être installée en intérieur. Elle peut être reliée via un câble réseau Ethernet RJ45 ou sans fil en WiFi B/G/N. 1

Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

  • Upload
    doannhu

  • View
    232

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

Activité : mise en oeuvre de la caméra IP Wanscam

Thierry Vaira <[email protected]>

2015-2017 (rev. 1.1)

Table des matièresMise en oeuvre de la caméra IP Wanscam 1

Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Branchement de la caméra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2Tests CGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

Informations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Photo et vidéo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Commandes de déplacement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Programmation 8Séquence 1 : Visualisation du flux vidéo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Solution n°1 : QWebView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Solution n°2 : OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Séquence 2 : Enregistrement du flux vidéo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Séquence 3 : Informations et Orientation (PTZ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Séquence 4 : Visionner une vidéo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Mise en oeuvre de la caméra IP Wanscam

Présentation

La caméra IP Wanscam est conçue pour être installée en intérieur. Elle peut être reliée via un câble réseau Ethernet RJ45ou sans fil en WiFi B/G/N.

1

Page 2: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

MISE EN OEUVRE DE LA CAMÉRA IP WANSCAM

La caméra IP Wanscam JW0008

Ses caractèristiques principales sont :– Résolution de l’image 640x480 (VGA) ou 320x240 (QVGA)– Lentille : f 3,6mm– Eclairage IR à 10 LED pour une vision de nuit jusqu’à 10 mètres.– Filtre IR-CUT– Compression vidéo : MJPEG� �Ne jamais tourner la caméra à la main, cela pourrait endommager son mécanisme.� �Branchement de la caméra

– Vissez l’antenne Wifi sur son connecteur sans forcer.– Branchez un câble réseau RJ45 sur la prise réseau.– Connectez la fiche de l’adaptateur secteur sur la prise “Power DC” de la caméra puis connectez l’adaptateur secteur surune prise de courant.

– Attendez 1 minute environ que la caméra démarre.Lors de son démarrage, la caméra s’est autoconfigurée avec une adresse IP fournie par un serveur DHCP présent sur votreréseau.La caméra est utilisable et administrable à partir d’un navigateur web.� �Suivant les modèles, le port par défaut de la caméra est 99 (ou 81).� �L’accès se fait via http://ip-de-la-camera:99/ avec le compte admin sans mot de passe.Par exemple :

BTS SN La Salle Avignon 2 / 15 © 2017 tv <[email protected]>

Page 3: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

MISE EN OEUVRE DE LA CAMÉRA IP WANSCAM

La page d’accueil permet de choisir (la langue et) le lien adapté à son navigateur :

Par exemple pour Firefox :

BTS SN La Salle Avignon 3 / 15 © 2017 tv <[email protected]>

Page 4: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

MISE EN OEUVRE DE LA CAMÉRA IP WANSCAM

En naviguant, on peut accéder à la page d’administration :

BTS SN La Salle Avignon 4 / 15 © 2017 tv <[email protected]>

Page 5: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

MISE EN OEUVRE DE LA CAMÉRA IP WANSCAM

Tests CGI

Il est conseillé de lire la documentation de la caméra qui précise l’exploitation des programmes CGI.� �CGI (Common Gateway Interface) est une interface utilisée par les serveurs HTTP. Elle a été normalisée par la

RFC 3875. Au lieu d'envoyer le contenu d'un fichier (fichier HTML, image), le serveur HTTP exécute unprogramme, puis retourne le contenu généré. CGI est le standard industriel qui indique comment transmettrela requête du serveur HTTP au programme, et comment récupérer la réponse générée. Une des caractéristiquesde l'interface CGI est d'être indépendante de tout langage de programmation, car elle utilise les fluxstandard et les variables d'environnement. Même si le langage Perl a historiquement été souvent utilisépour en écrire, il est possible d'écrire un programme CGI en C, Python, PHP, script shell, en VB ou en toutautre langage de programmation.� �

Informations

Quelques CGI fournissant des informations sur la caméra Wanscam JW0008 :– http://ip-de-la-camera:99/get_status.cgi?user=admin&pwd=� �var alias="IPCAM";var deviceid="JWEV-182544-CFCFF";var sys_ver="67.2.2.158";var now=1439042444;var alarm_status=0;var upnp_status=1;var dnsenable=0;var osdenable=0;

BTS SN La Salle Avignon 5 / 15 © 2017 tv <[email protected]>

Page 6: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

MISE EN OEUVRE DE LA CAMÉRA IP WANSCAM

var syswifi_mode=1;var mac="00:D1:13:11:36:ED";var wifimac="00:D1:13:11:36:EE";var dns_status=0;var authuser=0;var devicetype=21037151;var devicesubtype=0;var externwifi=1;var record_sd_status=0;var sdtotal=0; var sdfree=0;� �– http://ip-de-la-camera:99/get_camera_params.cgi?user=admin&pwd=� �var resolution=0;var vbright=1;var vcontrast=128;var vhue=64;var vsaturation=80;var OSDEnable=0;var mode=0;var flip=0;var enc_framerate=30;var sub_enc_framerate=15;var speed=10;var enc_bitrate=2048;var ircut=1;� �– http://ip-de-la-camera:99/get_params.cgi?user=admin&pwd=� �var now1=1439042914;var tz=-28800;var ntp_enable=1;var ntp_svr="time.nist.gov";var dhcpen=1;var ip="192.168.52.14";var mask="255.255.255.0";var gateway="192.168.52.1";var dns1="8.8.8.8";var dns2="192.168.52.1";var port=99;var dev2_host="192.168.1.111";var dev2_alias="IPCAM";var dev2_user="ipc";var dev2_pwd="";var dev2_port=99;...var user1_name="";var user1_pwd="";...var wifi_enable=1;var wifi_ssid="wanscam_office";var wifi_mode=0;var wifi_encrypt=0;var wifi_authtype=4;var wifi_defkey=0;var wifi_keyformat=0;var wifi_key1="";var wifi_key2="";var wifi_key3="";var wifi_key4="";var wifi_key1_bits=0;var wifi_key2_bits=0;var wifi_key3_bits=0;var wifi_key4_bits=0;var wifi_wpa_psk="88888888";var wifi_channel=0;

BTS SN La Salle Avignon 6 / 15 © 2017 tv <[email protected]>

Page 7: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

MISE EN OEUVRE DE LA CAMÉRA IP WANSCAM

var pppoe_enable=0;var pppoe_user="";var pppoe_pwd="";var upnp_enable=1;var ddns_service=0;var ddns_proxy_svr="http://ipcpnp.com/upgengxin.asp";var ddns_host="";var ddns_user="";var ddns_pwd="";var ddns_proxy_port=80;var ddns_mode=1;var ddns_status=0;var mail_sender="";var mail_receiver1="";...var mailssl=0;var mail_svr="";var mail_user="";var mail_pwd="";var mail_port=0;var mail_inet_ip=0;var ftp_svr="";var ftp_user="";var ftp_pwd="";var ftp_dir="";var ftp_port=0;var ftp_mode=0;var ftp_upload_interval=0;var ftp_filename=7383708;var alarm_motion_armed=0;var alarm_motion_sensitivity=0;var alarm_input_armed=0;var alarm_ioin_level=0;var alarm_mail=0;var alarm_iolinkage=0;var alarm_ioout_level=0;var alarm_upload_interval=0;var alarm_presetsit=0;var alarm_snapshot=0;var alarm_record=0;var alarm_schedule_enable=0;var alarm_http=0;var alarm_http_url="";var alarm_schedule_sun_0=0;var alarm_schedule_sun_1=0;var alarm_schedule_sun_2=0;var alarm_schedule_mon_0=0;var alarm_schedule_mon_1=0;var alarm_schedule_mon_2=0;var alarm_schedule_tue_0=0;var alarm_schedule_tue_1=0;var alarm_schedule_tue_2=0;var alarm_schedule_wed_0=0;var alarm_schedule_wed_1=0;var alarm_schedule_wed_2=0;var alarm_schedule_thu_0=0;var alarm_schedule_thu_1=0;var alarm_schedule_thu_2=0;var alarm_schedule_fri_0=0;var alarm_schedule_fri_1=0;var alarm_schedule_fri_2=0;var alarm_schedule_sat_0=0;var alarm_schedule_sat_1=0;var alarm_schedule_sat_2=0;� �– http://ip-de-la-camera:99/get_log.cgi?user=admin&pwd=

BTS SN La Salle Avignon 7 / 15 © 2017 tv <[email protected]>

Page 8: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

PROGRAMMATION

etc . . .

Photo et vidéo

Les CGI fournissant l’accès à la prise de photo et au flux vidéo de la caméra Wanscam JW0008 :– Photo : http://ip-de-la-camera:99/snapshot.cgi– Vidéo : http://ip-de-la-camera:99/videostream.cgi?user=admin&pwd=&resolution=32&rate=0

Remarque : il est possible d’accéder à la caméra en utilisant vlc ou d’autres players.Lire : les formats d’image

Commandes de déplacement

Les CGI fournissant les commandes de déplacement de la caméra Wanscam JW0008 :– Monter : http://adresse-ip-camera:99/decoder_control.cgi?command=0&onestep=1&user=admin&pwd=– Descendre : http://adresse-ip-camera:99/decoder_control.cgi?command=2&onestep=1&user=admin&pwd=– Gauche : http://adresse-ip-camera:99/decoder_control.cgi?command=4&onestep=1&user=admin&pwd=– Droite : http://adresse-ip-camera:99/decoder_control.cgi?command=6&onestep=1&user=admin&pwd=

etc . . .

Programmation

Séquence 1 : Visualisation du flux vidéo

Objectif : Être capable de visualiser le flux vidéo de la caméra à partir d’une application GUI/Qt.Il y a plusieurs possibilités pour accéder au flux vidéo de la caméra. Par exemple, on pourra utiliser :– la classe QWebView pour afficher la page web que fournit la caméra (monitor.htm pour IE, serverpush.htm pour Firefox et

mobile.htm pour les mobiles)– la bibliothèque OpenCV qui fournit une classe VideoCapture pour l’acquisition vidéo en provenance d’une caméra oud’un fichier

Solution n°1 : QWebView

L’utilisation de la classe QWebView est très facile pour afficher un document HTML dans une fenêtre Qt :� �// instancie le widget QWebViewQWebView *webView = new QWebView;

// facultatif : il est possible d'utiliser des signaux de QWebView//connect(webView, SIGNAL(urlChanged(QUrl)), this, SLOT(webview_changed(const QUrl &)));

// Fabrique une URLQUrl URL("index.htm");

// Charge le documentwebView->load(URL);� �Si le document nécessite une authentification, il faudra faire :� �// Fabrique une URLQUrl URL("index.htm");

URL.setUserName("admin");URL.setPassword("");

// Charge le documentwebView->load(URL);� �Il faudra tout d’abord activer le module QtWebKit dans son fichier de projet .pro :

BTS SN La Salle Avignon 8 / 15 © 2017 tv <[email protected]>

Page 9: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

PROGRAMMATION

� �...QT += core gui webkit...� �Documentation : La classe QWebView en Qt4 (en)L’application lira les paramètres d’accès à la caméra dans un fichier INI :� �[wanscam]adresse="192.168.52.93"port=99user=adminpwd=script=mobile.htm� �

Code source fourni : test-qt-webview.zip

Solution n°2 : OpenCV

Pré-requis : faire la mise en oeuvre d’OpenCV.Pour réaliser la capture du flux vidéo et son affichage, le principe est le suivant avec OpenCV sous Qt :

BTS SN La Salle Avignon 9 / 15 © 2017 tv <[email protected]>

Page 10: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

PROGRAMMATION

� �VideoCapture cap;Mat frame;QLabel* imageLabel = new QLabel;QString url = "http://192.168.52.93:99/videostream.cgi?user=admin&pwd=&resolution=32&rate=0";QString path = url + "&.mjpg";

// on ouvre le flux de la caméracap.open(path.toStdString().c_str());if(cap.isOpened()){

// on lit une framebool bSuccess = cap.read(frame);

// ou ://cap.grab();//bool bSuccess = capt.retrieve(frame);

if (!bSuccess){

qDebug() << QString::fromUtf8("<IHM::capturer()> erreur : could not grab a frame !");}else{

IplImage *img = new IplImage(frame);

QImage qtemp;

if (newImage && cvGetSize(newImage).width > 0){

int x;int y;char* data = newImage->imageData;

qtemp = QImage(newImage->width, newImage->height,QImage::Format_RGB32 );for( y = 0; y < newImage->height; y++, data +=newImage->widthStep )

for( x = 0; x < newImage->width; x++){

uint *p = (uint*)qtemp.scanLine (y) + x;*p = qRgb(data[x * newImage->nChannels+2],

data[x * newImage->nChannels+1],data[x * newImage->nChannels]);}

}

imageLabel->setPixmap(QPixmap::fromImage(qtemp));imageLabel->resize(imageLabel->pixmap()->size());

}

// on ferme le flux de la caméraif(cap.isOpened())

cap.release();}else{

qDebug() << QString::fromUtf8("<IHM::ouvrir()> erreur : video device not open !");}� �Remarques : Sous Qt, on utilisera un objet QLabel et un objet QImage pour assurer l’affichage des frames dans l’IHM. Àpartir d’une frame de type Mat ou IplImage, il faut pouvoir la convertir dans un type Qt (ici QImage ). Pour cela, on va seservir de la méthode Ipl2QImage() qui permet de convertir une image OpenCV de type IplImage vers une image Qt detype QImage. Pour assurer le rafraîchissement, on pourra utiliser soit un QTimer soit un thread (QThread).L’application devra lire les paramètres d’accès à la caméra ainsi que ceux de la vidéo dans un fichier INI :� �[wanscam]adresse="192.168.52.93"port=99

BTS SN La Salle Avignon 10 / 15 © 2017 tv <[email protected]>

Page 11: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

PROGRAMMATION

user=adminpwd=script=videostream.cgi

[video]; cf. docresolution=32rate=0periode=40 ; en ms (1000/40 = 25 images/s)� �

BTS SN La Salle Avignon 11 / 15 © 2017 tv <[email protected]>

Page 12: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

PROGRAMMATION

Code source fourni : test-qt-view.zip

Séquence 2 : Enregistrement du flux vidéo

Objectif : Être capable d’enregistrer le flux vidéo de la caméra à partir d’une application GUI/Qt.Il y a plusieurs possibilités pour enregistrer le flux vidéo de la caméra. Par exemple, on pourra utiliser :– les bibliothèques ou la commande cvlc de VLC

BTS SN La Salle Avignon 12 / 15 © 2017 tv <[email protected]>

Page 13: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

PROGRAMMATION

– la bibliothèque libavcodec qui contient tous les encodeurs et décodeurs audio/video de FFmpeg ou sa commande ffmpeg

Pour faire simple, on va utiliser ici la commande cvlc :� �$ sudo apt-get install vlc

$ cvlc "http://192.168.52.93:99/videostream.cgi?user=admin&pwd=&resolution=32&rate=0" --sout file/ts:./video-test.mjpg� �

Pour exécuter cette commande qui permet d’enregistrer le flux vidéo, on va avoir besoin de la classe QProcess qui permetd’exécuter des programmes externes.Pour lancer un processus, il faut donner le nom de l’exécutable et la liste des arguments du programme que vous voulezdémarrer dans les arguments de la méthode start(). Les arguments sont fournis sous forme de chaînes de caractèresindividuelles dans une QStringList.� �QString programme = "cvlc";QStringList arguments;

arguments << "http://192.168.52.93:99/videostream.cgi?user=admin&pwd=&resolution=32&rate=0" << "--sout" << "file/ts:./video-test.mjpg";

QProcess *processus = new QProcess();processus->start(programme, arguments);

// éventuellement, il faut appeler la méthode kill() pour l'arrêter (ce qui sera notre cas ici)processus->kill();� �Documentation : La classe QProcess en Qt4 (en)L’application lira les paramètres destinés à l’enregistrement dans un fichier INI :� �[enregistrement]url="http://192.168.52.93:99/videostream.cgi?user=admin&pwd="resolution=32rate=0duree=15000 ; en ms; si vide dans le répertoire de l'applicationchemin=fichier=enregistrementextension=mjpg� �

Au final, on obtent :

BTS SN La Salle Avignon 13 / 15 © 2017 tv <[email protected]>

Page 14: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

PROGRAMMATION

Remarque : avec cette caméra, le fichier vidéo (extension .mjpg) est au format Motion JPEG ou M-JPEG qui est uncodec vidéo qui compresse les images une à une en JPEG.Code source fourni : test-qt-record.zip

Séquence 3 : Informations et Orientation (PTZ)

Objectif : Être capable de commander la caméra à partir d’une application GUI/Qt.Avec l’API Qt, il est possible ici d’utiliser le module QtNetwork qui fournit notamment la classe QNetworkAccessManagerpour envoyer des requêtes et recevoir des réponses.Il faut tout d’abord activer le module QtNetwork dans son fichier de projet .pro :� �...QT += core gui network...� �Documentation : La classe QNetworkAccessManager en Qt4 (en)Son fonctionnement est assez simple :� �QNetworkAccessManager *manager;

// instancie la classe QNetworkAccessManagermanager = new QNetworkAccessManager(this);

// à la fin de l'envoie de la requête, on déclenchera le slot qui réceptionne les données reçues dans la réponseconnect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));

// on émet une requête pour déplacer la caméra à droiteQString URL = "http://192.168.52.14:99/decoder_control.cgi?command=6&onestep=1&user=admin&pwd=";manager->get(QNetworkRequest(QUrl(URL)));

// le slot de réceptionvoid replyFinished(QNetworkReply *reply){

if(reply->bytesAvailable()){

//reply->read();QByteArray datas = reply->readAll();qDebug() << QString::fromUtf8("<IHM::replyFinished()> reply : ") << datas;

}}� �L’application lira les paramètres d’accès à la caméra dans un fichier INI :� �[wanscam]adresse="192.168.52.93"port=99user=adminpwd=� �BTS SN La Salle Avignon 14 / 15 © 2017 tv <[email protected]>

Page 15: Activité : mise en oeuvre de la caméra IP Wanscamtvaira.free.fr/projets/activites/activite-mo-wanscam-jw008.pdf · Activité : mise en oeuvre de la caméra IP Wanscam Thierry Vaira

PROGRAMMATION

On gèrera aussi les erreurs d’accès :

Code source fourni : test-qt-ptz.zipVoir aussi : L’utilisation des bibliothèques POCO permet aussi d’émettre des requêtes HTTP vers les CGI de la caméraWanscam afin de commander son orientation PTZ.

Séquence 4 : Visionner une vidéo

Objectif : Être capable de visionner une vidéo à partir d’une application GUI/Qt.Lien : activite-qt-videoRetour au sommaire

BTS SN La Salle Avignon 15 / 15 © 2017 tv <[email protected]>