Wie kann ich eine Arduino-basierte Kamera auf einen HTTP-Server streamen?

Ich entwerfe einen einfachen Arduino-basierten Roboter, der in der Lage wäre, einen A/V-Feed (kleine Farbkamera und Mikrofon) über das Internet an eine URL (meinen Webserver) zu streamen.

Ich würde ein Arduino-Board mit einem Arduino WiFi- oder Ethernet-Schild verwenden.

Mehrere Probleme:

  • Wie sende ich Kamera-Video-Feeds und Mikrofon-Audio-Feeds an das Shield (WiFi oder Ethernet)?
  • Wie überträgt die Abschirmung tatsächlich den A/V-Feed? Kodiert es den Stream automatisch oder muss ich das selbst programmieren?

Vielen Dank im Voraus.

Antworten (1)

Aus Gründen, die ich in Übertragen eines Videostreams über das WLAN eines Mikrocontrollers aufgezeigt habe , sind Arduinos nicht für Audio-/Video-Streaming geeignet. Der Audioteil davon macht dies noch schwieriger, da der Arduino das Video mit dem Audio kombinieren müsste. Tatsächlich ist "nicht geeignet" höflich, ich bezweifle, dass der Arduino überhaupt damit umgehen kann.

Ein 32bit MCU oder DSP ist dafür weitaus besser geeignet!

Wie sende ich Kamera-Video-Feeds und Mikrofon-Audio-Feeds an das Shield (WiFi oder Ethernet)?

Die meisten Kameras für diese Art von Anwendung übertragen ihr Video über eine serielle Schnittstelle. Dies sind keine fortschrittlichen Kameras (da der Arduino so unterversorgt ist). Diese Kameras codieren / komprimieren normalerweise Video als Motion Jpeg (MJPEG) , das dann über die serielle Kommunikation gesendet wird.

Ich kann anscheinend keine finden, aber ich würde denken, dass es Kameras gibt, die ein Mikrofon enthalten und Video und Audio zusammen codieren und über eine serielle Übertragung übertragen, sodass Sie sie nur an einen der seriellen Ports des Arduino anschließen müssen (oder Umgehen Sie einfach den Arduino und verbinden Sie ihn direkt mit einem Seriell-zu-WiFi/Ethernet-Prozessor wie dem von Ihnen erwähnten Schild.)

Wenn die Kamera die Audioseite nicht verarbeitet, können Sie das Audio mit dem ADC des Arduino abtasten (nicht empfohlen) oder einen anderen Prozessor ( Codec Shield ) verwenden, um das Audio zu codieren (viel bessere Qualität) und es an das Arduino senden. Dann müsste der Arduino das Audio mit dem Video codieren (was ich sehr bezweifle, dass es dazu in der Lage ist) und es über einen anderen seriellen Anschluss an die WiFi/Ethernet-Karte übertragen.

Wie überträgt die Abschirmung tatsächlich den A/V-Feed? Kodiert es den Stream automatisch oder muss ich das selbst programmieren?

Stellen Sie sich die Abschirmung nur als ein serielles Kabel vor, alles, was es tut, ist die Übertragung der seriellen Daten, die es empfängt. Wie auch immer Audio und Video kodiert sind, sie müssen am anderen Ende dekodiert werden (eine einfache Aufgabe für einen Computer). Ein Beispiel dafür für das Video ist MJPEG, die Kamera kodiert/komprimiert ihre rohen Pixeldaten in das JPEG-Format und überträgt es. Das empfangende Gerät dekodiert/dekomprimiert die Daten und zeigt sie an.

Hilfreiche Links:

Wow – danke @Garrett Fogerlie (+1) – ich wünschte, ich könnte deine Antwort weiter positiv bewerten! Wenn Sie nichts dagegen haben, bestätigen oder korrigieren Sie bitte meine Interpretation Ihrer empfohlenen Lösung: (1) Holen Sie sich einen Raspberry Pi-Controller und installieren Sie die entsprechende Netzwerksoftware darauf, die Streaming, codierte A/V-Feeds in TCP/IP-Pakete übersetzen kann ( Wo würde ich eine solche Software finden? ). (2) Kaufen Sie eine Webcam mit einem eingebauten Mikrofon, das die A/V zusammen kodiert und an einen USB-Port der MCU streamt. Die Netzwerksoftware des RaspberryPi nimmt diesen Streaming-Feed auf, wandelt ihn in TCP/IP-Pakete um...
...und sendet sie dann an einen USB-Wireless-Adapter. Ist dies der richtige Ablauf für das, was Sie empfehlen würden, oder übersehe ich wichtige Schritte? Danke noch einmal!
@HeineyBehinds ja, das sollte reichen. Die Webcam oder USB-Kamera muss über ein eingebautes Mikrofon verfügen, da der Raspberry Pi keinen Audioeingang hat (überhaupt keine analogen Eingänge, glaube ich). sind Treiber dafür oder verwenden Sie einfach die Ausrüstung, die sie in ihrem Forum empfehlen. Ich bin auch nicht die beste Person, um nach der Softwareseite zu fragen, aber ich würde denken, dass jede einfache Webcam-Software für Linux funktionieren würde, da der RP im Grunde ein Computer ist und Sie nur Web-Cams machen würden. Sie können auch im dortigen Forum oder StackOverflow nachfragen. Viel Glück
@HeineyBehinds Mir ist gerade aufgefallen, dass ich in meiner anderen Antwort auf "Streaming Your Webcam w/ Raspberry Pi" wolfpaulus.com/journal/embedded/raspberrypi_webcam verlinkt habe . Ich habe das Tutorial nur überflogen, aber es sieht vollständig aus. Es gibt auch einige andere Software-Links und sogar ein Medienserver-Betriebssystem in meinem anderen Beitrag electronic.stackexchange.com/a/50038/9730