it-swarm.com.de

Verwenden Sie eine IP-Kamera mit webRTC

Ich möchte eine IP-Kamera mit webrtc verwenden. Allerdings scheint webrtc nur Webcams zu unterstützen. Also versuche ich, den Stream der IP-Kamera in eine virtuelle Webcam umzuwandeln.

Ich habe Software wie IP Camera Adapter gefunden, aber sie funktionieren nicht gut (2-3 Bilder pro Sekunde und Verzögerung von 2 Sekunden) und sie funktionieren nur unter Windows. Ich ziehe es vor, Linux zu verwenden (wenn möglich).

Ich versuche ffmpeg/avconv:

  • zuerst habe ich ein virtuelles Gerät mit v4l2loopback erstellt (der Befehl lautete: Sudo modprobe v4l2loopback). Das virtuelle Gerät wird erkannt und kann mit einem Befehl wie: ffmpeg -re -i testsrc.avi -f v4l2 /dev/video1 mit einem Video (.avi) gespeist werden.

  • der Stream von der IP-Kamera ist verfügbar mit: rtsp://IP/play2.sdp für eine Dlink DCS-5222L-Kamera. Dieser Stream kann von ffmpeg erfasst werden.

Mein Problem ist es, die Verbindung zwischen diesen beiden Schritten herzustellen (den RSTP-Stream empfangen und in die virtuelle Webcam schreiben). Ich habe ffmpeg -re -i rtsp://192.168.1.16/play2.sdp -f video4linux2 -input_format mjpeg -i /dev/video0 ausprobiert, aber es gibt einen Fehler mit v4l2 (v4l2 nicht gefunden).

Hat jemand eine Idee, wie man eine IP-Kamera mit webRTC verwendet?

14
Minz

Kurze Antwort ist nein. RTSP wird im IETF-Standard für WebRTC nicht erwähnt, und derzeit hat kein Browser Pläne, dies zu unterstützen. Link zur Chrome-Diskussion .

Eine längere Antwort lautet, dass, wenn Sie wirklich ausverkauft sind, ein Webrtc-Gateway Breaker mit der nativen/- WebRTC-API erstellt werden muss.

  1. Starten Sie eine WebRTC-Sitzung zwischen Ihrem Browser und Ihrem Unterbrecher
  2. Holen Sie sich den IP-Kamera-Feed mit Ihrem Gateway/Breaker
  3. Verschlüsseln Sie den RTP-Stream und übertragen Sie ihn aus Ihrem RTSP-Stream, den der Breaker über die WebRTC-API erfasst hat, in Ihre WebRTC-Sitzung.

So haben andere haben es getan und es muss getan werden.

UPDATE 30.07.2014:

Ich habe mit dem janus-gateway experimentiert und ich glaube, dass das Streaming-Plugin genau dies tut, da es einen RTP-Stream packen und auf einen Webrtc-Peer verschieben kann. Für RTSP könnten Sie wahrscheinlich einen RTSP-Client erstellen (möglicherweise unter Verwendung einer -Bibliothek wie gstreamer ), und dann die RTP und RTCP von der Verbindung zum WebRTC-Peer drücken.

6
Benjamin Trent

Ich habe ein einfaches Beispiel erstellt, in dem ein RTSP- oder HTTP-Video-Feed in einen WebRTC-Stream umgewandelt wird. Dieses Beispiel basiert auf Kurento Media Server (KMS) und muss installiert sein, damit das Beispiel funktioniert.

Installieren Sie KMS und genießen Sie ...

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

UPDATE 22-09-2015. Check this post für eine technische Erklärung, warum Transcoding nur ein Teil der Lösung dieses Problems ist.

5
lulop

Janus-gateway hat kürzlich eine einfache RTSP-Unterstützung (basierend auf libcurl) zu seinen Streaming-Plugins hinzugefügt, da dies commit

Dann ist es möglich, das Gateway so zu konfigurieren, dass RTSP mit der Kamera ausgehandelt wird und das RTP gedacht wird, wobei WebRTC der Konfiguration der Streaming-Plugins hinzugefügt wird <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

Als Nächstes können Sie über die Streaming-Demo-Seite auf den WebRTC-Stream zugreifen http: //..../demos/streamingtest.html

4
mpromonet

Für diejenigen, die sich mit nativem WebRTC die Hände schmutzig machen möchten, lesen Sie weiter ...

Sie können versuchen, den RTSP-Stream einer IP-Kamera über einen einfachen ffmpeg-webrtc-Wrapper zu streamen: https://github.com/TekuConcept/WebRTCExamples .

Es verwendet die abstrakten Klassen VideoCaptureModule und AudioDeviceModule zum Injizieren von Rohmedien. Unter der Haube werden diese abstrakten Klassen für alle plattformspezifischen Hardware wie video4linux oder alsa-audio erweitert.

Der Wrapper verwendet die ffmpeg-CLI-Tools, aber ich denke nicht, dass es zu schwierig sein sollte, die ffmpeg-C-Bibliotheken selbst zu verwenden. (Der Wrapper ist darauf angewiesen, das Quellmedium zu transkodieren oder zu dekodieren und WebRTC dann gemäß den Anforderungen der ICE-Verbindungen neu kodieren zu lassen. Vorkodierte Medien werden noch verarbeitet.)

1
TekuConcept

Wenn Sie video4linux installiert haben, erstellt der folgende Befehl eine virtuelle Webcam aus einem RTSP-Stream:

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

Sie waren auf dem richtigen Weg, der "Decodebin" war das fehlende Glied.

0