Linux Streaming Server Project(LSSP) ÃÖÁ¾ º¸°í¼­

- "ÀÎÅÍ³Ý Æ¯°­" °ú¸ñ ÇÁ·ÎÁ§Æ® -

ÄÄÇ»ÅÍ°øÇкΠ2000-30294 ±ÇÁø¹é

¸ñ Â÷

  1. ¹è°æ ¹× ¸ñÀû
  2. ±¸Çö ¸ðµ¨
  3. ÇÁ·ÎÅäÄÝ°ú WAV ÆÄÀÏ Æ÷¸Ë
  4. ±¸Çö ¹æ¹ý
  5. Å×½ºÆ® ¹× µ¥¸ð
  6. °á·Ð
  7. Âü°í ÀÚ·á

1 ¹è°æ ¹× ¸ñÀû

ÀÎÅͳÝÀº WWWÀÇ ÃâÇö°ú È°¼ºÈ­·Î »ýÈ°ÀÇ Áß¿äÇÑ ÀϺκÐÀÌ µÇ¾ú´Ù. ÃÖ±Ù ³×Æ®¿÷ ±â¼úÀÇ ¹ß´Þ·Î ³×Æ®¿÷ÀÇ ´ë¿ªÆøÀÌ Å©°Ô Áõ°¡µÇ°í ÀÖ°í, DSLÀ̳ª ÄÉÀ̺í¸ðµ© µîÀÇ µµÀÔÀ¸·Î, ȸ»ç³ª Çб³ »Ó¾Æ´Ï¶ó °¡Á¤¿¡¼­µµ °í¼ÓÀÇ Åë½ÅÀÌ °¡´ÉÇÏ°Ô µÇ¾ú´Ù. ÀÌ·± ³×Æ®¿÷ ȯ°æÀÇ Çâ»óÀº ÀÎÅÍ³Ý ¼­ºñ½º ¾÷üµéÀÌ ¿Àµð¿À³ª ºñµð¿À °°Àº ¸ÖƼ¹Ìµð¾î ÄÁÅÙÃ÷ÀÇ ¼­ºñ½º¸¦ Çϱ⠽ÃÀÛÇÏ´Â µ¿±â¸¦ Á¦°øÇß´Ù. »ç¿ëÀÚµé ¶ÇÇÑ ±×·± ¼­ºñ½º¿¡ ´ëÇÑ ¿ä±¸°¡ Ä¿Áö°í ÀÖ´Ù. ÇöÀç ¸ÖƼ¹Ìµð¾î µ¥ÀÌÅÍ°¡ ÀÎÅÍ³Ý Æ®·¡ÇÈ¿¡¼­ Â÷ÁöÇÏ´Â ºñÁßÀÌ »ó´çÇÏ°í, ¹Ì·¡¿¡´Â ÀÎÅͳÝÆù(Internet phone), ºñµð¿ÀȸÀÇ(video conferencing), VOD¿Í °°Àº ¾ÖÇø®ÄÉÀ̼ǵéÀÌ ´õ¿í º¸ÆíÈ­µÉ °ÍÀ¸·Î º¸¿©Áø´Ù. ¸ÖƼ¹Ìµð¾î µ¥ÀÌÅÍ´Â ¿ë·®ÀÌ Å©±â ¶§¹®¿¡ ÅؽºÆ®³ª À̹ÌÁöó·³ Àüü µ¥ÀÌÅ͸¦ Àü¼Û¹ÞÀº ÈÄ¿¡ Àç»ýÇÏ´Â °ÍÀº È¿°úÀûÀÌÁö ¸øÇÏ´Ù. µû¶ó¼­, ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ® °£¿¡ µ¥ÀÌÅ͸¦ ½ºÆ®¸®¹Ö(streaming)ÇÏ´Â °ÍÀÌ ÀϹÝÀûÀÌ´Ù. ÇÏÁö¸¸, Àç»ý½ÃÁ¡ ÀÌÈÄ¿¡´Â ½Ç½Ã°£ Ư¼ºÀÌ ¿ä±¸µÇ±â ¶§¹®¿¡ È¿À²ÀûÀÎ ½ºÆ®¸®¹ÖÀÌ ÇÊ¿äÇÏ´Ù. µû¶ó¼­ º» ÇÁ·ÎÁ§Æ®´Â Àß ¾Ë·ÁÁø RTP(RFC1890)¿Í RTSP(RFC2326)¿¡ ±â¹ÝÇÑ ¸®´ª½º¿ë ½ºÆ®¸®¹Ö ¼­¹ö(Linux Streaming Server, LSS)¸¦ ±¸ÇöÇؼ­, RTPÀÇ ¼º´ÉÀ» °üÂûÇÏ°í, ¼º´É Çâ»ó ¹æ¾È¿¡ ´ëÇؼ­ ¾Ë¾Æº¸°íÀÚ ÇÑ´Ù.

2 ±¸Çö ¸ðµ¨

2.1 ±â´É Á¤ÀÇ LSS°¡ Á¦°øÇÏ´Â ±â´ÉÀº ´ÙÀ½°ú °°´Ù. ºñµð¿À ÆÄÀÏÀº Áö¿øÇÏÁö ¾Ê°í, ¶óÀ̺ê ÄÜÅÙÃ÷µµ Áö¿øÇÏÁö ¾Ê´Â´Ù. ±×¸®°í, °¢ ¼¼¼Ç¿¡ ´ëÇØ ½º·¹µå¸¦ »ç¿ëÇÏÁö ¾Ê¾Ò´Ù. ½º·¹µå¸¦ »ç¿ëÇÏ¸é ½Ã½ºÅÛ ºÎÇϸ¦ °¡Áß½Ãų ¼ö Àֱ⠶§¹®¿¡ À̺¥Æ®-±¸µ¿ ¹æ½ÄÀ¸·Î ±¸ÇöÇØ ¼¼¼ÇµéÀ» ´ÙÁßÈ­(multiplexing)ÇÏ´Â ¹æ¹ýÀ¸·Î ±¸ÇöÇß´Ù.

2.1 ½ºÆ®¸®¹Ö(Streaming)

½ºÆ®¸®¹ÖÀº ÀÎÅͳݰú °°Àº ³×Æ®¿÷À» ÅëÇØ ¼­¹ö¿¡¼­ Ŭ¶óÀ̾ðÆ®·Î ºñµð¿À ¶Ç´Â ¿Àµð¿À¸¦ Àü¼ÛÇÏ´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¼­¹ö´Â ºñµð¿À¸¦ ³×Æ®¿÷À¸·Î º¸³¾ ¼ö ÀÖµµ·Ï ÆÐŶÀ¸·Î ÂÉ°µ´Ù. Ŭ¶óÀ̾ðÆ®´Â ±× ÆÐŶµéÀ» ´Ù½Ã ¸ð¾Æ¼­ ¿ø·¡ ÇüÅ·Π¸¸µç ÈÄ Àç»ýµÈ´Ù. ÀÌ ¶§, Àç»ý°ú ÆÐŶ ¼ö½ÅÀº µ¿½Ã¿¡ ÀϾ´Ù. ¿©±â¼­ ¿¬°üµÈ ÀÏ·ÃÀÇ ÆÐŶµéÀ» ½ºÆ®¸²(stream)À̶ó°í ÇÑ´Ù.

½ºÆ®¸®¹ÖÀº Ŭ¶óÀ̾ðÆ®°¡ ºñµð¿À µ¥ÀÌÅ͸¦ ¹ÞÀ¸¸é¼­ Àç»ýÇÑ´Ù´Â Á¡¿¡¼­, Àüü ºñµð¿À¸¦ ¹ÞÀº ÈÄ Àç»ýÇÏ´Â ´Ü¼øÇÑ ÆÄÀÏ Àü¼Û°ú ±¸º°µÈ´Ù. »ç½Ç, ½ºÆ®¸®¹Ö Ŭ¶óÀ̾ðÆ® ÆÐŶÀ» ¹ÞÀ¸¸é¼­ Àç»ýÀ» ÇÏ°í, Àç»ýµÈ µ¥ÀÌÅÍ´Â ¹ö¸°´Ù. ÆÄÀÏÀ» ½ºÆ®¸®¹ÖÇÏ´Â µ¥ ´ÙÀ½°ú °°Àº ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

HTTP¿Í FTP´Â º»ÁúÀûÀ¸·Î ÆÄÀÏ Àü¼Û ÇÁ·ÎÅäÄÝÀÌ´Ù. ÇÏÁö¸¸, RTP´Â ½Ç½Ã°£ ½ºÆ®¸®¹ÖÀ» À§ÇØ »ç¿ëµÈ´Ù. µû¶ó¼­, LSS´Â RTP¸¸ Áö¿øÇϵµ·Ï ±¸ÇöµÇ¾ú´Ù. ¿Àµð¿À ÆÐŶµéÀº ½Ç½Ã°£À¸·Î Àü¼ÛµÇ¾î¼­, 1ºÐÂ¥¸® ¿Àµð¿À´Â Àç»ý ½ÃÀÛ ÈÄ 1ºÐÀÌ °æ°úÇϱâ Àü¿¡ Àü¼ÛµÈ´Ù. ÆÐŶµé¿¡ ŸÀÓ-½ºÅÆÇÁ(time-stamp)°¡ ÂïÈ÷¹Ç·Î, ÆÐŶµéÀº ½Ã°£¿¡ µ¿±âÈ­µÇ¾î Àç»ýµÉ ¼ö ÀÖ´Ù. ÆÐŶµéÀÌ ½Ç½Ã°£À¸·Î Àü¼ÛµÇ±â ¶§¹®¿¡, RTP ½ºÆ®¸®¹ÖÀº ÀúÀåµÈ ÄÁÅÙÃ÷(stored contents) »Ó¾Æ´Ï¶ó ¶óÀ̺ê ÄÁÅÙÃ÷(live contents)µµ Áö¿øÇÑ´Ù. ¶ÇÇÑ ½Ç½Ã°£ ½ºÆ®¸²Àº À¯´Ïij½ºÆ®(unicast)¿Í ¸ÖƼij½ºÆ®(multicast)¸¦ ¸ðµÎ Áö¿øÇÑ´Ù. ÇÏÁö¸¸, LSS´Â ÀúÀåµÈ ÄÁÅÙÃ÷°ú À¯´Ïij½ºÆ®¸¸ Áö¿øÇÑ´Ù.

À¯´Ïij½ºÆ®(Unicast) ½ºÆ®¸®¹Ö
À¯´Ïij½ºÆ®¿¡¼­´Â Ŭ¶óÀ̾ðÆ®°¡ RTSP(Real Time Streaming ProtocolÀ» »ç¿ëÇØ ºñµð¿À¿¡ ´ëÇÑ ¿äû(request)À» ¼­¹ö¿¡ ¾Ë¸°´Ù. ¼­¹ö´Â ±× ºñµð¿À¿¡ ´ëÇÑ Á¤º¸¸¦ ´ã°í ÀÖ´Â ½ºÆ®¸®¹Ö ¼¼¼Ç(streaming session)À¸·Î Ŭ¶óÀ̾ðÆ®¿¡ ÀÀ´äÇÑ´Ù. ÇϳªÀÇ ½ºÆ®¸®¹Ö ¼¼¼ÇÀº ºñµð¿À ½ºÆ®¸²°ú ¿Àµð¿À ½ºÆ®¸²°ú °°Àº ÇÑ °³ ÀÌ»óÀÇ ½ºÆ®¸²À¸·Î ±¸¼ºµÈ´Ù. ¼­¹ö´Â Ŭ¶óÀ̾ðÆ®¿¡°Ô ÇÊ¿äÇÑ ½ºÆ®¸²ÀÇ °³¼ö¿Í °¢ ½ºÆ®¸²ÀÇ Á¤º¸(¿¹, ¹Ìµð¾î ŸÀÔ, ÄÚµ¦ µî)¸¦ ¾Ë·ÁÁØ´Ù. ±×¸®°í ³ª¼­ ½ÇÁ¦ ½ºÆ®¸²µéÀÌ RTP¸¦ ÅëÇØ Å¬¶óÀ̾ðÆ®·Î Àü¼ÛµÈ´Ù.

±×¸² 1. RTSP¿Í RTP¸¦ ÀÌ¿ëÇÑ À¯´Ïij½ºÆ®

RTSP´Â TCP/IP¸¦ »ç¿ëÇÏ°í, RTP´Â Àú¼öÁØÀÇ UDP/IP¸¦ »ç¿ëÇÑ´Ù.

2.3 ±¸¼º ¿ä¼Ò

2.4 °³¹ß ¹æ¹ý

3 ÇÁ·ÎÅäÄÝ ¹× WAV ÆÄÀÏ Æ÷¸Ë

3.1 Real Time Streaming Protocol (RTSP)

RTSP´Â ¿Àµð¿À³ª ºñµð¿À °°Àº ¿¬¼ÓÇü ¹Ìµð¾îÀÇ ½Ã°£¿¡ µ¿±âÈ­µÈ ½ºÆ®¸²µéÀ» ¼³Á¤ÇÏ°í Á¦¾îÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. ÇÏÁö¸¸, RTSP°¡ ¿¬¼ÓÇü ¹Ìµð¾î ÀÚü¸¦ Àü´ÞÇÏÁö´Â ¾Ê´Â´Ù. Áï, RTSP´Â ¸ÖƼ¹Ìµð¾î ¼­¹öÀÇ ¸®¸ðÆ® ÄÁÆ®·ÑÀÌ´Ù. ÇϳªÀÇ RTSP ¼¼¼Çµ¿¾È, ¼­¹ö·Î RTSP ¿äûÀ» º¸³»±â À§ÇØ ¿©·¯°³ÀÇ TCP(¶Ç´Â UDP) ¿¬°áÀ» ¿­°í ´ÝÀ» ¼ö ÀÖ´Ù. RTSP¿¡ ÀÇÇØ Á¦¾îµÇ´Â ¹Ìµð¾î ½ºÆ®¸²Àº RTPÀÏ ¼ö ÀÖÁö¸¸, RTSP´Â ¹Ìµð¾î ½ºÆ®¸²À» À§ÇÑ Æ®·£½ºÆ÷Æ® ¸ÞÄ«´ÏÁò¿¡ ÀÇÁ¸ÇÏÁö ¾Ê´Â´Ù. ÀÌ ÇÁ·ÎÅäÄÝÀº HTTP/1.1°ú ¸Å¿ì Èí»çÇÏ´Ù. µû¶ó¼­, HTTPÀÇ È®ÀåÀÌ ´ëºÎºÐÀÇ °æ¿ì¿¡ RTSP¿¡µµ Ãß°¡µÉ ¼ö ÀÖ´Ù. RTSP¿¡¼­ Á¦°øÇÏ´Â ¸Þ¼Òµå(method)´Â ¾Æ·¡¿Í °°´Ù.

OPTIONS»ç¿ë°¡´ÉÇÑ ¸Þ¼Òµå¸¦ ¾ò´Â´Ù.
SETUPÆ®·£½ºÆ÷Æ® ¿¬°áÀ» ¼³Á¤ÇÑ´Ù.
ANNOUNCE¹Ìµð¾î °³Ã¼ÀÇ ¼³¸í(description)À» º¯°æÇÑ´Ù.
DESCRIBE¹Ìµð¾î °³Ã¼ÀÇ ¼³¸íÀ» ¾ò´Â´Ù.
PLAYÀç»ýÀ» ½ÃÀÛÇÑ´Ù.
REDIRECTŬ¶óÀ̾ðÆ®¸¦ »õ·Î¿î ¼­¹ö·Î ¸®´ÙÀÌ·ºÆ®(redirect)
PAUSE½ºÆ®¸² Àü¼ÛÀ» Áß´ÜÇÑ´Ù(»óÅ´ À¯Áö).
SET_PARAMETERÀåÄ¡ ¶Ç´Â ÀÎÄÚµùÀ» Á¦¾îÇÑ´Ù.
TEARDOWN¼¼¼Ç »óŸ¦ Áö¿î´Ù.
...

±×¸² 2´Â À§ÀÇ ¸Þ¼Òµå¸¦ ÀÌ¿ëÇÑ RTSPÀÇ ±âº»ÀûÀÎ µ¿ÀÛ °úÁ¤À» º¸¿©ÁØ´Ù.
±×¸² 2. RTSPÀÇ µ¿ÀÛ°úÁ¤

±×¸²¿¡¼­, Ŭ¶óÀ̾ðÆ®´Â ¸ÕÀú OPTIONS ¸Þ¼Òµå¸¦ »ç¿ëÇؼ­ ¼­¹ö¿¡¼­ Á¦°øÇÏ´Â ¸Þ¼ÒµåµéÀ» ¾ò°í, DESCRIBE ¸Þ¼Òµå¸¦ »ç¿ëÇØ ¼­¹ö¿¡°Ô ¿äûÇÒ ¹Ìµð¾î °³Ã¼ÀÇ ¼³¸í(description)À» ¾ò´Â´Ù. ±×¸®°í ³ª¼­, SETUP ¸Þ¼Òµå¸¦ »ç¿ëÇØ ¹Ìµð¾î ½ºÆ®¸² Àü¼ÛÀ» À§ÇÑ Æ®·£½ºÆ÷Æ® ¿¬°áÀ» ¼³Á¤ÇÏ°í, PLAY ¸Þ¼Òµå¸¦ º¸³»°í ÀÀ´äÀ» ´äÀº ÈÄ RTP ä³ÎÀ» ÅëÇØ ½ºÆ®¸²À» ¹Þ¾Æ¼­ Àç»ýÇÑ´Ù. RTSP ¼¼¼ÇÀ» ³¡³¾ ¶§´Â PAUSE ¸Þ¼Òµå¸¦ »ç¿ëÇØ ½ºÆ®¸² Àü¼ÛÀ» ÁߴܽÃŲ ÈÄ, TEARDOWN ¸Þ¼Òµå·Î ¼¼¼ÇÀ» ¿ÏÀüÈ÷ ¾ø¾Ø´Ù.

3.2 Real-Time Protocol (RTP)

RTP´Â ½Ç½Ã°£ Ư¼ºÀ» °®´Â µ¥ÀÌÅÍÀÇ "end-to-end" Àü¼Û ¼­ºñ½º(´ëÈ­Çü ¿Àµð¿À¿Í ºñµð¿À)¸¦ Á¦°øÇÑ´Ù. ÀÌ·± ¼­ºñ½º´Â "payload type identification", "sequence numbering", "timestamping"°ú "delivery monitoring"À» Æ÷ÇÔÇÑ´Ù. ¾îÇø®ÄÉÀ̼ǵéÀº º¸Åë UDP À§¿¡¼­ RTP¸¦ »ç¿ëÇÔÀ¸·Î½á ´ÙÁßÈ­¿Í üũ½æ(checksum) ¼­ºñ½º¸¦ ÀÌ¿ëÇÑ´Ù. ÇÏÁö¸¸, RTP´Â ´Ù¸¥ ³×Æ®¿÷ À̳ª Æ®·£½ºÆ÷Æ® ÇÁ·ÎÅäÄÝ À§¿¡¼­µµ »ç¿ëµÉ ¼ö ÀÖ´Ù. RTP´Â ÇϺÎÀÇ ³×Æ®¿÷¿¡¼­ Á¦°øÇÑÇϸé, ¸ÖƼij½ºÆ® ±â´ÉÀ» ÀÌ¿ëÇؼ­ ¿©·¯°³ÀÇ Å¬¶óÀ̾ðÆ®·ÎÀÇ µ¥ÀÌÅÍ Àü¼ÛÀ» Áö¿øÇÑ´Ù.

RTP´Â Àß ¾Ë·ÁÁø HTTP¿Í FTPÀÇ ÆÄÀÏ Àü¼Û ÇÁ·ÎÅäÄÝ°ú ºñ½ÁÇÏÁö¸¸, ½Ç½Ã°£ ½ºÆ®¸²¿¡ ÀûÇÕÇÏ°Ô ¼³°èµÇ¾ú´Ù. RTP´Â, HTTP¿Í FTP¿Í ´Þ¸®, Ŭ¶óÀ̾ðÆ®·Î ¹Ìµð¾î °³Ã¼ Àüü¸¦ ´Ù¿î·ÎµåÇÏÁö ¾Ê´Â´Ù. ´ë½Å, ´Ü¹æÇâ µ¥ÀÌÅÍ ½ºÆ®¸²À» Àç»ý µ¥ÀÌÅÍÀ²·Î ½Ç½Ã°£À¸·Î Àü¼ÛÇÑ´Ù. ¿¬°áÀÌ µ¥ÀÌÅÍ ½ºÆ®¸²À» °¨´çÇÒ Á¤µµ·Î ÃâºÐÇÑ ´ë¿ªÆøÀ» °¡Áö°í ÀÖ´Â ÇÑ, ±× ¹Ìµð¾î´Â Á¤»óÀûÀ¸·Î Àç»ýµÈ´Ù. ±× µ¥ÀÌÅÍ´Â Àç»ýµÈ ÈÄ¿¡ Áö¿öÁø´Ù. ½ÃûÀÚ°¡ ´Ù½Ã ±× ¹Ìµð¾î¸¦ Àç»ýÇϱâ À§Çؼ­´Â ½ºÆ®¸®¹Ö ¼­¹ö¿¡ ´Ù½Ã ¿äûÇØ¾ß ÇÑ´Ù.

3.3 WAVE ÆÄÀÏ Æ÷¸Ë

WAVE ÆÄÀÏ Æ÷¸ËÀº MicrosoftÀÇ RIFF ½ºÆåÀÇ Á¤ÀÇµÈ ÆÄÀÏ Æ÷¸ËÀÌ´Ù. RIFF ½ºÆåÀº ¸ÖƼ¹Ìµð¾î ÆÄÀÏÀ» À§ÇÑ ½ºÆåÀ¸·Î¼­ ´Ù¸¥ Á¾·ùÀÇ µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù.
RIFF´Â ¸¹Àº Á¾·ùÀÇ µ¥ÀÌÅÍ(ƯÈ÷, ¿Àµð¿À¿Í ºñµð¿À °°Àº ¸ÖƼ¹Ìµð¾î µ¥ÀÌÅÍ)¸¦ ÀúÀåÇϱâ À§ÇÑ ÆÄÀÏ Æ÷¸ËÀÌ´Ù. ±×°ÍÀº ûũ(chunks)¿Í ¼­¹ö-ä³Î(sub-channel)¿¡ ±â¹ÝÀ» µÐ´Ù. ÆÄÀÏ¿¡¼­ ûũ ŸÀÔ°ú ûũ Å©±â°¡ ¸ÕÀú ³ª¿À°í, ±× ´ÙÀ½ ½ÇÁ¦ ûũ ³»¿ëÀÌ ³ª¿Â´Ù. RIFF ÆÄÀÏ Àüü°¡ ¸ðµç ´Ù¸¥ ûũ¸¦ ´ã°í ÀÖ´Â °Å´Ù¶õ ûũÀÌ´Ù. RIFF ûũÀÇ ÄÁÅÙÃ÷¿¡¼­ °¡Àå ¸ÕÀú ³ª¿À´Â °ÍÀÌ "Æû ŸÀÔ(form type)"ÀÌ´Ù. ÀÌ °ÍÀÌ ÆÄÀÏ ³»¿ëÀÇ Àüü ŸÀÔÀ» Ç¥ÇöÇÑ´Ù. µû¶ó¼­, RIFF ÆÄÀÏÀÇ ±¸Á¶´Â ¾Æ·¡¿Í °°´Ù.

    Offset  Contents
    (hex)
    0000    'R', 'I', 'F', 'F'
    0004    Length of the entire file - 8 (32-bit unsigned integer)
    0008    form type (4 characters)
    
    000B    first chunk type (4 character)
    0010    first chunk length (32-bit unsigned integer)
    0014    first chunk's data
    ...     ...
¹ÙÀÌÆ®µéÀÇ ÀúÀå ¼ø¼­´Â "Little-Endian"ÀÌ´Ù.

WAVE Æ÷¸ËÀº µðÁöÅÐ ¿Àµð¿À¸¦ ÀúÀåÇÏ´Â RIFFÀÇ ºÎºÐÁýÇÕÀÌ´Ù. ±×°ÍÀÇ Æû ŸÀÔÀº "WAVE"ÀÌ°í, ´ÙÀ½ µÎ Á¾·ùÀÇ Ã»Å©°¡ ÇÊ¿äÇÏ´Ù.

WAVE´Â ¶ÇÇÑ LIST ûũ¿Í °°Àº RIFF°¡ Çã¿ëÇÏ´Â ´Ù¸¥ ûũ ŸÀÔÀ» ´ãÀ» ¼ö ÀÖ´Ù. LIST ûũ´Â ÀúÀ۱ǰú ÀúÀÚ¸í µî°ú °°Àº ¼±ÅÃÀûÀÎ(optional) µ¥ÀÌÅ͸¦ À§ÇØ »ç¿ëµÈ´Ù. ±×·¡¼­, WAVE Æ÷¸ËÀº ´ÙÀ½°ú °°Àº ±¸Á¶¸¦ °®´Â´Ù.
  Offset  Length   Contents
  0       4 bytes  'RIFF'
  4       4 bytes  
  8       4 bytes  'WAVE'

  12      4 bytes  'fmt '
  16      4 bytes  0x00000010		// Length of the fmt data (16 bytes)
  20      2 bytes  0x0001		// Format tag: 1 = PCM
  22      2 bytes  <channels>		// Channels: 1 = mono, 2 = stereo   
  24      4 bytes  <sample rate>	// Samples per second: e.g., 44100   
  28      4 bytes  <bytes/second>	// sample rate * block align
  32      2 bytes  <block align>	// channels * bits/sample / 8
  34      2 bytes  <bits/sample>	// 8 or 16

  36      4 bytes  'data'
  40      4 bytes  <length of the data block>
  44        bytes  <sample data>

4. ±¸Çö

4.1 LSSP ¼­¹ö ±¸Á¶

RTSP¿¡ µû¶ó µ¿ÀÛÇÏ´Â ¼­¹ö ºÎºÐÀÌ´Ù. óÀ½¿¡ TCP Æ÷Æ®¸¦ "listen"ÇÏ°í ÀÖ´Ù°¡ Ŭ¶óÀ̾ðÆ®ÀÇ Á¢¼Ó ¿äûÀÌ ÀÖÀ¸¸é "À̺¥Æ® ·çÇÁ(event loop)"·Î µé¾î°£´Ù(±×¸² 3). Å×½ºÆ® ¹öÀüÀ¸·Î¼­, ÇöÀç´Â ÇÑ °³ÀÇ Å¬¶óÀ̾ðÆ®¸¸ Áö¿øÇϵµ·Ï ±¸ÇöµÇ¾ú´Ù. ¿©·¯ Ŭ¶óÀ̾ðÆ®¸¦ Áö¿øÇϵµ·Ï ÇÏ´Â °ÍÀº ÇÁ·Î¼¼½º³ª ½º·¹µå¸¦ »ç¿ëÇؼ­ ½±°Ô ±¸ÇöµÉ ¼ö ÀÖ´Ù.

±×¸² 3. RTSP ¼­¹öÀÇ À̺¥Æ® ·çÇÁ

À̺¥Æ® ·çÇÁ¿¡¼­´Â Ŭ¶óÀ̾ðÆ®¿¡¼­ ¿À´Â RTSP ¸Þ½ÃÁö¸¦ ¹Þ°í ó¸®ÇÏ°í ÀÀ´äÇÏ´Â ±â´ÉÀÌ ±¸ÇöµÇ¾î ÀÖ´Ù. Ãß°¡·Î, À̺¥Æ® ·çÇÁ¿¡¼­ RTP ¼¼¼Ç ½ºÄÉÁì·¯¸¦ ½ÃÀÛ½ÃŲ´Ù. ¾Æ·¡´Â À̺¥Æ® ·çÇÁÀÇ ÁÖ¿ä ±â´ÉÀÌ´Ù.

±×¸² 4´Â LSSP ¼­¹öÀÇ Àüü ±¸Á¶ÀÌ´Ù.

±×¸² 4. LSSP ¼­¹ö Àüü ±¸Á¶

RTSP ¸Þ½ÃÁö Çڵ鷯(Message Handler)´Â RTSP ¸Þ½ÃÁö¸¦ ÆĽÌÇÏ°í ±× °á°ú¿¡ ÀÇÇØ ¼¼¼Ç °ü¸®ÀÚ¸¦ Á¦¾îÇÏ°í, ó¸® ÈÄ ÀÀ´äÀ» º¸³»´Â ¿ªÇÒÀ» ÇÑ´Ù. RTSP ¼¼¼Ç °ü¸®ÀÚ(Session Manager)´Â ¼¼¼ÇµéÀ» °ü¸®ÇÏ°í °¢ ¼¼¼Ç¿¡ ÇØ´çÇÏ´Â ½ºÆ®¸²À» »ý¼ºÇÏ°í ÃʱâÈ­ÇÑ´Ù. RTSP ¸Þ½ÃÁö¿¡ µû¶ó °¢ ¼¼¼ÇÀ» Á¦¾îÇÑ´Ù. RTP ½ºÆ®¸®¸Ó(Streamer)´Â ¹Ìµð¾î µ¥ÀÌÅ͸¦ ÆÄÀÏ¿¡¼­ Àоî RTPÆÐŶµéÀ» ¸¸µé¾î ½ºÄÉÁì·¯¿¡°Ô Àü´ÞÇÑ´Ù. ½ºÄÉÁì·¯(Scheduler)´Â ½ºÆ®¸®¹ÖÀ» ½ºÄÉÁìÇؼ­ RTP ÆÐŶÀ¸·Î ¸¸µé¾î UDP Æ÷Æ®·Î º¸³»´Â ±â´ÉÀ»ÇÑ´Ù.

4.1 RTSP ¸Þ½ÃÁö Çڵ鷯(Message Hander)
¼­¹ö´Â Ŭ¶óÀ̾ðÆ®°¡ óÀ½ Á¢¼ÓÇϸé INIT »óÅ¿¡ ÀÖ°Ô µÈ´Ù. ±× ´ÙÀ½ SETUP ¸Þ¼Òµå ¿äûÀ» ¹ÞÀ¸¸é READY »óÅ·ΠÀüÀÌÇÏ°í, PLAY ¸Þ¼Òµå ¿äûÀ» ¹ÞÀ¸¸é PLAY »óÅ·ΠÀüÀÌÇÏ°í TEARDOWN ¸Þ¼Òµå ¿äûÀÌ ¿À¸é ´Ù½Ã INIT »óÅ·Π°¡°Ô µÈ´Ù.

±×¸² 5. RTSP ¼­¹öÀÇ »óÅ ÀüÀÌ

4.2 RTSP ¼¼¼Ç °ü¸®ÀÚ(Session Manager)

Ŭ¶óÀ̾ðÆ®·Î ºÎÅÍ SETUP ¸Þ¼Òµå ¿äûÀ» ¹Þ°ÔµÇ¸é ¼¼¼ÇÀ» »ý¼º, ÃʱâÈ­ÇÏ°í ±× ¼¼¼ÇÀ» ¼­¹öÀÇ ¼¼¼Ç ¸®½ºÆ®¿¡ Ãß°¡ÇÑ´Ù. °¢ ¼¼¼ÇÀº ¼¼¼Ç ID¿Í ÇöÀç »óÅÂ(±×¸² 5), WAV ÆÄÀÏÀÇ URL µîÀÇ Á¤º¸¸¦ À¯ÁöÇÑ´Ù. ¶ÇÇÑ URL·Î ºÎÅÍ RTP ½ºÆ®¸²À» ÃʱâÈ­ÇÏ°í ½ºÆ®¸²¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áø´Ù. ¼¼¼ÇÀÌ À¯ÁöÇÏ´Â RTP ½ºÆ®¸²°ú °ü·ÃµÈ Á¤º¸´Â µ¥ÀÌÅÍ Æ÷Æ®¹øÈ£, µ¥ÀÌÅÍÀ², ½Ã°£ Á¤º¸µîÀ» °®´Â´Ù. ½ºÆ®¸²ÀÇ ¸ðµç »ó¼¼ÇÑ Á¤º¸´Â RTP ½ºÆ®¸²¿¡¼­ °¡Áö°í ÀÖ´Ù.

ÀÌ ¼¼¼ÇÀº °è¼ÓÇؼ­ ½ºÆ®¸²ÀÇ »óÅ °üÂûÇÏ°í RTSP ¸Þ¼Òµå ¿äû À̺¥Æ®·ÎºÎÅÍ ¼­¹öÀÇ »óŸ¦ ÀüÀ̽ÃŲ´Ù. ±× °á°ú¿¡ µû¶ó ½ºÆ®¸²À» Á¦¾îÇÑ´Ù. READY »óÅ¿¡¼­ PLAY ¸Þ¼Òµå ¿äûÀ» ¹ÞÀ¸¸é, µåµð¾î ½ºÆ®¸²ÀÇ Àü¼ÛÀ» ½ÃÀÛÇÑ´Ù.

4.3 ½ºÆ®¸®¸Ó(Streamer)

PLAY ¸Þ¼Òµå ¿äûÀ» ¹Þ°Ô µÇ¸é ÇØ´çµÇ´Â ¼¼¼ÇÀº ±× °ÍÀÇ ½ºÆ®¸²À» ½ÃÀÛ½ÃŲ´Ù. ½ºÆ®¸²Àº ÀÌ¹Ì ¾Ë·ÁÁø Ŭ¶óÀ̾ðÆ®ÀÇ RTP Æ÷Æ®¹øÈ£·Î UDP ¿¬°áÀ» ¼³Á¤ÇÏ°í, WAV ÆÄÀÏÀ» ¿­°í, RTP ÆÐŶ¸¦ À§ÇØ ÇÊ¿äÇÑ Á¤º¸(SSRC,Àü¼Û·ü,ÀϷùøÈ£,ÆÐŶũ±â)¸¦ °áÁ¤ÇÑ´Ù. ±×¸®°í ³ª¼­ ½ÇÁ¦ Àü¼ÛÀ» À§ÇØ ½ºÄÉÁì ¸®½ºÆ®¿¡ ±× ½ºÆ®¸²À» µî·ÏÇÑ´Ù. (³ªÁß¿¡ ½ºÄÉÁì·¯¿¡ ÀÇÇØ ½ÇÁ¦ Àü¼ÛÀÌ ÇàÇØÁø´Ù.) PAUSEÀÇ °æ¿ì¿¡´Â ½ºÄÉÁì ¸®½ºÆ®¿¡¼­ ½ºÆ®¸²ÀÌ Á¦°ÅÇÔÀ¸·Î½á, ½ºÄÉÁì·¯´Â ±× ½ºÆ®¸²À» ´õ ÀÌ»ó ½ºÄÉÁìÇÏÁö ¾Ê°Ô µÈ´Ù.

4.4 ½ºÄÉÁì·¯(Scheduler)

½ºÄÉÁì·¯´Â À̺¥Æ® ·çÇÁ¿¡¼­ ¸Å¹ø È£ÃâµÈ´Ù. È°¼ºÈ­µÇ¸é, ½ºÄÉÁì·¯´Â ½ºÄÉÁì ¸®½ºÆ®¿¡ ÀÖ´Â ½ºÆ®¸²µéÀ» Àü¼ÛÇϱâ À§ÇØ ±× ½ºÆ®¸²¿¡ ÇØ´çµÇ´Â ½ºÆ®¸² À̺¥Æ®(stream_event())¸¦ È£ÃâÇÑ´Ù. ½ºÆ®¸² À̺¥Æ®´Â ½ºÆ®¸²ÀÇ WAV ÆÄÀÏÀ» ÆÐŶ Å©±â ¸¸Å­ Àо RTP ÆÐŶÀ» ¸¸µé¾î(build_RTP_packet()) UDP Æ÷Æ®·Î º¸³»´Â ±â´ÉÀ» ÇÑ´Ù. RTP¸¦ À§ÇÑ Á¤º¸´Â ¼¼¼Ç °ü¸®ÀÚ¿¡ ÀÇÇØ ÀÌ¹Ì ½ºÆ®¸²ÀÌ °¡Áö°í ÀÖ´Ù.

4.4 RTSP Ŭ¶óÀ̾ðÆ®

Ŭ¶óÀ̾ðÆ® ¿ª½Ã ¸®´ª½º¿ëÀ¸·Î ±¸ÇöÇÏ¿´°í, ÅؽºÆ® ±â¹Ý ÀÎÅÍÆäÀ̽º¸¦ °®´Â´Ù. ¸í·É¾î Ŭ¶óÀ̾ðÆ® ¾îÇø®ÄÉÀ̼ǿ¡¼­ Á¦°øµÇ´Â ¸í·É¾î¿Í ±×¿¡ ÇØ´çµÇ´Â RTSP METHOD´Â ´ÙÀ½°ú °°´Ù.

5. Å×½ºÆ® ¹× µ¥¸ð

LSSP ´Ù¿î·Îµå

5.1 ¼³Ä¡ ¹× Å×½ºÆ®

  1. Linux ¼­¹ö¿¡¼­ lssp.tar.gzÀ» ¹Þ¾Æ¼­ % tar zxvf lssp.tar.gz ½ÇÇàÇÑ´Ù.
  2. ±×·¯¸é, lssp¶ó´Â µð·ºÅ丮¿¡ ¾Æ·¡¿Í °°Àº ¼­ºê µð·ºÅ丮°¡ »ý±ä´Ù.
     etc/     player/     server/
    etc¿¡´Â ¼³Á¤ ÆÄÀÏ(example.cfg)°ú »ùÇà ¿Àµð¿À ÆÄÀÏ(ghostofpast.wav)°¡ ÀÖ°í, player¿¡´Â Ŭ¶óÀ̾ðÆ® ¼Ò½º ÆÄÀÏÀÌ ÀÖ°í, server¿¡´Â ¼­¹ö ¼Ò½º ÆÄÀÏÀÌ ÀÖ´Ù.
  3. server% make¸¦ Çϸé lssp-server ½ÇÇàÆÄÀÏÀÌ »ý±ä´Ù.
  4. player%make¸¦ Çϸé lssp-player ½ÇÇàÆÄÀÏÀÌ »ý±ä´Ù.
  5. etc%example.cfg¿¡¼­ BasePath¸¦ ÇöÀç etc µð·ºÅ丮ÀÇ Àý´ëÆнº·Î ¼öÁ¤ÇÑ´Ù. µðÆúÆ® °ªÀ¸·Î /home/jbkwon/internet/lssp/etc·Î µÇ¾î ÀÖ´Ù. ±×¸®°í, PortÀÇ °ªÀº RTSP Æ÷Æ® ¹øÈ£·Î¼­ µðÆúÆ®·Î 4444·Î µÇ¾î ÀÖ´Ù. À̰͵µ Àû´çÈ÷ ¼öÁ¤ÇÑ´Ù.
  6. server% ./lssp-server ../etc/example.cfg·Î ¼­¹ö¸¦ ¶ç¿î´Ù.
  7. player% ./lssp-player·Î Ŭ¶óÀ̾ðÆ®¸¦ ½ÇÇàÇÏ°í, ¾Æ·¡ ¸í·ÉÀ» ÀÔ·ÂÇÑ´Ù.
    o rtsp://¼­¹öIP:Æ÷Æ®    ¿¹) o rtsp://147.46.59.186:4444
    g ghostofpast.wav
    
  8. ¾Æ·¡ÀÇ À½¼º°¡ µé¸± °ÍÀÌ´Ù.
    "I can remember nearly 1900 years. I am the Ghost of Christmas Past."

¾Æ·¡´Â Å×½ºÆ®¸¦ ÅëÇØ LSSP ¼­¹ö¿¡¼­ ¹Þ°í º¸³»´Â RTSP ¸Þ½ÃÁö¸¦ °üÂûÇÑ °á°úÀÌ´Ù.

C->S:
OPTIONS * RTSP/0.6 1
User-Agent: LSSP

S->C:
RTSP/0.6 200 1 OK
Date: 19 Dec 2000 11:49:53 GMT

OPTIONS * RTSP/0.6 1
Server: LSSP

C->S:
RTSP/0.6 200 1 OK
Date: 19 Dec 2000 11:49:55 GMT

C->S:
DESCRIBE rtsp://147.46.59.186/ghostofpast.wav RTSP/0.1 2
Accept: application/sdp; application/x-rtsp-mh

S->>C:
RTSP/0.1 200 2 OK
Date: 19 Dec 2000 11:53:45 GMT
Content-type: application/sdp
Content-Length: 237

v=0
o=- 2890844256 2890842807 IN IP4 147.46.59.186
s=RTSP Session
i=LSSP

C->S:
SETUP rtsp://147.46.59.186/ghostofpast.wav RTSP/0.6 3
Transport: rtp/udp;port=1026
\r\n\r\n

S->C:
RTSP/0.1 200 3 OK
Date: 19 Dec 2000 11:56:05 GMT
Session: 1
Content-Length: 0
Transport: rtp/udp;port=1026

C->S:
PLAY rtsp://147.46.59.186/ghostofpast.wav RTSP/0.1 4
Session:0

S->C:
RTSP/0.1 200 4 OK
Date: 19 Dec 2000 11:58:45 GMT

Session: 1
Content-Length: 0
Transport: rtp/udp;port=1026

C->S:
PAUSE rtsp://147.46.59.186/ghostofpast.wav RTSP/0.1 5

C->S:
TEARDOWN * RTSP/0.6 6

S->C:
"RTSP/0.1 200 6 OK
Date: 19 Dec 2000 12:06:08 GMT

5.2 µ¥¸ð

LSSP ¼­¹öÀÇ ½ºÆ®¸®¹Ö ¼­ºñ½º¸¦ ¹Þ±â À§Çؼ­´Â LSSP Ŭ¶óÀ̾ðÆ®°¡ ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù. (¹«½¼ ÀÌÀ¯¿¡¼­ÀÎÁö RTSP¸¦ Áö¿øÇÏ´Â »ó¿ë ÇÁ·Î±×·¥°ú´Â ȣȯµÇÁö ¾Ê°í ÀÖ´Ù.) µû¶ó¼­, µ¥¸ð¸¦ µè±â À§Çؼ­´Â À§ÀÇ ¼Ò½º¸¦ ´Ù¿î·Îµå ¹Þ¾Æ ¼­¹ö Ŭ¶óÀ̾ðÆ® ¸ðµÎ ÄÄÆÄÀÏÇÑ ÈÄ Å¬¶óÀ̾ðÆ® ½ÇÇà ÈÄ ¾Æ·¡ URL·Î Á¢¼ÓÇϸé LSSP ¼­¹öÀÇ ½ºÆ®¸®¹ÖÀÇ µ¥¸ð(ghostofpast.wav)¸¦ µéÀ» ¼ö ÀÖ´Ù.

rtsp://147.46.59.188:4444

6 °á ·Ð

°ú¸ñ ÇÁ·ÎÁ§Æ®·Î¼­ °£´ÜÇÑ ¸®´ª½º¿ë ½ºÆ®¸®¹Ö ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®¸¦ ±¸ÇöÇغ¸¾Ò´Ù. ±âÀÏÀÌ Ã˹ÚÇÑ °ü°è·Î óÀ½¿¡ ÀǵµÇß´ø RTP¸¦ Çâ»ó½ÃŲ RTP+¸¦ Á¦¾ÈÇÏÁö´Â ¸øÇßÁö¸¸, °­ÀÇ¿¡¼­ ´Ù·ç¾ú´ø RTP¿Í RTSP¸¦ ½ÇÁ¦·Î ±¸ÇöÇÔÀ¸·Î½á µÎ ÇÁ·ÎÅäÄÝÀ» ¸é¹ÐÈ÷ ÀÌÇØÇÒ ¼ö ÀÖ¾ú°í ±¸Çö»óÀÇ ¾î·Á¿òµµ üÇèÇÒ ¼ö ÀÖ¾ú´Ù. ƯÈ÷ ¹Ìµð¾î Æ÷¸ËÀ» ÀÌÇØÇÏ°í ºÐ¼®Çؼ­ Àç»ý½ÃŲ´Ù´Â °ÍÀÌ ½±Áö ¾Ê¾Ò´Ù. ±×·¡¼­, RTP¿Í RTSPÀÇ ±¸Çö¿¡ ÁýÁßÇϱâ À§ÇØ ¹Ìµð¾î Æ÷¸ËÀº °¡Àå ´Ü¼øÇÑ WAV¸¦ »ç¿ëÇÏ¿´´Ù. ±âȸ°¡ µÈ´Ù¸é, ´Ù¾çÇÑ Æ÷¸ËÀÇ ºñµð¿À µ¥ÀÌÅ͸¦ Áö¿øÇϵµ·Ï È®ÀåÇÏ°í RTP ½ºÆ®¸®¹ÖÀÇ ¹®Á¦Á¡À» ºÐ¼®Çؼ­ Çâ»ó ¹æ¾ÈÀ» »ý°¢ÇØ º¼ ¼ö ÀÖ°Ú´Ù. ±×¸®°í ÇöÀç´Â º» ÇÁ·ÎÁ§Æ®¿¡¼­ ±¸ÇöÇÑ Å¬¶óÀ̾ðÆ®·Î¸¸ ½ºÆ®¸®¹Ö ¼­ºñ½º¸¦ ¹ÞÀ» ¼ö Àִµ¥, ¹®Á¦Á¡À» º¸¿ÏÇؼ­ RTSP¸¦ Áö¿øÇÏ´Â ´Ù¸¥ »ó¿ë ÇÁ·Î±×·¥µé(QuickTime, Real Player µîµî)°úµµ ȣȯµÇµµ·Ï ¼öÁ¤À» ÇÒ »ý°¢µµ °®°í ÀÖ´Ù.

7 Âü°í ÀÚ·á