In this post , I’ll describe a practical use of the Beagleboard : It’s about building a Wireless IP camera for Home surveillance.
Hardware components:
The Set-up of the Wi-Fi dongle and the camera were described in previous posts on this blog.
For the Software I used Angstrom Linux and MJPG-Streamer which is not available as an Angstrom package but I had to build it manually for the Beagleboard:
First checkout the source from the Subversion repository :
svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer
then cross compile it by issuing :
cd mjpg-streamer/mjpg-streamer && make CC=arm-angstrom-linux-gnueabi-gcc
If the build is successful it will generate “mjpg_streamer” binary and plugins : a set of shared libraries (*.so)
that you need to transfert to the filesystem of the SDCard plus the “www” folder.
Finally you can lunch the mjpg-streamer webserver with :
./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -y" -o "./output_http.so -w ./www"
(or put it in a script that start automatically)
The mjpg-streamer is listening on the TCP PORT 8080 so you’ll able to view the video stream by pointing any browser on the beagleboard IP address:
http://beagleboard:8080
you can also configure your router to allow external access from the Internet on your video stream by enable 8080 port forwarding.
Here is a live demo video (view from my balcony):
and here is a nightly stream demo:
Nice! Any details on hardware / software used? Cheers, tamberg
Hi,
I have followed your guide for cross compiling the mjpg streamer. however, i got the following error
patrick@ubuntu:~/mjpg-streamer/mjpg-streamer$ make CC=/usr/local/angstrom/arm/bin/arm-angstrom-linux-gnueabi-gcc
/usr/local/angstrom/arm/bin/arm-angstrom-linux-gnueabi-gcc -D’SVN_REV=”3:154M”‘ -O2 -DLINUX -D_GNU_SOURCE -Wall -c -o mjpg_streamer.o mjpg_streamer.c
make: /usr/local/angstrom/arm/bin/arm-angstrom-linux-gnueabi-gcc: Command not found
make: *** [mjpg_streamer.o] Error 127
May I know how do I solve this? Hope to hear from you soon as I really need this to complete my project. Thanks alot! 🙂
Hi,
Do you have a cross-compiler installed ?
hmm, how do i check? I am very new to this. so i am very sorry if i dont get what you mean..
Download the cross compiler from here :
http://www.angstrom-distribution.org/toolchains/angstrom-2011.03-i686-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2
untar it under at your root /
# sudo tar xvfj angstrom-2011.03-i686-linux-armv7a-linux-gnueabi-toolchain-qte-4.6.3.tar.bz2 -C /
add it to you path
# source /usr/local/angstrom/arm/environment-setup
that’s it you have now a ready to use cross-compiler 😉
Hi,
nice, did you check by the chance used bandwidth ? As far as I understood, you are taking MJPEG direct from the camera and not encoding on beagle, right ?
Thanks,
Maksym.
Hi Maksym,
the LI-LBCM3M1 camera module has only a CMOS sensor so all the decoding is done by the host cpu.
Of course I’m getting some latency 😦
Better would be using gstreamer with dsp enhancement.
Intersting project by the way your blog is giving me some inspirations 😉
Ayoub
Hi again,
is not true what I wrote; I’ve just read t
he mt9t111 datasheet and it seems that it has an integrated jpeg encoder.
I have to check the camera driver and find out where the latency is coming from.
Thanks again for the question I was even not aware about that!
Hi,
I didn’t check this exactly camera, but most of the web cameras could provide mjpeg out of the box. In the beginning of the project (couple of years ago) we tested almost all streaming servers and all of them buffering data, hence the latency. We wrote our own software to reduce latency. We didn’t test mjpeg_server though.
that is a really cool project. I may have some spare time in autumn and then I will check back for working with a BeagleBoard 😀
i was wondering if this could be done easier with ffmpeg?
I didn’t try it.