web-dev-qa-db-fra.com

Comment diffuser de la vidéo depuis ma webcam USB vers une page HTML distante

Je souhaite créer un programme qui diffusera en streaming une vidéo de ma webcam USB sur Internet vers une page Web.

Actuellement, j'utilise un service Web qui, lorsqu'il est déclenché, appelle fswebcam pour capturer une image, l'enregistrer dans le magasin de données, le convertir en binaire base64 et l'envoyer à la page HTML où elle est rendue dans l'attribut 'src' de 'img'. La page HTML a JavaScript qui appelle ce service une fois par seconde.

Comme vous pouvez le constater, c’est une façon horrible de le faire. Je préférerais avoir un bon flux si je peux. Mais je ne sais pas quelles technologies sont disponibles pour y parvenir.

Le service Web est écrit dans nodeJS. Le serveur fonctionne sur un Raspberry Pi 2. Je n'ai pas posé cette question dans le Raspberry Pi forum car je pense que c'est un problème d'ordre général Linux/programming

11
X0r0N

L'article ici explique l'ensemble du processus de la manière la plus simple possible avec des images de travail. C’est le moyen utilisé par Linux, pas un script node.js. J'énonce ici l'essentiel.

  • Connectez-vous avec votre Pi en utilisant l'adresse IP. 'pi' & 'framboise' est la valeur par défaut 'login as' et 'password' dans Raspbian.

  • Pour mettre à jour le système, tapez les commandes Sudo apt-get update et Sudo apt-get upgrade une à la fois.

  • Tapez la commande Sudo apt-get install motion pour démarrer l'installation.

  • Maintenant, pour vous assurer que la caméra est correctement détectée, tapez la commande lsusbet entrez. Vous devriez voir le nom de votre appareil photo. Si ce n'est pas le cas, il y a un problème avec votre appareil photo ou la caméra n'est pas prise en charge en mode "Mouvement".

  • Une fois l'installation terminée, tapez la commande Sudo nano /etc/motion/motion.conf et appuyez sur Entrée.

  • Ensuite, vous devez modifier certains paramètres dans le fichier .conf. Il peut être parfois difficile de trouver les paramètres, mais utilisez Ctrl+W pour le trouver. Alors suivez les étapes:

    1. Assurez-vous que "démon" est activé.
    2. Réglez le nombre d'images par seconde entre 1000 et 1500.
    3. Conservez "Stream_port" à 8081.
    4. 'Qualité_de_roulement' devrait être 100.
    5. Changez 'Stream_localhost' en OFF.
    6. Définissez 'webcontrol_localhost' sur OFF.
    7. Définissez la "qualité" sur 100.
    8. Réglez "largeur" ​​et "hauteur" sur 640 et 480.
    9. Définissez 'post_capture' sur 5.
    10. Appuyez sur ctrl + x pour quitter. Tapez y pour enregistrer et entrez pour vous conformer.
  • Encore une fois, tapez la commande Sudo nano /etc/default/motion et appuyez sur Entrée.

  • Définissez start_motion_daemon sur yes. Sauvegarder et quitter.

  • Tout d’abord, vous devez redémarrer le logiciel Motion. Pour ce faire, tapez la commande Sudo service motion restart et appuyez sur entrée.

  • Encore une fois, tapez la commande Sudo motion et appuyez sur Entrée. Maintenant, votre serveur est prêt.

  • Maintenant, ouvrez votre navigateur. Tapez l'adresse IP de votre Raspberry Pi et le numéro de port de cette manière:

    192.168.0.107:8081 (Il y a d'abord l'adresse IP, puis le ':', puis le numéro de port). Appuyez sur Entrée.

Vous pouvez maintenant voir le flux en direct provenant de votre webcam directement sur votre ordinateur portable ou sur votre téléphone portable, ou les deux en même temps. Mais ceci est une connexion locale. Pour le rendre public, configurez votre adresse IP avec une adresse publique de sorte que vous puissiez y accéder de partout dans le monde.

1
Rakibul Islam

Utilisez un cadre tel que livecam .

Solution de diffusion en direct par webcam utilisant GStreamer et Node.js

Ce module vous permet de diffuser votre webcam sur un réseau pour être utilisée par votre navigateur et/ou diffusée en fichier. Voir la documentation pour plus d’informations.

Utilisation:

// npm install livecam

const LiveCam = require('livecam');
const webcam_server = new LiveCam({
    'start' : function() {
        console.log('WebCam server started!');
    }
});

webcam_server.broadcast();
0
Dean Meehan