web-dev-qa-db-fra.com

Utilisez la caméra USB sur Android

Je dois afficher une vidéo transmise par une caméra USB connectée à ma tablette sur Android 3.2.

Comment puis-je faire ceci?

Je ne peux pas utiliser l'appareil photo de la tablette, car ma tablette est fixée à bord.

23
neoffreeman

(J'ai écrit ceci en 2012 quand il n'y avait pas de support pour la caméra USB. Je ne travaille plus sur Android plus .. donc je ne peux pas expliquer comment le faire avec l'API du dernier Android. Si vous connaissez une meilleure solution, veuillez la poster ici.)

La discussion n'est vraie que si le capteur à l'intérieur de la caméra USB est conforme aux UVC (la plupart des caméras d'aujourd'hui sont conformes).

À la date de cet article (1er mars 2012), il n'y a pas par défaut Android API disponible pour travailler sur une caméra externe. Donc, si vous êtes sérieux au sujet du projet, le travail vous impliqueriez d'écrire un firmware qui parle aux pilotes du noyau, puis d'afficher les données sur la couche d'application Android.

Lorsque vous insérez une caméra USB, vous devez d'abord vérifier quelques éléments.

1) Votre caméra est-elle alimentée par le port USB? (Pour que cela se produise, votre port USB doit avoir un support USB-OTG - Le port USB peut agir à la fois comme cible et comme hôte, vérifiez si les lumières de la caméra ( le cas échéant) sont-ils lumineux ou non?)

2) Le nœud est-il créé dans le répertoire/dev? (Uniquement si le noyau a la prise en charge de v4l2 et UVC activée, le nœud sera créé). Si un nœud est en cours de création, vous avez maintenant accès au véritable matériel qu'est la caméra USB et votre travail va être facile à partir de maintenant. pour vérifier do ls -l/dev/v * dans le système de fichiers Android et vérifier si video0 ou video1 est en cours de création.

4) Si le nœud est créé, vous devez écrire un firmware (UVC) et acquérir une trame à partir du matériel réel. Il (UVC) prend en charge différents appels ioctl qui parlent à la couche v4l2 dans le noyau et va vous chercher les cadres.

Ces cadres seraient principalement au format YUYV422 ou YUYV420.

Une fois que vous avez reçu les images, convertissez-les en RVB ou Jpeg (Android prend en charge la conversion) et affichez-les sur la toile ou l'image que vous voulez.

Pour l'enregistrement, vous devrez peut-être utiliser ffmpeg pour l'encodage. Cela convertira les images en vidéo.

34
mk..

Une chose à vérifier avant de commencer est de savoir si votre câble USB fonctionne avec une souris, un clavier et une clé USB (vous aurez besoin de l'application StickMount sur certains appareils pour que la clé USB fonctionne).

Je cherche également à faire fonctionner une webcam USB sur Android et j'essaie de reproduire ce qui a été fait sur http://brain.cc.kogakuin.ac.jp/research/ usb-e.html . Enfin, j'ai entendu dire que les webcams Bluetooth fonctionnent prêtes à l'emploi.

1
bbodenmiller