2
\$\begingroup\$

I'm designing a simple Arduino-based robot that would be capable of streaming an A/V feed (small color camera and microphone) over the Internet to a URL (my web server).

I would be using an Arduino board with either an Arduino WiFi or Ethernet shield.

Several problems:

  • How to send camera video feed and microphone audio feed to the shield (WiFi or Ethernet)?
  • How does the shield actually transmit the A/V feed? Does it automatically encode the stream or is this something I'd have to program myself?

Thanks in advance.

\$\endgroup\$

1 Answer 1

3
\$\begingroup\$

For reasons I pointed out in Transmitting a video stream through a microcontroller's wifi, Arduinos are not suited for audio/video streaming. The audio portion of this makes this even harder since the Arduino would need to combine the video with the audio. In fact, "not suited" is being polite, I doubt the Arduino is even able to handle this.

A 32bit MCU or DSP is far better suited for this!

How to send camera video feed and microphone audio feed to the shield (WiFi or Ethernet)?

Most cameras for this type of application transmit their video via a serial interface. These are not advanced cameras (since the Arduino is so under-powered.) These camera's usually encode/compress video as Motion Jpeg (MJPEG), which is then sent via serial communication.

I can't seem to find one, but I would think that there are camera's that include a mic and encode the video and audio together and transmit it via serial so you would just need to connect it to one of the Arduino's serial ports (or just bypass the Arduino and connect it straight to a serial to WiFi/Ethernet processor like the shield you mentioned.)

If the camera does not handle the audio side, I suppose you could sample the audio using the Arduino's ADC (not recommended) or use some other processor (Codec Shield) to encode the audio (much better quality) and send it to the Arduino. Then the Arduino would need to encode the audio with the video (something I highly doubt it is capable of) and transmit it to the WiFi/Ethernet board via another serial port.

How does the shield actually transmit the A/V feed? Does it automatically encode the stream or is this something I'd have to program myself?

Think of the shield as just a serial cable, all it is doing is transmitting the serial data it is receiving. So however the audio and video is encoded, it will need to be decoded on the other end (a simple task for a computer.) An example of this for the video is MJPEG, the camera encodes/compresses its raw pixel data into JPEG format and transmits it. The receiving device decodes/un-compresses the data and displays it.

Helpful links:

\$\endgroup\$
4
  • \$\begingroup\$ Wow - thanks @Garrett Fogerlie (+1) - I wish I could upvote your answer more! If you don't mind, please confirm or correct my interpretation of your recommended solution: (1) Get a Raspberry Pi controller and get the appropriate networking software installed on it that can translate streaming, encoded A/V feeds into TCP/IP packets (where would I find such software?). (2) Buy a webcam with a built-in mic that encodes the A/V together and streams it to a USB port on the MCU. The RaspberryPi's networking software ingests this streaming feed, transforms it to TCP/IP packets... \$\endgroup\$ Commented Dec 5, 2012 at 11:40
  • \$\begingroup\$ ...and then sends them on to a USB wirelesss adapter. Is this the correct flow for what you would recommend, or am I missing any critical steps? Thanks again! \$\endgroup\$ Commented Dec 5, 2012 at 11:40
  • \$\begingroup\$ @HeineyBehinds yes, that should do it. The web cam or usb cam needs to have a mic built in because the Raspberry Pi doesn't have an audio input (no analog inputs at all, I think.) Before buying the camera and any other items like wireless adapter, check that there are drivers for it or just use the equipment they recommend on their forum. Also I'm not the best person to ask about the software side, but I would think any basic web cam software for Linux would work since the RP is basically a computer, and you would just be web camming. You can also ask at there forum or StackOverflow. Good Luck \$\endgroup\$ Commented Dec 5, 2012 at 11:52
  • \$\begingroup\$ @HeineyBehinds I just realized I linked to "Streaming Your Webcam w/ Raspberry Pi" wolfpaulus.com/journal/embedded/raspberrypi_webcam in my other answer. I only skimmed the tutorial but it looks complete. There are also some other software links and even a media server OS in my other post electronics.stackexchange.com/a/50038/9730 \$\endgroup\$ Commented Dec 5, 2012 at 12:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.