Video streaming over HTTP
This article illustrates how to do video streaming via web using some commercial USB webcams compatible with Linux UVC driver.
In the following image is visible an CORE9G25 SoM wired directly to the circuitry os a Microsoft HD-3000 webcam:
This is the result obtained on a web browser.
We've tested some webcams that belong to different classes of cost and feature:
- Microsoft Lifecam HD-3000
- Microsoft Lifecam HD-5000
- Microsoft Lifecam Cinema 720p HD webcam
- Microsoft LifeCam Studio 1080p HD
- Logitech Webcam C250 1.3 megapixel webcam
- Logitech QuickCam® Sphere AF. Motorised 2-megapixel HD sensor webcam with Carl Zeiss® optics.
All these cams are compatible with the USB Video device Class (UVC) that is a standard USB device class defined by the USB Implementers Forum.
The UVC driver for Linux are available here http://linux-uvc.berlios.de but since the Linux 2.6.26 is included in kernel source distribution. This driver and the Video for Linux (V4L2) support is already installed in the factory default Debian Linux available for the CORE9G25 Linux Boards.
What we need more is mjpeg_streamer program that gets the mjpeg data from V4L2 and send it through a HTTP session.
Mjpeg_streamer automatically generates a set of html pages that illustrates different methods to stream the video over your browser. The best result comes using Google Chrome on any OS but it works well also on Firefox, Opera and IE.
The stream works well but slower also on the iPhone.
Using the Logitech QuickCam Sphere AF it is possible to control also the camera tilt an pan with the default control panel.
MJPG Streamer installation
It is possible to install MJPG streamer from the sources and compile it directly on the CORE9G25 Linux Board.
Download the sources from the CD://debian/code/webcam/mjpg-streamer.tar.gz
debarm:~# tar xvzf mjpg-streamer.tar.gz debarm:~# cd mjpg-streamer debarm:~/mjpg-streamer#
Now install the make utility and the libjpeg-dev and libv4l-dev libraries.
Type:
debarm:~# apt-get update debarm:~# apt-get install make libjpeg-dev libv4l-dev
Now run the source compilation:
debarm:~/mjpg-streamer# make
After a while the mjpg-streamer executable will be ready.
How to use MJPG Streamer
Plug your webcam and type:
debarm:~/mjpg-streamer# dmesg usb 1-2: new full speed USB device using at91_ohci and address 4 Linux video capture interface: v2.00 uvcvideo: Found UVC 1.00 device (046d:0804) input: UVC Camera (046d:0804) as /devices/platform/at91_ohci/usb1/1-2/1-2:1.0/input1 usbcore: registered new interface driver uvcvideo USB Video Class driver (v1.0.0) usbcore: registered new interface driver snd-usb-audio
Now run the streaming server typing:
debarm:~/mjpg-streamer# ./mjpg_streamer -i "./input_uvc.so -f 15 -r 640x480" -o "./output_http.so -w ./www" MJPG Streamer Version.: 2.0 i: Using V4L2 device.: /dev/video0 i: Desired Resolution: 640 x 480 i: Frames Per Second.: 15 i: Format............: MJPEG o: www-folder-path...: ./www/ o: HTTP TCP port.....: 8080 o: username:password.: disabled o: commands..........: enabled
If you are using an CORE9G25 on full speed USB ports (Port A and B) try to get the streaming in 720p resolution by typing:
debarm:~/mjpg-streamer# ./mjpg_streamer -i "./input_uvc.so -f 15 -r 1280x720" -o "./output_http.so -w ./www"
A complete list of examples are available on the start.sh file in mjpg_streamer directory.
The video below shows a web video streaming using the tilt and pan controls:
Notes for Debian Lenny 5.0 users
If you are using Debian Lenny 5.0 add to the /etc/apt/sources.list file this line:
deb http://backports.debian.org/debian-backports lenny-backports main
Related links
Documentation Terms of Use
The Acme Systems srl provides this Debian system development and user manual.
The origin of these doc came from the website: http://www.acmesystems.it
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.