ÀÎÅͳݹæ¼Û ¹× À¥Ä·(Webcam) ¼³Ä¡ (II)

    ÇÊÀÚ : ¹èö¼ö / ¸®´ª½º¿ùµå ¹ßÇàÀÎ

 

     

    4¿ù È£¿¡ ½Ç¸° ¸®¾ó¼­¹ö¸¦ »ç¿ëÇÏ´Â ÀÎÅÍ³Ý ¹æ¼ÛÀº ¿µ»ó°ú »ç¿îµå µ¥ÀÌÅ͸¦ ½ºÆ®¸² ÇüÅ·Π½Ç½Ã°£À¸·Î ³»º¸³»´Â ¹æ½ÄÀ̾ú´Ù. ¸®¾ó¼­¹ö´Â µ¿½Ã »ç¿ëÀÚ°¡ 25¸íÀ» ³ÑÀ¸¸é ±¸¸Å¸¦ ÇØ¾ß ÇÏ´Â »ó¿ë ÇÁ·Î±×·¥À̶ó »ç¿ë¿¡ Á¦ÇÑÀÌ µû¸¥´Ù. ¶Ç ÀÎÅÍ³Ý ¹æ¼ÛÀ» ¼ö½ÅÇÏ´Â Ãøµµ Àü¿ë ÇÁ·Î±×·¥(¸®¾óÇ÷¹À̾î)À» ¼³Ä¡ÇØ¾ß ÇÑ´Ù.

    ¿©±â¿¡ ¼Ò°³ÇÏ´Â À¥Ä·(Webcam)Àº ¼Ò½º°¡ °ø°³µÈ ÇÁ¸®¿þ¾îÀ̹ǷΠ´©±¸µç ÀÚÀ¯·Î »ç¿ëÀÌ °¡´ÉÇÏ°í ÇÁ·Î±×·¥ ½Ç·Â¸¸ ÀÖÀ¸¸é ÀÚ½ÅÀÇ ½Ã½ºÅÛ¿¡ ¸Â°Ô º¯°æÇصµ µÈ´Ù. ¶Ç »ç¿ëÀÚ´Â À¥ºê¶ó¿ìÀú¿¡¼­ º¼ ¼ö ÀÖ´Ù. ´Ü, ÃÊ´ç ÇÁ·¹ÀÓ ¼ö°¡ Àû¾î µ¿ÀÛÀÌ ²÷±â´Â Á¡°ú »ç¿îµå´Â Áö¿øÇÏÁö ¾Ê´Â´Ù´Â Á¡ÀÌ ÀÎÅÍ³Ý ¹æ¼Û°ú ´Ù¸£´Ù.

    À¥¼­¹ö³ª ¶Ç´Â ´Ù¸¥ ¼­¹ö¿¡ ¿¬°áµÈ  Ä«¸Þ¶ó¿¡¼­ ĸÃÄÇÑ È­»óÀ» ÀÏÁ¤ °£°ÝÀ¸·Î À¥ºê¶ó¿ìÀú¿¡¼­ Áö¿øÇÏ´Â ±×¸² ÆÄÀÏ(jpg³ª gif)·Î ȨÆäÀÌÁö¿¡ ¿Ã·ÁÁÖ°í À̸¦ »ç¿ëÀÚÀÇ À¥ºê¶ó¿ìÀú°¡ °è¼ÓÇؼ­ Àü¼ÛÀ» ¹Þµµ·Ï ÇÏ´Â°Ô À¥Ä·ÀÇ ¿ø¸®ÀÌ´Ù. °»½ÅµÇ´Â ±×¸² ÆÄÀÏÀ» ÃÊ´ç 5 ÇÁ·¹ÀÓ Á¤µµ·Î ³ôÀÌ¸é °ÅÀÇ ÀÎÅÍ³Ý ¹æ¼Û°ú °°Àº ¼öÁØÀÇ È­ÁúÀ» ±¸ÇöÇÒ ¼ö ÀÖ´Ù.

    ÀÌ ±ÛÀÇ Àü°³ ¼ø¼­´Â ¾Æ·¡¿Í °°´Ù.

    1) Ä«¸Þ¶ó¿¡¼­ ĸÃÄ ÇÑ È­»óÀ» ±×¸² ÆÄÀÏ(jpg ¶Ç´Â gif)·Î ÀúÀåÇÏ´Â ´Ü°è
    2) ȨÆäÀÌÁö¿¡ ±×¸² ÆÄÀÏ ¾÷·Îµå
    3) ¼­¹ö¿¡¼­ »ç¿ëÀÚÀÇ À¥ºê¶ó¿ìÀú·Î ±×¸² ÆÄÀÏ ¿¬¼Ó Àü¼Û µîÀÌ´Ù.

    ¼³Ä¡¿¡ »ç¿ëÇÑ ¹èÆ÷º»Àº µ¥ºñ¾È 2.2 ÀÌ°í Ä¿³ÎÀº 2.2.18ÀÌ´Ù. ±×·¯³ª ¹èÆ÷º» ¹× Ä¿³ÎÀº ¾î´À °ÍÀ» »ç¿ëÇصµ »ó°ü¾ø´Ù. Ä¿³Î 2.4¸¦ »ç¿ëÇÑ´Ù¸é ĸÃĺ¸µå ¼³Ä¡¸¦ À§ÇÑ µå¶óÀ̹ö°¡ ¾à°£ ´Þ¶óÁø´Ù.

 

1. Ä«¸Þ¶ó ¼³Ä¡

    óÀ½ ÇÊ¿äÇÑ °ÍÀº Ä«¸Þ¶ó¸¦ ¸®´ª½º¿¡ ¿¬°áÇϱâ À§ÇØ ÇÊ¿äÇÑ µå¶óÀ̹ö ¼³Ä¡ÀÌ´Ù. USB¿ë Ä«¸Þ¶ó¶ó¸é USB Áö¿ø ¹× ÇØ´ç Ä«¸Þ¶ó¿¡ ´ëÇÑ µå¶óÀ̹ö°¡ ÇÊ¿äÇÏ´Ù. ĸÃĺ¸µå¿¡ Ä«¸Þ¶ó¸¦ ¿¬°áÇÑ´Ù¸é ĸÃĺ¸µå µå¶óÀ̹ö¸¸ ¼³Ä¡ÇÏ¸é µÈ´Ù. ÀÌ ºÎºÐÀº 4¿ù È£¿¡ ¼³¸íÇßÀ¸¹Ç·Î ¿©±â¼­´Â ±âº»ÀûÀÎ ³»¿ë¸¸ ¼³¸íÇÑ´Ù.

    Bt8x8 ĨÀ» »ç¿ëÇϴ ĸÃ帵å(TV Ä«µå)¿ë bttv µå¶óÀ̹ö¸¦ ¼³Ä¡ÇÏ·Á¸é Ä¿³Î 2.2.18ÀÇ °æ¿ì http://www.strusel007.de/linux/bttv/ »çÀÌÆ®¿¡¼­ i2c ÆÐÄ¡¸¦ ¹Þ¾Æ Ä¿³Î ¼Ò½º¸¦ ÆÐÄ¡ÇÏ°í Ä¿³Î ÄÄÆÄÀϽà ¾Æ·¡ ¿É¼ÇÀ» ¼±ÅÃÇØ¾ß ÇÑ´Ù.(2.4 Ä¿³ÎÀº ÆÐÄ¡°¡ ÇÊ¿ä ¾ø´Ù.)

    Character devices  --->
    I2C support  --->
    <*> I2C support  
    <*> I2C bit-banging interfaces

    Video For Linux  --->
    <*> Video For Linux
    <M> BT848 Video For Linux

    bttv µå¶óÀ̹ö´Â Ä¿³Î¿¡ µé¾î ÀÖÀ¸³ª ÇöÀç °è¼ÓÇؼ­ ¾÷µ¥ÀÌÆ® µÇ°í ÀÖÀ¸¹Ç·Î http://www.strusel007.de/linux/bttv/ »çÀÌÆ®¿¡¼­ ´Ù¿î¹Þ¾Æ ÄÄÆÄÀÏÇØ ¸ðµâ·Î ¿Ã¸®´Â°Ô ÁÁ´Ù. ÄÄÆÄÀÏÀº Ä¿³Î ¸ðµâ »ý¼º ÀÌÈÄ¿¡ ÇØ¾ß ÇÑ´Ù.

    bttv ¸ðµâÀº µ¥ºñ¾ÈÀº /etc/modules¿¡ ³ÖÀ¸¸é µÇ°í ·¹µåÇÞÀº /etc/rc.d/rc.modules¿¡ ¾Æ·¡Ã³·³ Ãß°¡ÇÑ´Ù.

    #!/bin/bash
    depmod -a
    modprobe bttv

    bttv µå¶óÀ̹ö°¡ ¸ðµâ·Î ¿Ã¶ó¿Í ÀÖ´ÂÁö È®ÀÎÇÏ´Â ¹æ¹ýÀÌ´Ù.

    video:/usr/src/linux# lsmod
    Module               Size       Used by
    bttv                    53564    0
    kcompat24         3648       0  [bttv]

    USB ¿ë Ä«¸Þ¶ó´Â Çػ󵵳ª °Å¸® µî¿¡ Á¦ÇÑÀÌ ÀÖ¾î À¥Ä· ¿ëÀ¸·Î´Â ºÎÀû´çÇÏ´Ù. ĸÃĺ¸µå¸¦ »ç¿ëÇؼ­ ÀÏ¹Ý CCD ¹æ½Ä Ä«¸Þ¶ó¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. Ä«¸Þ¶ó´Â NTSC ¹æ½ÄÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ¿ì¸®³ª¶óÀÇ TV ¹æ¼Û¹æ½ÄÀÌ NTSC ¹æ½ÄÀ̱⠶§¹®ÀÌ´Ù.

 

2. ±×¸² ÆÄÀÏ »ý¼º ¹× ȨÆäÀÌÁö¿¡ ¾÷·Îµå

    Ä«¸Þ¶ó¿¡¼­ ÀâÀº ¿µ»óÀ» ±×¸² ÆÄÀϷΠĸÃÄÇؼ­ À̸¦ ȨÆäÀÌÁö·Î ¿Ã·ÁÁÖ´Â ÇÁ·Î±×·¥Àº ¿©·¯ °¡Áö°¡ ÀÖ´Ù.
    ¿©±â¼­´Â xawtv ¿¡ ³ª¿Í ÀÖ´Â webcam ÇÁ·Î±×·¥À» »ç¿ëÇÑ´Ù.

    1) ÆÄÀÏ ÀÖ´Â °÷

    - À§Ä¡ : http://www.strusel007.de/linux/xawtv/
    - ÆÄÀϸí : xawtv_3.30.tar.gz
              ###
    xawtv ÃֽŠ¹öÀüÀº 3.43ÀÌ´Ù. ±×·±µ¥ ÇÊÀÚ°¡ ÀÌ ±ÛÀ» ¾²·Á°í 3.43À» ´Ù¿î¹Þ¾Æ µ¥ºñ¾È 2.2¿¡¼­ ÄÄÆÄÀÏ ÈÄ ½ÇÇàÇϴµ¥ °è¼ÓÇؼ­ ÀÓ½ÃÆÄÀÏ ÀúÀå ºÎºÐ¿¡¼­ ¿¡·¯°¡ ³µ´Ù. ¹èÆ÷º» ¹®Á¦Àΰ¡ »ý°¢Çؼ­ ·¹µåÇÞ 6.2¿¡¼­ Å×½ºÆ®Çصµ ¸¶Âù°¡Áö¿´´Ù. ±×·¡¼­ ¿¹Àü¿¡ ´Ù¿î ¹Þ¾Æ ¼³Ä¡ÇÑÀûÀÌ ÀÖ´Â 3.30À» »ç¿ëÇÏ´Ï ÀÌ»óÀÌ ¾ø´Ù. ±×·¡¼­ ¿©±â¼­´Â ÀÏ´Ü 3.30À» ±âÁØÀ¸·Î ¼³¸íÀ» ÇÑ´Ù. 3.43¿¡¼­ ¾ÈµÇ´Â ¿øÀÎÀº ³ªÁß¿¡ ÆÄ¾ÇµÇ¸é ´Ù¸¥ ±âȸ¿¡ ¼³¸íÇÏ°Ú´Ù.
              ###

    2) ÄÄÆÄÀÏ

    µ¥ºñ¾ÈÀÇ °æ¿ì´Â ¾Æ·¡ µÎ ÆÐÅ°Áö°¡ ¼³Ä¡µÅ¾ß ÇÑ´Ù. ·¹µåÇÞÀº ¸ÖƼ¹Ìµð¾î °ü·Ã ÇÁ·Î±×·¥ ¹× development °ü·Ã ÇÁ·Î±×·¥À» ¼³Ä¡ÇÑ´Ù.

    graphics   libjpeg62-de   Development files for the IJG JPEG library [libc6]
    libs       libjpeg62      The Independent JPEG Group's JPEG runtime library [libc6]

    - tar zxvf xawtv_3.30.tar.gz
    - cd cd xawtv-3.30
    - make
    - make install

    /usr/local/bin µð·ºÅ丮¿¡ webcam À̶ó´Â ½ÇÇà ÆÄÀÏÀÌ ¸¸µé¾î Áø´Ù. »ç¿ë¹ýÀº ¡°man webcam¡± ¸í·ÉÀ» ÁÖ¸é ³ª¿Â´Ù.

    3) .webcamrc ÆÄÀÏ ¼³Á¤

    webcam ±¸¼º ÆÄÀÏÀº .webcamrc ÀÌ´Ù. webcamÀ» ½ÇÇàÇÏ´Â »ç¿ëÀÚÀÇ È¨ µð·ºÅ丮¿¡ ÀÌ ÆÄÀÏÀÌ ÀÖ¾î¾ß ÇÑ´Ù.
    (ºÎÆà ¶§ ÀÚµ¿ ½ÇÇàÀ̶ó¸é root(/) µð·ºÅ丮¿¡ ³Ö´Â´Ù.)

    ÇÊÀÚ°¡ »ç¿ëÇÑ ¼³Á¤Àº ¾Æ·¡¿Í °°´Ù.

    [ftp]
    host    = www
    user    = webcam
    pass    = xxxxxx
    dir     = /htdocs/video
    file     = webcam.jpeg
    tmp    = uploading.jpeg
    passive = 1
    debug  = 0
    auto    = 0
    local    = 1

    [grab]
    device  = /dev/video0
    text    = ¡°www.linuxvideo.co.kr  %Y-%m-%d %H:%M:%S¡±
    width   = 320
    height  = 240
    delay   = 2
    input   = 1
    norm   = 1
    rotate   = 0
    top     = 0
    left     = 0
    bottom  = 240
    right   = 320
    quality  = 80
    trigger  = 0
    once    = 0

    [¼³¸í]

    - host  = www.xxx.co.kr
    - user  =  kim
    - pass  = xxxxxx

    À§ÀÇ ¼¼ ¿É¼ÇÀº Ä«¸Þ¶ó°¡ ¼³Ä¡µÈ È£½ºÆ®¿Í ȨÆäÀÌÁö°¡ º°°³ÀÇ È£½ºÆ®¿¡ ÀÖÀ» ¶§ ÇÊ¿äÇÏ´Ù. (¾Æ·¡ÀÇ ¡°local¡± °ªÀ» 0 À¸·Î ÁöÁ¤ÇÑ °æ¿ì) Áï, ĸÃÄ ÇÑ ±×¸²ÆÄÀÏÀ» ftp·Î ´Ù¸¥ ¼­¹ö¿¡ À§Ä¡ÇÑ È¨ÆäÀÌÁö·Î ¿Å±æ ¶§ ÇÊ¿äÇÏ´Ù.

    ȨÆäÀÌÁö°¡ À§Ä¡ÇÑ ¼­¹ö¿¡´Â ftp ¼­¹ö°¡ ¼³Ä¡µÅ¾ß ÇÑ´Ù. ftp°¡ °¡´ÉÇÏ´Ù¸é ¼­¹öÈ£½ºÆÃÀ̳ª À¥È£½ºÆÃÀ» ÇÏ´Â °æ¿ì¿¡µµ À¥Ä· ¼³Ä¡°¡ °¡´ÉÇÏ¸ç »ó´ë È£½ºÆ®´Â ¸®´ª½º°¡ ¾Æ´Ï¾îµµ ¹«°üÇÏ´Ù.

    - host ¿¡´Â ȨÆäÀÌÁö°¡ À§Ä¡ÇÑ ¼­¹öÀÇ FQDN(Fully Qualified Domain Name)À» ÁöÁ¤ÇÑ´Ù.
    - user ¿¡´Â ftp »ç¿ëÀÚ °èÁ¤,
    - pass ¿¡´Â Æнº¿öµå¸¦ ÀÔ·ÂÇÑ´Ù.
      ftp ·Î ÆÄÀÏÀ» ¾÷·Îµå ÇÒ ¶§ ȸ¼± ¼Óµµ°¡ ´À¸®¸é Àü¼ÛµÇ´Â ÇÁ·¹ÀÓ ¼ö¸¦ ÁÙ¿©¾ß ÇÑ´Ù.
    - dir = /htdocs/video : ±×¸² ÆÄÀÏÀÌ ÀúÀåµÇ´Â µð·ºÅ丮ÀÌ´Ù. ȨÆäÀÌÁöÀÇ html ¹®¼­³ª
                                     À̹ÌÁö°¡ ÀúÀåµÇ´Â µð·ºÅ丮¸¦ ÁöÁ¤ÇÑ´Ù.
    - file = webcam.jpeg : À¥ºê¶ó¿ìÀú¿¡ ³ªÅ¸³ª´Â ±×¸²ÆÄÀÏ À̸§ÀÌ´Ù.
                                     ÀÌ ÆÄÀÏÀ» html ¹®¼­¿¡ ÁöÁ¤ÇÑ´Ù.
    - tmp = uploading.jpeg : Ä«¸Þ¶ó¿¡¼­ ĸÃÄ ÇÑ ±×¸² ÆÄÀÏÀÌ Çϵåµð½ºÅ©¿¡ ÀüºÎ ¾²¿©Áö±â Àü¿¡
                                        ÀϽÃÀûÀ¸·Î ÀúÀåµÇ´Â À̸§ÀÌ´Ù. ±×¸² ÆÄÀÏÀ» Çϵ忡 writing ÇÏ´Â
                                        µ¿¾È¿¡ À¥ºê¶ó¿ìÀú·Î Àü¼ÛÇÏ¸é ±úÁø ±×¸²ÀÌ ³ªÅ¸³ª¹Ç·Î ±×¸² ÆÄÀÏ
                                        ÀÌ ÀúÀåµÇ´Â µ¿¾È¿¡´Â ÀÏ´Ü ÀÌ À̸§À¸·Î Àӽ÷ΠÀúÀåÇÏ°í ÀúÀåÀÌ
                                        ³¡³ª¸é ½ÇÁ¦ »ç¿ëµÇ´Â ÆÄÀÏ À̸§(À§ÀÇ ¡°file=¡±¿¡ ÁöÁ¤µÈ À̸§)À¸·Î
                                        À̸§ÀÌ º¯°æµÈ´Ù.

    ´ÙÀ½ÀÇ ¼¼ ¿É¼Çµµ ftp·Î ÆÄÀÏÀ» Àü¼ÛÇÏ´Â °æ¿ì(local=0)¿¡¸¸ »ç¿ëµÈ´Ù.

    - passive = 1  :  1 À̸é ftp Àü¼Û½Ã passive ¸ðµå¸¦ »ç¿ëÇÑ´Ù.
    - debug = 0   :  1 À̸é ftp Àü¼Û °úÁ¤¿¡¼­ÀÇ ¸Þ½ÃÁö¸¦ stderr¿¡ ³ªÅ¸³½´Ù.
    - auto = 0     :  1 À̸é ftp Àü¼Û½Ã .netrc ÆÄÀÏ¿¡ ÁöÁ¤µÈ ³»¿ëÀ» »ç¿ëÇÑ´Ù.
    - local= 1     :  0 À̸é ftp ÇÁ·Î±×·¥À¸·Î ´Ù¸¥ ¼­¹ö·Î ±×¸²ÆÄÀÏÀ» ¾÷·Îµå ÇÑ´Ù. 1 ÀÌ¸é                       webcam ÇÁ·Î±×·¥ÀÌ ¼³Ä¡µÈ µ¿ÀÏ ¼­¹öÀÇ À§ÀÇ dir¿¡ ÁöÁ¤µÈ µð·ºÅ丮¿¡
                          ±×¸² ÆÄÀÏÀ» ³Ö´Â´Ù.

    [grab]

    - device = /dev/video0 : Ä«¸Þ¶ó°¡ ¿¬°áµÈ video4linux ÀåÄ¡¸íÀÌ´Ù.
                                        ÀåÄ¡ µå¶óÀ̹ö°¡ ¼³Ä¡µÅ¾ß ÇÑ´Ù.

     bttv µå¶óÀ̹ö¸¦ »ç¿ëÇÏ´Â ÀåÄ¡ÀÇ °æ¿ì ¾Æ·¡ ¸Þ½ÃÁö°¡ ºÎÆà ¶§ ³ªÅ¸³­´Ù.

    bttv: driver version 0.7.60 loaded
    bttv: using 2 buffers with 2080k (4160k total) for capture
    bttv: Bt8xx card found (0).
    bttv0: Bt878 (rev 17) at 00:0e.0, irq: 12, latency: 32, memory: 0xe3000000
    bttv0: subsystem: bd11:1200  =>  Pinnacle PCTV  =>  card=39
    bttv0: model: BT878(Pinnacle PCTV Studio/Ra) [autodetected]
    i2c-core.o: adapter bt848 #0 registered as adapter 0.
    bttv0: i2c: checking for MSP34xx @ 0x80... not found
    bttv0: miro: id=14 tuner=2 radio=no stereo=no

    ĸÃÄ º¸µå°¡ ÇÑ °³À̸é /dev/video0°¡ ¸ÂÀ¸³ª ÀϺΠīµåÀÇ °æ¿ì video1À» »ç¿ëÇØ¾ß ÇÑ´Ù.

    - text = ¡°www.linuxvideo.co.kr %Y-%m-%d %H:%M:%S¡±  :
       ±×¸² ÆÄÀÏ¿¡ µé¾î°¥ ¹®ÀÚ¸¦ ÁöÁ¤ÇÑ´Ù. À§ÀÇ °æ¿ì¿¡´Â ¡°www.linuxvideo.co.kr
       2001-04-21 19:41:15¡± Çü½ÄÀÇ ÅؽºÆ®°¡ ±×¸² ÆÄÀÏ¿¡ µé¾î°£´Ù. ¿µ¾î¸¸ °¡´ÉÇÏ´Ù.
    - width = 320 : ĸÃÄ ÇÒ ±×¸²ÀÇ °¡·Î ÇØ»óµµÀÌ´Ù.(dpi) 320, 640, 384 µîÀÌ °¡´ÉÇÏ´Ù.
    - height = 240 : ĸÃÄ ÇÒ ±×¸²ÀÇ ¼¼·Î ÇØ»óµµ ÀÌ´Ù.(dpi) 240, 480, 288 µîÀÌ °¡´ÉÇÏ´Ù.
    - delay = 2    : ĸÃÄ °£°Ý(ÃÊ)
    - input = 1    : ºñµð¿À ÀåÄ¡ÀÇ Æ÷Æ® ¹øÈ£ÀÌ´Ù. ĸÃĺ¸µå¿¡´Â º¸Åë TV ´ÜÀÚ¿Í composite ´ÜÀÚ
                          °¡ ±âº»À¸·Î ÀÖ°í ±× ¿Ü¿¡ VHS ´ÜÀÚ°¡ ÀÖ´Â °æ¿ìµµ ÀÖ´Ù.
                          Ä«¸Þ¶ó´Â composite1 À̳ª 2¹ø¿¡ ¿¬°áµÈ´Ù. 0 Àº TV ´ÜÀÚ 1 Àº composite1
                          ´ÜÀÚÀÌ´Ù. ±×·¯³ª º¸µå¿¡ µû¶ó¼­´Â 1 ¿ÜÀÇ ´Ù¸¥ ¹øÈ£µµ »ç¿ëµÈ´Ù.
                          ½ÃÇàÂø¿À·Î ¾Ë¾Æ³½´Ù.
    - norm = 1  : Ä«¸Þ¶ó°¡ Áö¿øÇÏ´Â ¹æ¼Û ¹æ½ÄÀÌ´Ù. 0Àº pal 1Àº ntsc ÀÌ´Ù.
                        ¿ì¸®³ª¶ó´Â NTSCÀÌ´Ù. À¯·´¿¡¼­ ¼öÀÔÇÑ Ä«¸Þ¶ó¶ó¸é pal ÀÌ´Ù.
    - rotate = 0  : ±×¸²À» 90µµ·Î ȸÀüÇÑ´Ù. Ä«¸Þ¶ó¸¦ °Å²Ù·Î ¸Å´Þ ¶§ ÇÊ¿äÇÏ´Ù.
    - top = 0
    - left = 0
    - bottom = 240
    - right = 320 : Ä¸ÃÄ ÇÑ ±×¸² Áß ½ÇÁ¦ »ç¿ëÇÒ ºÎºÐ Áï ÆÄÀÏ¿¡ ÀúÀåµÉ ºÎºÐÀ» ÁöÁ¤ÇÑ´Ù.
                         ±×¸² ÆÄÀÏÀÇ Á»ó´Ü ÁÂÇ¥´Â top=0, left=0 ÀÌ´Ù. BottomÀº height¸¦ ÃÊ°úÇÒ
                         ¼ö ¾ø´Ù. Right´Â width¸¦ ÃÊ°úÇÒ ¼ö ¾ø´Ù.
    - qualit

    y = 80  : jpeg ÆÄÀÏ¿¡¼­ ¾ÐÃàÀ²(%)À» ÁöÁ¤ÇÑ´Ù. 100À¸·Î ÁöÁ¤ÇÏ¸é ¾ÐÃàÇÏÁö ¾Ê´Â´Ù.
                 °ªÀÌ ÀÛÀ»¼ö·Ï ¾ÐÃàÀ²ÀÌ ³ô¾Æ ÆÄÀÏ Å©±â´Â Àû¾îÁø´Ù. ´ë½Å ¼±¸íµµ°¡ ³·¾ÆÁø´Ù.
    - trigger = 0  : 1 À̸é À̹ÌÁö ÆÄÀÏÀÌ º¯°æµÉ °æ¿ì¸¸ ¾÷·Îµå ÇÑ´Ù. Áï Ä«¸Þ¶ó°¡ ÀâÀº À̹ÌÁö°¡
                          ÀÌÀüÀÇ À̹ÌÁö¿Í ´Þ¶óÁø °æ¿ì¿¡¸¸ ÆÄÀÏÀ» ¾÷·Îµå ÇØ ÁØ´Ù.
    - once = 0    : 0 À̸é À§ÀÇ delay¿¡ ÁöÁ¤µÈ ½Ã°£¸¸Å­ °æ°ú ÈÄ °è¼Ó ±×¸²ÆÄÀÏÀ» »ý¼ºÇÑ´Ù.
                         1 À̸é ÇÑ ¹ø¸¸ ±×¸² ÆÄÀÏÀ» »ý¼ºÇÑ´Ù. 0 Àº Å×½ºÆ®½Ã ÇÊ¿äÇÏ´Ù.

    4) ÀÌÁ¦ ½ÇÁ¦·Î ±×¸² ÆÄÀÏÀÌ ¸¸µé¾î Áö´ÂÁö »ìÆ캸ÀÚ.

    Ä«¸Þ¶ó´Â ¿¬°áÇÏÁö ¾Ê¾Æµµ Å×½ºÆ®´Â °¡´ÉÇÏ´Ù. ĸÃ帵å¿Í bttv µå¶óÀ̹ö´Â ¼³Ä¡µÅ¾ß ÇÑ´Ù. /htdocs/video µð·ºÅ丮¸¦ ¸¸µç´Ù. .webcamrc ¿¡¼­ once ¸¦ 1 ·Î ¼³Á¤ÇÑ´Ù. .webcamrc ÆÄÀÏÀ» /root µð·ºÅ丮¿¡ ³Ö°í root·Î ·Î±×ÀÎÇØ ¾Æ·¡ ¸í·ÉÀ» ÁØ´Ù.

           * /usr/local/bin/webcam <enter>

    ¾Æ·¡ ¸Þ½ÃÁö°¡ ³ª¿À¸é Á¤»óÀûÀ¸·Î ÀÛµ¿ÇÏ´Â °ÍÀÌ´Ù.

    video:~# webcam
    reading config file: /root/.webcamrc
    video4linux webcam v1.3 - (c) 1998-2000 Gerd Knorr
    grabber config: size 320x240, input 1, norm 1, jpeg quality 80
    rotate=0, top=0, left=0, bottom=240, right=320
    ftp config:
      local transfer /htdocs/video/uploading.jpeg => /htdocs/video/webcam.jpeg
    ¡°www.linuxvideo.co.kr  2001-04-22 21:32:00¡±
     
            /htdocs/video µð·ºÅ丮¿¡ ¾Æ·¡ ÆÄÀÏÀÌ »ý¼ºµÇ¾ú´ÂÁö È®ÀÎÇ϶ó.(ÆÄÀÏ Å©±â´Â »ó°ü¾ø´Ù.)

            -rw-r--r--    1 root     root         4365 Apr 22 21:32 webcam.jpeg

    À§ÀÇ ÆÄÀÏÀ» À¥ºê¶ó¿ìÀú³ª ±×¸²ÆÇÀ¸·Î º¸¸é ¾Æ·¡Ã³·³ ³ª¿Â´Ù. (Ä«¸Þ¶ó°¡ ¿¬°áÀÌ ¾ÈµÈ »óÅÂÀÎ °æ¿ì)

    ¹ÙÅÁ»öÀÌ Ã»»öÀ̾î¾ß ÇÏ°í È­¸é ÇÏ´Ü¿¡ ¡°www.linuxvideo.co.kr 2001-04-dd ½Ã:ºÐ:ÃÊ¡± ±ÛÀÚ°¡ ³ª¿Â´Ù.
    ¿©±â±îÁö ÀÌ»ó ¾øÀ¸¸é ¾î·Á¿î ÀÛ¾÷Àº ³¡³µ´Ù. ³ª¸ÓÁö´Â CGI ¿Í °ü·ÃµÇ´Â ºÎºÐÀÌ´Ù.

 

3. ¼­¹ö¿¡¼­ »ç¿ëÀÚ À¥ºê¶ó¿ìÀú·Î ±×¸² ÆÄÀÏ ¿¬¼Ó Àü¼Û

    webcam ÇÁ·Î±×·¥¿¡¼­ .webcamrcÀÇ once¸¦ 0À¸·Î ÁÖ¸é 2ÃÊ °£°ÝÀ¸·Î /htdocs/video µð·ºÅ丮ÀÇ webcam.jpeg ÆÄÀÏÀÌ °»½ÅµÈ´Ù. ±×·¯³ª ȨÆäÀÌÁöÀÇ html ¹®¼­¿¡ ÀÌ ±×¸² ÆÄÀÏÀ» ÁöÁ¤Çصµ »ç¿ëÀÚ°¡ ÀÌ html ¹®¼­¸¦ ¿­¸é ±× ´ç½ÃÀÇ webcam.jpeg ÆÄÀÏ ÇÑ °³¸¦ À¥ºê¶ó¿ìÀú·Î Àü¼ÛÇÒ »ÓÀÌ´Ù.   

    À¥ÇÁ·ÎÅäÄÝÀº ÆäÀÌÁöÀÇ Àü¼ÛÀÌ ³¡³ª¸é ¿¬°áÀ» ²÷±â ¶§¹®ÀÌ´Ù. À¥ºê¶ó¿ìÀú·Î °è¼ÓÇؼ­ ȨÆäÀÌÁöÀÇ webcam.jpeg ÆÄÀÏÀ» Àü¼ÛÇÏ·Á¸é ´Ù¸¥ ÇÁ·Î±×·¥ÀÇ µµ¿òÀÌ ÇÊ¿äÇÏ´Ù.

    °¡Àå °£´ÜÇÑ ¹æ¹ýÀº ³×Æ®½ºÄÉÀÌÇÁ¿¡¼­ °¡´ÉÇÑ Server Push ±â¹ýÀÌ´Ù. ÀÌ´Â »ç¿ëÀÚ°¡ À¥ºê¶ó¿ìÀú¸¦ ´Ý°Å³ª ´Ù¸¥ URL·Î À̵¿Çϱâ Àü±îÁö µ¿ÀÏÇÑ ÆäÀÌÁö¸¦ °è¼Ó ÀçÀü¼ÛÇÏ°Ô ÇÏ´Â °£´ÜÇÑ CGIÀÌ´Ù.

    ÀͽºÇ÷η¯¿¡¼­´Â ¼­¹öǪ½¬¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. ´ë½Å Ŭ¶óÀ̾ðÆ® Ç®À̶ó´Â ¹æ¹ýÀÌ ÀÖ´Ù. ¿¬¼ÓÀûÀÎ ±×¸² ÆÄÀÏ °»½Å¿¡´Â server push°¡ º¸´Ù ³´´Ù°í ÇÑ´Ù. ¿©±â¿¡´Â ¼­¹öǪ½¬ ¹æ¹ý¸¸À» ¼³¸íÇÑ´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î´Â ÀÚ¹Ù ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ´Â°Ô °¡´ÉÇÏ´Ù.

    ¾Æ·¡ CGI ÇÁ·Î±×·¥Àº ¼­¹öǪ½¬¸¦ ÀÌ¿ëÇØ /htdocs/video/webcam.jpeg ÆÄÀÏÀ» 2Ãʸ¶´Ù ÇÑ ¹ø¾¿ »ç¿ëÀÚÀÇ ³×Æ®½ºÄÉÀÌÇÁ À¥ºê¶ó¿ìÀú·Î Àü¼ÛÇÑ´Ù. ÀÌ cgi ¸¦ ȨÆäÀÌÁöÀÇ cgi-bin µð·ºÅ丮¿¡ ³ÖÀ¸¸é µÈ´Ù.(ÇÊÀÚ´Â /htdocs/cgi-bin µð·ºÅ丮¿¡ ³Ö¾ú´Ù.) ´Ü perl ÀÌ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.(ÀÌ ÇÁ·Î±×·¥Àº xawtv-3.30/webcam µð·ºÅ丮¿¡ µé¾î ÀÖ´Ù.)

    * webcam.cgi

    #!/usr/bin/perl
    use strict;
    # config
    my $IMAGE  = ¡°/htdocs/video/webcam.jpeg¡±; # À̹ÌÁö ÆÄÀÏ À§Ä¡
    my $MAXSEC = 360;       #  10ºÐÀÌ Áö³ª¸é Àü¼ÛÀÌ Á¾·áµÇ°Ô ÇÔ.
    ##############################################
    undef $/;
    $|=1;
    my $BO = ¡°wrdlbrmpft¡±;
    my $serverpush = ($ENV{HTTP_USER_AGENT} =~ /^Mozilla/ &&
                      $ENV{HTTP_USER_AGENT} !~ /[Cc]ompatible/);
    my $start = time;
    my @st = stat($IMAGE) or die ¡°stat $IMAGE: $!¡±;
    my $mtime = $st[9];
    if ($serverpush) {
            print ¡°Content-Type: multipart/x-mixed-replace;boundary=\¡±$BO\¡°\r\n¡±;
            print ¡°¡¬r¡¬n¡±;
            print ¡°¡¬r¡¬n--$BO¡¬r¡¬n¡±;
    }
    for (;;) {
            # read image
            open IMG, ¡°<$IMAGE¡±;
            my $image = <IMG>;
            close IMG;

    # send it
            print  ¡°Content-Type: image/jpeg¡¬r¡¬n¡±;
            printf ¡°Content-Length: %d¡¬r¡¬n¡±,length($image);
            print  ¡°¡¬r¡¬n¡±;
            print $image;
            last unless $serverpush;
            # send multipart border
            if (time - $start > $MAXSEC) {
                    print ¡°¡¬r¡¬n--$BO--¡¬r¡¬n¡±;
                    last;
            } else {
                    print ¡°¡¬r¡¬n--$BO¡¬r¡¬n¡±;
            }

            # wait until there is a new image
            foreach my $i (1 .. $MAXSEC) {
                    sleep 1;
                    @st = stat($IMAGE);
                    if ($st[9] != $mtime) {
                            $mtime = $st[9];
                            last;
                    }
            }
    }
    exit;

    À§ÀÇ cgi´Â ºê¶ó¿ìÀú°¡ ³×Æ®½ºÄÉÀÌÇÁÀÎ °æ¿ì¸¸ ¿¬¼ÓÀûÀÎ È­»óÀ» Àü¼ÛÇÏ°í ÀͽºÇ÷η¯ÀÎ °æ¿ì´Â Á¤ÁöÈ­¸éÀ» Àü¼ÛÇÑ´Ù. ÀͽºÇ÷η¯ÀÎ °æ¿ì¿¡µµ ¿¬¼ÓÀûÀÎ È­»óÀ» º¸³»´Â ´Ù¸¥ CGI¸¦ ¿¬°áÇÏ·Á¸é  if ($serverpush) { ...}  ´ÙÀ½¿¡ else { } ¹®À» ³Ö¾î °¡´ÉÇÒ °ÍÀÌ´Ù.

 

4. webcam ÇÁ·Î±×·¥ ÀÚµ¿ ½ÇÇà

    À¥Ä· ÇÁ·Î±×·¥À» ºÎÆýø¶´Ù ÀÚµ¿À¸·Î ½ÇÇàÇÏ·Á¸é .webcamrc ÆÄÀÏÀ» root(/) µð·ºÅ丮¿¡ ³Ö°í µ¥ºñ¾ÈÀÇ °æ¿ì¿¡´Â /etc/rc.boot µð·ºÅ丮¿¡ ¾Æ·¡ ½ºÅ©¸³Æ®¸¦ ¸¸µç´Ù. (.webcamrcÀÇ once¸¦ 0À¸·Î ÇØ¾ß ÇÑ´Ù.)

    #!/bin/bash
    /usr/local/bin/webcam > /dev/null 2> /dev/null &

 

5. ·¥µð½ºÅ© »ç¿ë

    À¥Ä·¿¡¼­ webcam.jpeg ÆÄÀÏÀº 2ÃÊ °£°ÝÀ¸·Î °è¼ÓÇؼ­ Çϵåµð½ºÅ©¿¡ ÀúÀåµÇ¹Ç·Î ÀüüÀûÀÎ ½Ã½ºÅÛ ¼Óµµ¿¡ ¿µÇâÀ» ÁØ´Ù. ¸®´ª½º´Â °ÅÀÇ ¸ðµç ÀÛ¾÷¿¡ Çϵåµð½ºÅ©¸¦ ¾ï¼¼½ºÇϱ⠶§¹®ÀÌ´Ù. »ç¿ëÀÚ°¡ ·Î±×ÀÎ ÇÏ´Â °£´ÜÇÑ ÀýÂ÷¿¡¼­µµ 10 ¿©°³ ÀÌ»óÀÇ ÆÄÀÏÀÌ »ç¿ëµÈ´Ù. Áï Çϵåµð½ºÅ©¸¦ Àд´Ù. ¶Ç °°Àº ÆÄÀÏÀ» °è¼Ó ÇϵåÀÇ °°Àº µð·ºÅ丮¿¡¼­ °»½ÅÇϸé ÇϵåÀÇ Æ¯Á¤ ¼½ÅÍ¿¡ ¹èµå°¡ ³¯ È®·üµµ ³ô´Ù.

    µû¶ó¼­ À¥Ä·À» ¼³Ä¡ÇÒ ¶§ webcam.jpeg ÆÄÀÏÀº ·¥µð½ºÅ©¿¡ ÀúÀåÇϱ⸦ ±ÇÇÑ´Ù. webcam.jpeg ÆÄÀÏÀº ºÒ°ú 30k ¹ÙÀÌÆ® ¼öÁØÀ̹ǷΠ·¥µð½ºÅ©¿¡ ³Ö¾îµµ ¸Þ¸ð¸®¸¦ º°·Î Â÷ÁöÇÏÁö ¾Ê´Â´Ù.(ÆÄÀÏ Å©±â´Â È­»ó Å©±â, Áï width ¹×  height ¿Í ¾ÐÃà Á¤µµ Áï quality¿¡ Á¿ìµÈ´Ù.) ÁÖÀÇÇÒ °ÍÀº ·¥µð½ºÅ© ¼³Á¤ ºÎºÐÀÌ À¥Ä· ÇÁ·Î±×·¥ °¡µ¿ Àü¿¡ ÀÌ·ç¾îÁ®¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù.

    ¾Æ·¡´Â ·¥µð½ºÅ© »ç¿ë ÀýÂ÷ÀÌ´Ù.

    1) Ä¿³ÎÀ» ÄÄÆÄÀÏÇؼ­ ·¥µð½ºÅ© Áö¿øÀ» Ãß°¡ÇÑ´Ù. (¶Ç´Â ¸ðµâÀ» ¿Ã¸°´Ù.)

    2) /etc/lilo.conf¿¡ ·¥µð½ºÅ© Å©±â¸¦ ÁöÁ¤ÇÑ´Ù.
    À̸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ±âº»À¸·Î ·¥µð½ºÅ© Å©±â¸¦ 4 ¸Þ°¡·Î ¼³Á¤ÇØ ¸Þ¸ð¸® »ç¿ëÀÌ ³¶ºñµÇ±â ¶§¹®ÀÌ´Ù. 64k Á¤µµ¸é ÃæºÐÇÏ´Ù.(Ä¿³Î ÄÄÆÄÀϽÿ¡µµ ·¥µð½ºÅ© Å©±â¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.)

    ramdisk=64

    3) ¾Æ·¡ ³»¿ëÀÌ µé¾î°¡´Â ½ºÅ©¸³Æ®¸¦ ¸¸µç´Ù.
    ¾Æ·¡ÀÇ ½ºÅ©¸³Æ®´Â À¥¼­¹ö(apache) ¹× À¥Ä· ÇÁ·Î±×·¥º¸´Ù ¸ÕÀú ½ÇÇà µÇ¾ß ÇÑ´Ù.

    # ·¥µð½ºÅ©¸¦ ext2 ÆÄÀϽýºÅÛÀ¸·Î Æ÷¸ËÇÑ´Ù. ·¥µð½ºÅ©´Â fdisk¸¦ ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â´Ù.
       Å©±â´Â Ä¿³Î ÄÄÆÄÀϽóª lilo.conf¿¡¼­ ÁöÁ¤ÇÑ´Ù.
            /sbin/mke2fs /dev/ram0
    # ·¥µð½ºÅ©¸¦ webcam.jpeg ÆÄÀÏÀÌ ÀúÀåµÇ´Â µð·ºÅ丮¿¡ ¸¶¿îÆ®ÇÑ´Ù.
    # /htdocs/video µð·ºÅ丮¸¦ ¹Ì¸® ¸¸µé¾î¾ß ³õ¾Æ¾ß ÇÑ´Ù.
       ÀÌ µð·ºÅ丮¿¡´Â ´Ù¸¥ ÆÄÀÏÀº ÀúÀåÇÏÁö ¾Ê¾Æ¾ß ÇÑ´Ù.
            /bin/mount  /dev/ram0  /htdocs/video

    ¸®ºÎÆÃÇؼ­ ·¥µð½ºÅ©°¡ ¼³Ä¡µÇ´ÂÁö È®ÀÎÇÒ °Í. ¾Æ·¡Ã³·³ ³ª¿Í¾ß ÇÑ´Ù.

    video:/htdocs/cgi-bin# df
    Filesystem           1k-blocks    Used       Available   Use%  Mounted on
    /dev/hdc2            3004396      528116    2323664   19%    /
    /dev/ram0            57               18           36  33%    /htdocs/video

 

6. °¡µ¿

    1) /htdocs/cgi-bin µð·ºÅ丮¿¡¼­ cgi ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ°Ô httpd.conf ¸¦ ¼öÁ¤ÇÑ´Ù.
    DocumentRoot¸¦ /htdocs·Î ÁöÁ¤ÇÑ´Ù.

    2) webcam.cgi¸¦ ¼öÁ¤ÇÑ´Ù.

    webcam.jpeg ÆÄÀÏ À§Ä¡¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.

       my $IMAGE  = ¡°$ENV{DOCUMENT_ROOT}/video/webcam.jpeg¡±;

    3) /htdocs/cgi-bin ¿¡ webcam.cgi ¸¦ ³Ö´Â´Ù. (mode 755 )

    4) .webcamrc ÆÄÀÏÀ» ¡°/¡± ¿¡ ³Ö´Â´Ù.

    5) ¸®ºÎÆÃÇؼ­ Apache, Webcam, Ramdisk °¡ °¡µ¿µÇ´ÂÁö È®ÀÎÇÑ´Ù. ºÎÆýà ·¥µð½ºÅ©, À¥Ä·, ¾ÆÆÄÄ¡ ¼ø¼­·Î ½ÇÇà µÇ¾ß ÇÑ´Ù.

    ps ax ¸í·ÉÀ» ÁÖ¸é webcam ÇÁ·Î±×·¥ °¡µ¿ ¿©ºÎ¸¦ ¾Ë ¼ö ÀÖ´Ù.

        129 ?        S      0:04 /usr/local/bin/webcam

    6) /htdocs/video µð·ºÅ丮¿¡ webcam.jpeg ÆÄÀÏÀÌ »ý¼ºµÇ´ÂÁö ¶Ç 2Ãʸ¶´Ù °»½ÅµÇ´ÂÁö È®ÀÎ.

        -rw-r--r--    1 root     root        12124 Apr 23 11:15 webcam.jpeg

    7) ³×Æ®½ºÄÉÀÌÇÁ¿¡¼­ http://xxx.yyy.zzz/cgi-bin/webcam.cgi ¸¦ ¿¬°áÇÏ¸é ¾Æ·¡ È­¸éÀÌ ¶á´Ù.
    (reload ¹öÆ°À» ´©¸£¸é 2Ãʸ¶´Ù È­¸éÀÌ °»½ÅµÈ´Ù.)

            (ÇÊÀÚÀÇ »ç¹«½Ç Ã¥ÀåÀ» Ä«¸Þ¶ó·Î Àâ¾Ò´Ù.)

    8) ÀͽºÇ÷η¯¿¡¼­´Â ¡°´Ù½Ã º¸±â¡±¸¦ ´­·¯¾ß È­¸éÀÌ ¹Ù²ï´Ù.




¡ã top

homeÀ¸·Î...