web-dev-qa-db-fra.com

Utiliser une caméra IP avec webRTC

Je veux utiliser une caméra IP avec webrtc. Cependant, webrtc semble ne prendre en charge que les webcams. J'essaye donc de convertir le flux de la caméra IP en webcam virtuelle.

J'ai trouvé des logiciels tels que IP Camera Adapter , mais ils ne fonctionnent pas bien (2-3 images par seconde et 2 secondes de retard) et ne fonctionnent que sous Windows, je préfère utiliser Linux (si possible).

J'essaie ffmpeg/avconv:

  • tout d'abord, j'ai créé un périphérique virtuel avec v4l2loopback (la commande était: Sudo modprobe v4l2loopback). Le périphérique virtuel est détecté et peut être alimenté par une vidéo (.avi) avec une commande telle que: ffmpeg -re -i testsrc.avi -f v4l2 /dev/video1

  • le flux de la caméra IP est disponible avec: rtsp://IP/play2.sdp pour une caméra Dlink DCS-5222L. Ce flux peut être capturé par ffmpeg.

Mon problème est de faire le lien entre ces deux étapes (recevoir le flux rstp et l'écrire sur la webcam virtuelle). J'ai essayé ffmpeg -re -i rtsp://192.168.1.16/play2.sdp -f video4linux2 -input_format mjpeg -i /dev/video0 mais il y a une erreur avec v4l2 (v4l2 introuvable).

Quelqu'un a-t-il une idée de l'utilisation d'une caméra IP avec webRTC?

14
Minz

La réponse courte est non. RTSP n'est pas mentionné dans la norme IETF pour WebRTC et aucun navigateur n'a actuellement l'intention de la prendre en charge. Lien vers la discussion sur Chrome .

La réponse plus longue est que si vous êtes vraiment à court d’idée sur cette idée, vous devrez créer une passerelle/disjoncteur webrtc en utilisant le WebRTC API .

  1. Démarrer une session WebRTC entre votre navigateur et votre disjoncteur
  2. Saisissez le flux de caméra IP avec votre passerelle/disjoncteur
  3. Cryptez et transmettez le flux rtp à votre session WebRTC à partir de votre flux RTSP recueilli par le disjoncteur via l'API WebRTC.

Voici comment d’autres l’ont fait et comment il faudra le faire.

MISE À JOUR 30/07/2014:

J'ai expérimenté avec janus-gateway et je crois que le plug-in de diffusion en continu fait EXACTEMENT cela, car il peut capturer un flux rtp et le transmettre à un homologue webrtc. Pour RTSP, vous pouvez probablement créer un client RTSP (en utilisant éventuellement une bibliothèque telle que gstreamer ), puis pousser le RTP et le RTCP à partir de la connexion à l'homologue WebRTC.

6
Benjamin Trent

J'ai créé un exemple simple de transformation d'un flux vidéo RTSP ou HTTP en un flux WebRTC. Cet exemple est basé sur Kurento Media Server (KMS) et nécessite son installation pour que l'exemple fonctionne.

Installez KMS et profitez ...

https://github.com/lulop-k/kurento-rtsp2webrtc

MISE À JOUR 22-09-2015. Consultez cet article pour une explication technique sur la raison pour laquelle le transcodage n’est qu’une partie de la solution à ce problème.

5
lulop

Janus-gateway a récemment ajouté un support simple RTSP (basé sur libcurl) à ses plugins de diffusion en continu depuis commit .

Ensuite, il est possible de configurer la passerelle pour qu'elle négocie RTSP avec la caméra et relaie le RTP pensé par WebRTC en ajoutant dans la configuration des plugins de diffusion en continu <prefix>/etc/janus/janus.plugin.streaming.cfg

[camera]
type = rtsp
id = 99
description = Dlink DCS-5222L camera
audio = no
video = yes
url=rtsp://192.168.1.16/play2.sdp

Vous pourrez ensuite accéder au flux WebRTC en utilisant la page de démonstration de diffusion en continu http: //..../demos/streamingtest.html

4
mpromonet

Si vous avez installé video4linux, la commande suivante créera une webcam virtuelle à partir d'un flux rtsp:

  gst-launch rtspsrc location=rtsp://192.168.2.18/play.spd ! decodebin ! v4l2sink device=/dev/video1

Vous étiez sur la bonne voie, le "decodebin" était le chaînon manquant.

0
Dominic Cerisano