웹캠을 이용하여 화상 서버를 만드는 방법을 소개합니다. 

1. 테스트 웹캠 장비 :

    Z-Start Microelectronics의 Sansun SN-510 웹캠
    Logitech QuickCam Orbit/Sphere AF 웹캠 

2. 프로그램 :

    mjpg-streamer
    zoneminder
    MySQL/Apache 
    firefox 

3. 운영체제: 

    No1.Linux 0.3.1-3 

4. ZoneMinder 설치 

step1. zoneminder 패키지 설치시 MySQL과 의존성을 가지므로, No1.Linux에서 사용중인 MySQL-Max를 제거해 주어야 합니다.
      MySQL-Max를 안전하게 제거하려면 다음과 같이 재설치한 후에 제거해야 합니다. 먼저 제거만 하게 되면 오류가 있습니다.

      $ su -c 'apt-get install -y MySQL-Max'

      $ su -c 'apt-get remove -y MySQL-Max'

step2. ZoneMinder 패키지를 설치합니다. 

      $ su -c 'apt-get install -y zoneminder'

step3. MySQL 데몬을 띄웁니다. 

      $ su -c '/etc/init.d/mysql restart'

step4. MySQL에 접속합니다. 

      $ mysql -p mysql -u root
      Enter password: no1linux

step5. mysql> GRANT ALL PRIVILEGES ON zm.* TO 'zmuser'@localhost identified by 'zmpass'; 명령을 실행합니다. 

step6. MySQL를 종료한 후 쉘에서 다음 명령을 실행합니다.

      $ mysql -p mysql -u root < /usr/lib/zm/upgrade/zm_create.sql

step7. /etc/zm.conf 파일에서 다음 설정을 수정합니다. 

      ZM_DB_USER=zmuser
      ZM_DB_PASS=zmpass

step8. 다음과 같은 명령으로 zoneminder를 실행합니다. 

      $ su -c '/etc/init.d/zm restart'

step9. 아파치 데몬을 실행합니다. 

      $ su -c '/etc/init.d/httpd restart'

5. 웹캠 테스트 

웹캠을 USB 포트에 꼽은 후에 다음 명령을 실행하였을 때 웹캠 정보가 보이는지를 확인합니다. 

      $ /usr/lib/zm/bin/zmu -d /dev/video0 -q -v 

Video Capabilities
  Name: Generic Zc0305b
  Type: 1
  Can capture
  Video Channels: 1
  Audio Channels: 0
  Maximum Width: 640
  Maximum Height: 480
  Minimum Width: 176
  Minimum Height: 144
  Window Attributes
  X Offset: 0
  Y Offset: 0
  Width: 640
  Height: 480

Picture Attributes
  Palette: 4 - 24bit RGB
  Colour Depth: 24
  Brightness: 32768
  Hue: 0
  Colour :0
  Contrast: 32768
  Whiteness: 0
Channel 0 Attributes
  Name: ZC301-2
  Channel: 0
  Flags: 0
  Type: 2 - Camera
  Format: 0 - PAL
* TV 또는 HDTV 카드를 함께 하는 경우 이들 카드가 /dev/video0를 차지할 수 있으므로 웹캠의 디바이스를 정확히 명시해야 함.
* uvc 드라이버를 사용하는 Logitech 웹캠은 zoneminder에서 지원하질 않기 때문에 정보가 나오질 않음.

6. UVC 웹캠 설정

UVC 드라이버를 사용하는 웹캠을 zoneminder에서 지원되도록 하려면 mjpg-streamer로 웹캠을 구동시켜 주어야 합니다. 이 도구는 자료실에 등록되어 있으므로 다운받아 설치하면 됩니다.

     $ su -c 'mjpg-streamer -i "input_uvc.so -d /dev/video0 -r 320x240 -f 15" -o "output_http.so -p 8080"'

상기 명령은 320x240 해상도와 15프레임 속도로 8080 포트로 웹으로 전송되도록 하는 것입니다. 로지텍의 QuickCam Orbit/Sphere AF은 960x720 해상도를 지원하므로 이 해상도를 사용하면 웹브라우저에서 큰 화면으로 화상을 볼 수 있습니다. 

상기 명령을 통해서 일반 웹캠을 아이피 웹캠으로 만들어 사용할 수 있게 됩니다. gspcav 드라이버를 사용하는 웹캠을 아이피 웹캠으로 만드려면 input_uvc.so 대신에 input_gspcav1.so 모듈로 변경해 주면 됩니다.

파이어폭스를 실행하여 다음 주소로 접속하면 화상을 볼 수 있습니다.

     http://localhost:8080/?action=stream 

7. ZoneMinder 설정

step1. 파이어폭스 웹브라우저로 http://localhost/zm 주소로 접속합니다.

step2. [Add New Monitor]를 클릭합니다. 

zm3.png

step3. [General] 탭 설정에서 Source Type를 Local로 선택합니다. UVC 웹캠은 Remote로 선택합니다. 그리고 Function은 Monitor로 선택하고, 녹화하려면 Record로 선택하고, 모니터와 녹화를 동시에 하려면 Modect로 선택합니다.

zm4.png

step4. [Source] 탭을 클릭하여 Device Path에 웹캠의 디바이스명으로 지정하고, Device Format은 NTSC로 선택합니다. Capture Width와 height를 320, 240으로 지정합니다. 캡쳐 픽셀이 이보다 크면 웹캠에 따라서 화면이 나오지 않는 현상이 있습니다. [Save]를 클릭하여 설정을 저장합니다.

zm7.png

step5. UVC 웹캠의 경우 [Source] 탭 설정은 다음과 같이 합니다. 

Remote Host Name : localhost
Remote host Port : 8080
Remote Host Path : /?action=stream
Capture Width : 320
Capture Height : 240 

zm5.png

8. ZoneMinder로 웹캠 화면 보기

zm8.png

웹캠의 Name를 클릭하여 웹캠 화면을 볼 수 있습니다.

zm6.png

다음 예제 화면은 960x720 해상도의 웹캠 화면입니다. 

zm9.png