CCTV / Webcam Server On Ubuntu 12.04

Building CCTV Server with Ubuntu Server 12.04 + Motion + USB Webcam(s)

What you need:

  1. PC with Ubuntu Server Installed
  2. PCI USB Card(s), as 1 USB Controller only capable of handling 2 USB Webcams
  3. Webcam(s). Make sure they work in linux. I have bought cheap webcams from Ebay, which are detected automatically by Ubuntu
  4. Optional : IR Illuminator
  5. WIP :  Utilizing USB RJ45 Extender

Steps:

1. Preparing Server & installing Motion

Update your server repo to the latest and install uvc driver :

apt-get install python-software-properties
sudo add-apt-repository ppa:pj-assis/ppa
sudo apt-get update
sudo apt-get install guvcview

sudo apt-get update

Install motion :

sudo apt-get install motion

2. Tweaking uvcvideo driver

This will be reset every reboot. If this works, create the following file:

containing the line:

3. Configuring Motion for multiple threads, storage location, etc

The configuration file is located at : /etc/motion/motion.conf

Suggestion : comment out the device in motion conf and configure each camera with their separate thread conf file

Make sure to add line of each thread file in the last line of the motion.conf

thread /etc/motion/camera1.conf

thread /etc/motion/camera2.conf

…..

thread /etc/motion/camera6.conf

Example content of camera1.conf ( pay attention to bold line):

root@cctv01:~# cat /etc/motion/camera1.conf
# /usr/local/etc/thread1.conf
#
# This config file was generated by motion 3.2.12

 

###########################################################
# Capture device options
############################################################

# Videodevice to be used for capturing (default /dev/video0)
# for FreeBSD default is /dev/bktr0
videodevice /dev/video2

# The video input to be used (default: 8)
# Should normally be set to 1 for video/TV cards, and 8 for USB cameras
input 8

# Draw a user defined text on the images using same options as C function strftime(3)
# Default: Not defined = no text
# Text is placed in lower left corner
text_left CAMERA 1
############################################################
# Target Directories and filenames For Images And Films
# For the options snapshot_, jpeg_, mpeg_ and timelapse_filename
# you can use conversion specifiers
# %Y = year, %m = month, %d = date,
# %H = hour, %M = minute, %S = second,
# %v = event, %q = frame number, %t = thread (camera) number,
# %D = changed pixels, %N = noise level,
# %i and %J = width and height of motion area,
# %K and %L = X and Y coordinates of motion center
# %C = value defined by text_event
# Quotation marks round string are allowed.
############################################################

# Target base directory for pictures and films
# Recommended to use absolute patch. (Default: current working directory)
#target_dir /usr/local/apache2/htdocs/cam1
############################################################
# Live Webcam Server
############################################################

# The mini-http server listens to this port for requests (default: 0 = disabled)
webcam_port 8081

# Command to be executed when a picture (.ppm|.jpg) is saved (default: none)
# The filename of the picture is appended as an argument for the command.
#on_picture_save /usr/local/motion-extras/camparse1.pl

# Command to be executed when a movie file (.mpg|.avi) is closed. (default: none)
# Filename of movie is appended as an argument for the command.
#on_movie_end /usr/local/motion-extras/mpegparse1.pl

Test & run motion :

sudo /etc/init.d/motion start

check syslog, make sure no error. You should see something like this:

Jul 20 10:43:52 cctv01 motion: [5] Using palette YUYV (352×288) bytesperlines 704 sizeimage 202752 colorspace 00000000
Jul 20 10:43:52 cctv01 motion: [5] found control 0×00980900, “Brightness”, range 0,255
Jul 20 10:43:52 cctv01 motion: [5] #011″Brightness”, default 140, current 102
Jul 20 10:43:52 cctv01 motion: [5] found control 0×00980901, “Contrast”, range 0,127
Jul 20 10:43:52 cctv01 motion: [5] #011″Contrast”, default 36, current 36
Jul 20 10:43:52 cctv01 motion: [5] found control 0×00980902, “Saturation”, range 0,127
Jul 20 10:43:52 cctv01 motion: [5] #011″Saturation”, default 80, current 80
Jul 20 10:43:52 cctv01 motion: [5] found control 0×00980903, “Hue”, range -15,15
Jul 20 10:43:52 cctv01 motion: [5] #011″Hue”, default -3, current -3
Jul 20 10:43:52 cctv01 motion: [5] found control 0×00980910, “Gamma”, range 1,3
Jul 20 10:43:52 cctv01 motion: [5] #011″Gamma”, default 2, current 2
Jul 20 10:43:52 cctv01 motion: [5] mmap information:
Jul 20 10:43:52 cctv01 motion: [5] frames=4
Jul 20 10:43:52 cctv01 motion: [5] 0 length=202752
Jul 20 10:43:52 cctv01 motion: [5] 1 length=202752
Jul 20 10:43:52 cctv01 motion: [5] 2 length=202752
Jul 20 10:43:52 cctv01 motion: [5] 3 length=202752
Jul 20 10:43:52 cctv01 motion: [5] Resizing pre_capture buffer to 1 items
Jul 20 10:43:53 cctv01 motion: [2] Started stream webcam server in port 8082
Jul 20 10:43:53 cctv01 motion: [2] Resizing pre_capture buffer to 2 items
Jul 20 10:43:53 cctv01 motion: [6] Started stream webcam server in port 8086
Jul 20 10:43:53 cctv01 motion: [6] Resizing pre_capture buffer to 2 items
Jul 20 10:43:53 cctv01 motion: [1] Started stream webcam server in port 8081
Jul 20 10:43:53 cctv01 motion: [1] Resizing pre_capture buffer to 2 items
Jul 20 10:43:53 cctv01 motion: [5] Started stream webcam server in port 8085
Jul 20 10:43:53 cctv01 motion: [5] Resizing pre_capture buffer to 2 items
Jul 20 10:43:53 cctv01 motion: [4] Started stream webcam server in port 8084
Jul 20 10:43:53 cctv01 motion: [4] Resizing pre_capture buffer to 2 items
Jul 20 10:43:53 cctv01 motion: [3] Started stream webcam server in port 8083
Jul 20 10:43:53 cctv01 motion: [3] Resizing pre_capture buffer to 2 items

4. IR Filter Mod &  utilizing IR Illuminator

http://www.instructables.com/id/Hacked-WebCam-for-IR-Photography-and-Night-Vision/

5. Mod for outdoor usage:

http://www.instructables.com/id/Convert-a-Webcam-to-work-outdors-in-bright-light/

6. BROKEN WIP : Utilizing USB RJ45 Extender

useful links :

http://renoirsrants.blogspot.com/2011/07/multiple-webcams-on-zoneminder.html

http://adhi.widjajanto.net/blog/archives/2011/12/my_home_server.html (in bahasa Indonesia)

http://www.instructables.com/id/Hacked-WebCam-for-IR-Photography-and-Night-Vision/

http://www.instructables.com/id/Convert-a-Webcam-to-work-outdors-in-bright-light/



Comments

comments

2 thoughts on “CCTV / Webcam Server On Ubuntu 12.04”

  1. This is a great article. However you are still limited with the number of USB port and the range of the usb cable (less than 6 meter). It would be greater if you can set up real CCTV/IP cameras through a network switch using UTP cables.

    1. True, this is just limited to maybe low res recording or basic recording of a small area. You might also look into having wireless IP camera as well. Those from Linksys are not bad.. however its not cheap. There are cheaper good resolution ones that is made in China which comes with a mobile app to remotely view your camera.. 🙂

Leave a Reply