Aller au contenu

Webcam Usb Sur Syno


Sp@r0

Messages recommandés

  • 3 semaines après...

Voilà je me réponds à moi même pour vous informer que je suis parvenu a faire fonctionner une Webcam USB sur mon DS110j, ce que je parviens à faire :

  • compilation, ajout de uvcvideo à mon kernel
  • Streaming MJPEG via protocole http => mjpeg-streamer (vraiment très puissant et surtout extrêmement peu gourmand en ressources !!)
  • Ajout sans soucis dans la surveillance station
  • Lecture par script javascript, par applet java, directement par firefox, capture d'images fixes....

Voilà je ferais un poste pour décrire tout cela et je mettrais les fichiers compilés dans la zone téléchargement

Perso j'utilise une webcam logitech, mais uvcvideo à une liste de compatibilité très très large (c'est le module qui gère les webcams dans la plupart des distris linux)

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir à tous, déjà je vous remercie pour l'intérêt que vous portez à ce mod "Webcam USB" j'en suis très flatté !!! Bon pour commencer quelques remarques :

  • ATTENTION : Vous faites ces modifications à vos risques et périls !!
  • J'explique les choses tels que je les ai comprises, si jamais je me goure ou que vous avez des précisions vos remarques sont les biens venues.
  • Si vous ne savez pas vous servir de vi et/ou de nano, que vous ne savait pas ce qu'est ssh passé votre chemin !!!
Bon pour commencer le principe :
  • Installer un module pour gérer la webcam => video4linux c'est un genre d'api en fait
  • Installer un driver pour video4linux => uvcvideo c'est un drivers plus ou moins universelle => Liste des Webcams les webcams récentes sont a priori toutes compatibles sinon il existe d'autres drivers V4L
  • Installer un serveur de streaming => mjpeg streamer J'ai choisi celui là et pas ffmpeg car il est plus économe en ressources et qu'il permet le streaming en http + la compatibilité directe avec firefox

Et maintenant on met les mains dans le cambouis :

VIDEO4LINUX :

1. Téléchargez uvcvideo

2. Décompressé l'archive, dedans il y a répertoire Linux il faut le décompresser dans la source du kernel dans votre environnement de cross compilation => cf mon post sur usbserial

3. Reprendre de zéro la génération du fichier de config du kernel (trés important si on ne fait que oldconfig ben cela fonctionne pas)

4. make menu config pour selectionner les bonnes options

5. make modules

6. il vous faut les fichiers suivants : uvcvideo.ko ; videodev.ko ; v4l1_compat.ko ; v4l2_common.ko

7. il faut insérer les modules dans le bonne ordre

- insmod v4l1_compat.ko

- insmod videodev.ko

- insmod v4l2_common.ko

- insmod uvcvideo.ko

8. si tout vas bien lorsque vous branchez une webcam dmesg devrait vous donner çà :

Linux video capture interface: v2.00

usbcore: registered new interface driver uvcvideo

USB Video Class driver (v0.1.0)

usb 1-1.3: new high speed USB device using ehci_marvell and address 5

usb 1-1.3: configuration #1 chosen from 1 choice

uvcvideo: Found UVC 1.00 device <unnamed> (046d:09a1)

input: UVC Camera (046d:09a1) as /class/input/input0
9. il faut créer le node en root : mknod /dev/video0 c 81 0 => alors là je comprend pas pour quoi ça marche si qq peut le faire je suis preneur !! MJPEG STREAMER 1. télécharger uniquement disponible en svn => svn co https://mjpg-streame...t/mjpg-streamer mjpg-streamer 2. copier les sources dans le répertoire sources de votre environnement de cross compilation 3. on va compiler mjpeg streamer => le serveur, uvc streamer et une ancienne version et mjpeg client et un client stand alone de lecture mjpeg 4. éditer les makefile de mjpeg streamer => il faut ajouter au début çà à adapter en fonction de votre syno :

CC = /usr/local/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gcc-4.2.1

LD = /usr/local/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ld

RANLIB=/usr/local/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ranlib

CFLAGS="-I/usr/local/arm-none-linux-gnu/include"

LDFLAGS="-L/usr/local/arm-none-linux-gnu/lib"

5. un petit coup de make

6. on envoi les fichiers sur le syno

7. ensuite il faut une variable d'environnement pour que cela fonctionne :

export LD_LIBRARY_PATH='le repertoire de mjpeg streamer'

8. ./mjpg_streamer -i "test_picture.so" -o "output_http.so -w ./www -p 8099 -c utilisateur:motdepasse" => un mode de test sans la webcam => http://adressesyno:8099 devrait faire aparaitre un site de test

9. ./mjpg_streamer -i "input_uvc.so" -o "output_http.so -w ./www -p 8099 -c utilisateur:motdepasse" => pareil mais avec la webcam

Bon je vous conseil de lire les --help le readme et le script start.sh qui contient plein d'infos sur l'usage de mjpeg streamer !!!

Bon j'ai expliqué un peu en diagonale mais si le besoin s'en fait sentir j'étofferais le tout sinon je mets dans la section téléchargement mes fichiers compilé pour mon DS110j !!!

Lien vers le commentaire
Partager sur d’autres sites

Effectivement ma description est un peu compliquée mais c'est pour vous donnez (et aussi pour moi que je m'en souvienne) la suite des actions à mener pour compiler les fichiers nécessaires à l'ajout du support des Webcams.

A ce sujet j'ai découvert que toutes les webcams ayant un logo compatible avec Vista ou W7 sont forcément compatible UVC car c'est le standard que billou à choisi pour les webcams sous windows VISTA.

Pour en revenir à nos moutons j'ai donc décrit l'intégralité des manipulations nécessaires à la compilation à partir des sources, mais il vous est possible si votre architecture est compatible avec la mienne d'utiliser directement les fichiers de la zone téléchargement. Donc déjà j'ai créer les fichiers pour un 110j c'est à dire :

  • KERNEL : 2.6.24 => en mode console => uname -r vous retourne la version de votre kernel car certain syno sont en 2.6.15
  • Processeur : Marvell ARM mv6281 il suffit de regarder là pour connaitre le processeur de votre syno => ICI

Pour des architecture différentes, il faudra malheureusement re-compilé mais si il y a des demandes sérieuses je veux bien y réfléchir !!!

Sinon pour la mise en place dans le cas ou votre architecture est compatible :

1. Téléchargez les fichiers "WEBCAM USB sur syno"

2. Décompressez les sur le syno disons que nous travaillons dans "/volume1/public/webcam/"

3. On vas essayer d'insérer les modules du noyau (en supposant que les fichiers sont dans le répertoire définit en 2)

4. Entrez les commandes suivantes en ssh (ou telnet) dans le même ordre si tout vas bien il n'y a aucun message en retour (ATTENTION il faut ce connecter en root):


cd /volume1/public/webcam/

insmod v4l1_compat.ko

insmod videodev.ko

insmod v4l2_common.ko

insmod uvcvideo.ko

5. La commande lsmod doit vous renvoyer un liste qui contient au début les modules que l'on vient d'ajouter 6. Branchez votre webcam 7. La commade dmesg doit vous retourner quelque chose dans le genre :

Linux video capture interface: v2.00

usbcore: registered new interface driver uvcvideo

USB Video Class driver (v0.1.0)

usb 1-1.3: new high speed USB device using ehci_marvell and address 5

usb 1-1.3: configuration #1 chosen from 1 choice

uvcvideo: Found UVC 1.00 device <unnamed> (046d:09a1)

input: UVC Camera (046d:09a1) as /class/input/input0
8.il faut créer le node de connexion avec la commande suivante qui ne renvoi rien si cela à fonctionné : mknod /dev/video0 c 81 0 9. La webcam est installé et reconnu par le système maintenant n'importe quel application linux compatible V4L (la grande majorité en fait) peux accéder à la webcam 10. On va installer un logiciel qui accède à la webcam est rend disponible un flux mjpeg => mjpeg streamer 11. Il faut créer une variable d'environnement : export LD_LIBRARY_PATH=/volume1/public/webcam/mjpeg-streamer 12. On va exécuter le logiciel avec les paramètres par défaut :

cd /volume1/public/webcam/mjpeg-streamer

./mjpg_streamer -i "input_uvc.so" -o "output_http.so -w ./www -p 8099 -c utilisateur:motdepasse"

13. Le site http://adresse_de_votre_syno:8099 devrait vous ouvrir un site de test avec différents moyens d'accès au stream (le nom d'utilisateur est utilisateur et le mot de passe est motdepasse)

14. Voilà normalement cela devrait focnitonné bon aprés il y a encore quelques petite choses à faire si vous voulez que tt démarre automatiquement avec le syno vous avez également la possibilité de faire plein d'autres choses avec mjpeg streamer en consultant le README.

Voilà si vous avez des questions lachez vous !!!!!!

PS : je tiens juste à faire une remarque je fais des tests et des essais parce que cela m'amuse et que j'apprécie de partager ce que je suis parvenu à faire fonctionner (j'ai d'ailleurs plein de projets en stockent dont un secrètement liée à la Webcam usb => piloter un lance missile USB avec retour par webcam depuis une page web sur le syno, mais chut c'est en cours ....)

Cependant j'ai peu apprécié les remarques désobligeantes de certains sur éventuelles futilités du projet ou sur ça complexité (slybreiz, je ne te vise pas toi ta remarque est sympathique et constructive d'où ce post) voilà c'est dit !!!

Lien vers le commentaire
Partager sur d’autres sites

voila je viens de tester avec mon syno :

DS109 Marvell Kirkwood mv6281 ARM Processor SATA, 16-bit Memory Bus, 128MB of RAM

slynas> uname -r

2.6.24

slynas> insmod v4l1_compat.ko

insmod: /lib/modules/2.6.24: No such file or directory

insmod: v4l1_compat.ko: no module by that name found

slynas>

par contre je fouille pour la partie :

2. D

Lien vers le commentaire
Partager sur d’autres sites

voila je viens de tester avec mon syno :

DS109 Marvell Kirkwood mv6281 ARM Processor SATA, 16-bit Memory Bus, 128MB of RAM

slynas> uname -r

2.6.24

slynas> insmod v4l1_compat.ko

insmod: /lib/modules/2.6.24: No such file or directory

insmod: v4l1_compat.ko: no module by that name found

slynas>

par contre je fouille pour la partie :

2. D

Lien vers le commentaire
Partager sur d’autres sites

alors . je n'est pas d'environnement linux chez moi je suis sous seven . donc pas de compilation pou moi :(

et sinon je me trouve viens dans le répertoire public ou j'ai déposer le fichier que tu a mis en partage .

le proble c'est que j'ai fait un copier coller de t'es commande et la ca n'a pas fonctionner en les tapant directement dans le shell ca marche :P

donc la web cam est bien détectée

Linux video capture interface: v2.00

usbcore: registered new interface driver uvcvideo

USB Video Class driver (v0.1.0)

usb 1-1.3: new full speed USB device using ehci_marvell and address 3

usb 1-1.3: configuration #1 chosen from 1 choice

maintenant je vais passer a la suite

slynas> export LD_LIBRARY_PATH=/volume1/public/webcam/mjpeg-streamer

slynas> pwd

/volume1/public/USB_Webcam/mjpg-streamer

slynas> ./mjpg_streamer -i "input_uvc.so" -o "output_http.so -w ./www -p 8099 -c YYY:XXX"

MJPG Streamer Version.: 2.0

ERROR: could not find input plugin

 	Perhaps you want to adjust the search path with:

 	# export LD_LIBRARY_PATH=/path/to/plugin/folder

 	dlopen: input_uvc.so: cannot open shared object file: No such file or directory

slynas>

je viens de voir mon erreur mais toujours pareil j'ai remplacer le repertoire webcam pas USB_Webcam

Lien vers le commentaire
Partager sur d’autres sites


slynas> export

export HOME='/root'

export LD_LIBRARY_PATH='/volume1/public/webcam/mjpeg-streamer'

export LOGNAME='root'

export MAIL='/var/mail/root'

export OLDPWD='/volume1/public/USB_Webcam'

export PAGER='more'

export PATH='/opt/bin:/opt/sbin:/opt/sbin:/opt/bin:/usr/sbin:/usr/bin:/sbin:/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin'

export PGDATA='/volume1/@database/pgsql'

export PWD='/volume1/public/USB_Webcam/mjpg-streamer'

export SHELL='/bin/ash'

export SSH_CLIENT='192.168.0.11 59333 22'

export SSH_CONNECTION='192.168.0.11 59333 192.168.0.250 22'

export SSH_TTY='/dev/ttyp0'

export TERM='xterm'

export USER='root'

slynas>

slynas> ls

CHANGELOG 	_Makefile 	input_testpicture.so mjpg_streamer.h 	output_http.so 	utils.c

LICENSE 	input_control.so 	input_uvc.so 	mjpg_streamer.o 	plugins 	utils.h

Makefile 	input_file.so 	mjpg_streamer 	output_autofocus.so scripts 	utils.o

README 	input_gspcav1.so 	mjpg_streamer.c 	output_file.so 	start.sh 	www

slynas> ./mjpg_streamer -i "/volume1/public/webcam/input_uvc.so" -o "/volume1/public/webcam/output_http.so -w ./www -p 8099 -c yyy:xxx"

MJPG Streamer Version.: 2.0

ERROR: could not find input plugin

 	Perhaps you want to adjust the search path with:

 	# export LD_LIBRARY_PATH=/path/to/plugin/folder

 	dlopen: /volume1/public/webcam/input_uvc.so: cannot open shared object file: No such file or directory

slynas>



Lien vers le commentaire
Partager sur d’autres sites

oki ca fonctionne tres bien avec une web cam logitech C200

./mjpg_streamer -i "/volume1/public/webcam/mjpg-streamer/input_uvc.so" -o "/volume1/public/webcam/mjpg-streamer/output_http.so -w ./www -p 8099 -c yy:xx"

maintenant plus qu'a scripter tout ca pour avoir un petite interface pour lancer a distance le stream . ainsi qu'au redemarrage du Syno

encors merci pour l'aide .

ps via une page oueb est il possible de lancer un script qui se trouve sur le syno ?

Lien vers le commentaire
Partager sur d’autres sites

je viens de reactiver surveillance station

et essayer de l'ajouter ma web cam .

mais pas moyen de trouver un conf pour le faire fonctionner .

y avais un poste parlant d'une soluce pour raccrocher une web cam brancher sur pc et connecter a sureveillance station qui fonctionnais mais pas moyen de remettre la main dessus pour l'instant :P

Lien vers le commentaire
Partager sur d’autres sites

voila je vies de tete de cree un scripte pour lancer les module necesaire a la web cam et lancer le stream

je suis un debutant en script la donc merci de me corriger si necessaire

il faudrais aussi un script pour arreter le stream

le tout via une page oueb heberger sur le nas syno

#debut du scripts webcam usb sur un nas syno.

#lancement des modules

cd /root/webcam

insmod v4l1_compat.ko

insmod videodev.ko

insmod v4l2_common.ko

insmod uvcvideo.ko

#creationdu node de connexion

mknod /dev/video0 c 81 0

#variable d'environement mjpeg-streamer

export LD_LIBRARY_PATH=/root/webcam/mjpeg-streamer

#lanement du script mjpeg-streamer

cd /root/webcam/mjpeg-streamer

./mjpg_streamer -d "input_uvc.so" -o "output_http.so -w ./www -p 8099 -c YYY:XXX"

#fin du script

#by sly sur un concepte de Sp@ro 

Lien vers le commentaire
Partager sur d’autres sites

Bon ces pas mal ce que tu propose mais je partirais plutôt sur un truc du genre :

A copier dans un fichier nommé /usr/syno/etc/rc.d/S99MjpegStreamer.sh => pas forcément le meilleur endroit car effacé par les update de firmware mais bon moi je fais comme çà

Copier le code suivant et adapter les chemins des modules et de Mjpeg streamer


#!/bin/sh

# Script de controle de Mjpeg Streamer by Sp@r0 and slybreiz

# V0.1 du 14/03/2010



case $1 in

start)

#

# On commence par vérifier la présence des modules aux besoins ont les relances

#

if ( !(lsmod | grep "^v4l1_compat" -q) ); then

insmod /lib/modules/v4l1-compat.ko &

sleep 1

fi


if ( !(lsmod | grep "^videodev" -q) ); then

insmod /lib/modules/videodev.ko &

sleep 1

fi


if ( !(lsmod | grep "^v4l2_common" -q) ); then

insmod /lib/modules/v4l2-common.ko &

sleep 1

fi


if ( !(lsmod | grep "^uvcvideo" -q) ); then

insmod /lib/modules/uvcvideo.ko &

sleep 1

fi


#

# Lancement de mjpeg streamer

#

if ( !(export | grep "LD_LIBRARY_PATH" -q) ); then

export LD_LIBRARY_PATH+='/volume1/public/DomoZ/Mjpg-Streamer/' &

fi 


/volume1/public/DomoZ/Mjpg-Streamer/mjpg_streamer -b -i "input_uvc.so -d /dev/video0 -r VGA -f 5" -o "output_http.so -p 8099 -w /volume1/public/DomoZ/Mjpg-Streamer/www -c util:mdp" &

sleep 1

echo "Mjpeg streamer => demarrer"

;;

stop) 

/usr/bin/killall mjpg_streamer &

echo "Mjpeg streamer => arreter"

;;

restart)

$0 stop

$0 start

;;

*)

echo "Usages: $0 [start|stop|restart]"

;;

esac

Exécuter la commande suivante chmod +x /usr/syno/etc/rc.d/S99MjpegStreamer.sh

Normalement le stream démarrera automatiquement avec le syno (car il est placer dans le bon répertoire) sinon le script support les 3 commandes de bases :

/usr/syno/etc/rc.d/S99MjpegStreamer.sh start

/usr/syno/etc/rc.d/S99MjpegStreamer.sh stop

/usr/syno/etc/rc.d/S99MjpegStreamer.sh restart

Lien vers le commentaire
Partager sur d’autres sites

ton script est pas mal moi je suis rester avec mes compétence a des chose de basic tongue.gif va falloir que j'approfondisse mes script shell tongue.gif

donc par contre il faut que les fichier module soit copier dans /lib/module au préalable .

le S99 me semble c'est l'ordre de lancement des script c'est bien ca ?

Pour la qualité d'un script le tous c'est que çà marche ... aprés le reste c'est pour faire jolie !! deplus ce que propose là est loin d'être parfait !!!

Pour les modules soit tu les copies dans le même répertoire que moi ou tu modifie le chemin du script comme tu veux. (de même pour tout les autres chemins pour bien faire j'aurais du faire des varaibles au début quand j'aurais un moment je le ferais et je le mettrais dans le Zip de la zone téléchargement)

Est effectivement les scripts sont lancés dans l'ordre alphabétique donc on mets un muméro au début pour pouvoir gérer l'ordre j'ai choisi 99 pour que cela ce face tout à la fin une fois que tout a démarré.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.