리눅스 비디오 서버
- 인터넷방송 및 웹캠 설치 -

필자 : 배철수 / 리눅스월드 발행인

 

     

I.  시작하는 말

    리눅스는 지금까지는 동영상 및 음성 등의 멀티미디어 분야에서는 능력이 떨어진다는 인식을 사람들은 갖고 있다. 그러나 커널 2.2 부터는 상당한 수준의 멀티미디어 관련 기능을 커널 수준에서 지원하고 있으므로 앞으로 이 분야에서도 많은 사용이 기대되고 있다.

    필자도 예전부터 리눅스를 인터넷에서 실시간으로 화상전송을 할 수 있는 서버 시스템으로 사용하는 방안을 찾고 있다가 RealNetworks(www.real.com)사의 리얼서버(Realserver)가 리눅스에서 인터넷 방송을 지원한다는 글을 보고서 설치를 시도했다.

    그러나 단순히 리얼서버 설치만으로는 인터넷방송을 시작할 수 없었다.
    리얼서버(리얼프로듀서) 프로그램은 비디오 및 사운드 장치를 접근해서 영상 및 사운드를 생성하고 이를 인터넷을 통해 사용자의 클라이언트 프로그램으로 전송하는 구실을 할 뿐이고, 카메라나 마이크를 리눅스 서버에 연결해서 리얼서버/프로듀서 프로그램이 비디오 및 사운드 장치를 접근(사용)할 수 있게 하기 위해서는 커널에 해당 장치에 대한 드라이버를 설치해야 했다.

    리얼서버 설치는 매뉴얼만으로 충분했으나 특히 카메라(CCD 방식)를 리눅스에 연결하는 것은 정말 어려운 작업이었다. 처음에는 어떤 카메라를 사용해야 하는지 또 그 카메라를 리눅스 서버에 연결할 때 어떤 보드 또는 포트를 사용하는지를 파악하는 것도 힘들었다.
    리눅스에서 지원되는 보드를 찾기 위해 수많은 보드의 사양을 검토하고 이를 미국에서 사오는데도 한 달 여 가량을 소비했다.

    피시에 연결되는 장치가 윈도우에서 사용 가능하다고 해서 리눅스에서 가능하다는 보장은 없다.
    윈도우는 해당 장비 업체서 드라이버를 제공하지만 리눅스는 아직도 전세계의 리눅스 개발자들이 장비 제조업체로부터 아무런 자료나 정보를 제공받지 못한 상태에서 드라이버를 개발하고 있기 때문이다. 비디오 관련 장비도 마찬가지다. 사운드카드는 이제 거의 다 리눅스에서 지원되고 있지만 비디오 캡쳐 및 카메라 등 화상 관련 장비들은 아직도 상당수가 리눅스에서 지원이 되지 않으므로 선택에 주의하여야 한다.

    이 글은 필자가 리눅스비디오(http://www.linuxvideo.co.kr) 사이트를 설치하면서 여러 인터넷 사이트에서 모은 자료들과 경험을 토대로 작성했다.
    소개할 내용은 리눅스로 인터넷에서 영상, 사운드 및 화상을 전송하는데 필요한 장비, 리눅스에서 해당 장비를 사용하는데 필요한 커널 설정, 드라이버 설치, 비디오관련 응용 프로그램 등이다.

    참고 사이트 / 문서

    1. http://www.strusel007.de/linux/bttv/
    2. BTTV Mini-HOWTO

     

II. 비디오서버 설치작업  

     

1. 리눅스비디오의 개념 및 응용

    리눅스비디오의 주요 용도는 리눅스에서 영상 및 사운드, 화상 등의 멀티미디어 파일을 생성하고 저장, 및 편집하는 것이다. 비디오 캡쳐보드에 카메라, VTR, TV 안테나 등을 연결하고 필요한 프로그램을 설치하면 TV 수신, 영상 저장, 사운드 파일 만들기, 그림파일 캡쳐 등의 작업을 할 수 있다.

    리눅스비디오라고 하면 사람들은 그래픽카드(VGA 카드)와 관련이 있는걸로 착각하기 쉽다. 그러나 리눅스비디오는 그래픽카드와는 무관하다.
    비디오서버에서 제공하는 인터넷방송이나 화상 슬라이드를 수신하는 클라이언트 피시에는 그래픽카드가 필수이나, 비디오서버에는 그래픽카드는 선택 요소이다.

    리눅스비디오는 응용범위가 많다. 범죄예방이나 원격 감시용으로 많은 카메라가 주위에 사용되고 있는데 대부분 VTR 또는 TV에 연결되어 있다. VTR은 설치는 쉬우나 유지 보수비가 많이 든다. 테이프의 경우 계속해서 사용하면 한 달 이내에 그 질이 크게 떨어져 버려야 한다.
    그러나 리눅스 비디오의 경우 저장에 하드를 사용하므로 하드디스크 한 개에 테이프 수십 개 분량의 저장이 가능하고, 오래 사용해도 화질에 변화가 없으며, 최소 1~2년은 반복해서 사용할 수 있다.

    또한 VTR에 연결하는 경우는 VTR과 카메라까지의 거리가 몇 백 미터 이내인 경우만 가능한데 비해 리눅스 비디오는 인터넷에 연결할 경우 거리의 제한을 받지 않는다.
    유동 IP를 사용하는 경우에도 화상전송이 가능하다.

    국내에 유치원에 많이 보급된 하드웨어 방식의 인터넷에 연결되는 원격 카메라도 리눅스 운영체제가 내장되어 있고 리눅스 비디오와 작동 방식이 거의 같다.
    그러나 이는 값이 수백만원씩이나 하고 동시 사용자수에도 제약이 있으며 웹서버나 메일서버 등은 별도로 설치해야 하는 등의 불편함이 있다. 그러나 리눅스를 원격감시 카메라 시스템으로 사용하면 값도 100 만원 이내로 가능하고 웹서버, 메일서버, DNS 서버 등 각종 인터넷 서버 기능도 동시에 설치할 수 있는 장점이 있다.

    이 외에도 로봇의 시각인식 시스템으로도 리눅스비디오가 사용된다. 로봇의 운영체제에 리눅스를 사용한다면 로봇의 눈에 해당되는 부분을 카메라 및 캡쳐보드가 담당하는 것이다.

     

2. 비디오서버

    이 글에서는 리눅스비디오의 여러 응용 분야 중 두 가지 부분만 설명한다. 다른 응용 분야는 필자가 아직 테스트 해보지 못했기 때문이다.
    인터넷 또는 전용선을 이용한 인터넷방송 즉 영상+사운드 전송과 화상 슬라이드(웹캠)이다.
    이 둘은 비슷한 기능이나 기술적으로 많이 다르다. 이 서비스를 제공하는 리눅스서버를 여기서는 리눅스비디오서버 줄여서 비디오서버라 부르겠다.

    ·인터넷방송은 이미 우리가 많이 사용하고 있는바 인터넷으로 영상과 사운드를 실시간으로 스트림으로 제공하는 형태이다. 일반 TV 방송은 방송신호가 전파를 통해 TV로 전송되지만 인터넷방송은 방송신호가 디지털데이타의 스트림으로 인터넷라인을 통해 피시로 전달되며 피시에는 전용 인터넷방송 수신 프로그램을 설치하여 방송을 수신할 수 있다. 물론 사운드카드 스피커 등의 장비도 필요하다.
    인터넷 방송 수신 프로그램으로는 마이크로소프트사의 윈도우미디오플레이어와 리얼사의 리얼플레이어가 있다.

    인터넷방송을 보내는 측 에서는 영상 및 사운드를 실시간으로 생성하고 이를 속도가 다른 수많은 클라이언트에 전송해 주어야 하므로 전용 방송 프로그램이 필요하다.
    마이크로소프트사의 윈도우미디어서버와 리얼사의 리얼서버가 대표적인 프로그램이다. 윈도우미디오서버는 당연 리눅스에 설치가 안된다. 리얼서버는 리눅스 및 유닉스에 설치가 된다.

    리눅스에 설치되는 리얼서버 프로그램은 단순히 비디오 스트림을 내 보내는 역할을 한다.
    실제 비디오 스트림을 생성해서 이를 리얼서버로 보내주는 프로그램은 별도로 있다. 리얼프로듀서가 이것이다. 리얼 프로듀서를 설치하지 않아도 리얼서버는 파일에 저장된 비디오 데이터를 보낼 수 있지만 실시간으로 방송을 하려면 반드시 리얼프로듀서를 설치해야 한다.

    리얼서버와 리얼프로듀서는 별도의 서버에서 가동할 수도 있고 한 대의 서버에서 모두 가동할 수도 있다. 리얼서버 프로그램 하나가 여러 리얼프로듀서로부터 생성된 비디오 데이터를 전송할 수도 있다. 그러므로 카메라와 사운드카드는 리얼프로듀서가 설치된 서버에 장착하여야 한다.
    실제 설치가 어려운 것은 리얼프로듀서이다. 프로그램 설치가 어려운 것이 아니고 이 프로그램이 필요로 하는 비디오 및 사운드 카드 드라이버를 리눅스에 설치하는 것이 어렵다.

    리얼서버 프로그램 설치는 하드웨어 장치와는 무관하다. 단지 라이브러리 한 두 가지가 설치돼 있으면 족하다. 이것도 모든 배포본에 기본으로 설치된다.
    이 글에서는 리얼서버와 리얼프로듀서를 한 대의 서버에 설치하는 경우를 설명한다. 이를 두개의 서버에 설치하는 경우는 리얼프로듀서 가동시에 리얼서버가 설치된 서버의 주소만 지정해 주면 된다.

    멀티미디어파일을 실시간으로 전송하면 상당한 대역폭을 차지하므로 인터넷방송을 송신하는 리얼서버가 설치된 서버의 경우 사용자가 많아지면 고속의 인터넷 연결이 필요하다. TV 방송은 한 개의 신호를 내보내고 이 신호를 여러 TV에서 수신하는 형태이나 인터넷방송의 경우는 매 사용자마다 별개의 데이터 스트림이 전송되므로 사용자 수에 비례해 데이터 대역폭이 증가한다.
    이 문제를 해결하기 위해 멀티캐스트란 기법이 사용되는데 이는 한 개의 데이터 스트림을 여러 클라이언트에서 공유해 사용하는 방식이다. 즉 연결 클라이언트가  많아져도 서버의 네트워크 대역폭이 증가하지 않는다.

    그러나 이를 사용하기 위해서는 인터넷 및 클라이언트가 속한 랜에서 멀티캐스트를 지원하는 라우터 등을 사용해야 하므로 아직은 일반화되지 않고 있다.

    웹서버의 홈페이지에 영상과 사운드가 들어 있는 멀티미디어 파일을 저장해 놓고 사용자가 웹에서 이를 선택하면 영상과 사운드를 보여주는 방식은 인터넷방송이라 할 수 없다. 이는 카메라 및 사운드 장치로부터 실시간으로 영상 및 사운드를 생성하는 것이 아니고 저장된 파일을 전송해 주는 것으로 누구나 홈페이지에 간단히 설치할 수 있다.

    ·둘째는 화상슬라이드 일명 웹캠(Webcam)이다.

    인터넷방송은 실시간으로 영상+사운드가 들어있는 데이터 스트림을 내보내므로 웹브라우저 만으로는 수신할 수 없고 전용프로그램을 사용해야 한다.

    그러나 JPEG나 GIF로 만든 그림 파일을 연속적으로 웹서버에서 내보내고 웹브라우저에서 이를 계속해서 갱신해주면 부자연스럽긴 해도 연속적인 동작을 보여줄 수 있다. 마치 연속되는 동작을 슬라이드 필름으로 보여주는 것과 비슷하다.
    이 방법의 이점은 웹브라우저 만으로 화상을 수신할 수 있다는 점이다. 단 사운드는 제공할 수 없다.

    사용자의 웹브라우저에서 연속적으로 JPEG나 GIF 그림파일을 수신하게 하려면 웹서버에 별도의 프로그램을 설치해야 한다.(서버푸쉬, CGI 등)
    물론 웹서버에서 계속적으로 변경되는 그림 파일을 생성하는 부분도 들어가야 하므로 단순히 CGI 프로그램만이 아니고 그림 파일을 실시간으로 만들어 주는 즉 슬라이드 필름을 찍는 다른 프로그램의 도움도 필요하다.
    웹캠이라 불리는 프로그램이 바로 이것이다.

    구체적으로 설명하면 리눅스에 설치된 카메라가 비추는 대상을 프로그램으로 일정 간격으로 홈페이지에 같은 이름의 jpeg 파일로 저장한다. 홈페이지에서는 그림 파일이 변경될 때마다 웹서버의 서버푸쉬나 CGI 프로그램을 사용하여 이 파일을 사용자의 웹브라우저로 전송하는 것이 화상슬라이드(웹캠)의 작동 방식이다.

 

3. 설치 준비작업

    (1) 장비

    ① 피시 :

        리얼서버/프로듀서를 한 대에서 운영하고 동시접속자수가 5명 미만이라면 최소
        펜티엄 II 266 급 CPU와 256 메가의 메모리를 필요로 한다. 동시 접속자수가 많아지면
        CPU 및 메모리 특히 메모리를 크게 늘려야 한다. 웹캠은 펜티엄급 피시에 64메가의
        메모리에서도 가능하다.

        필자가 이 글을 쓰기 위해 테스트한 피시의 사양은 아래와 같다.

            - 마더보드    : Asus CUV4X
            - CPU          : Pentium III 733
            - Memory     : 128 mega
            - 랜카드       : 3COM 3c905b
            - 하드디스크 : Quantum

    ② 카메라

    화상채팅에 사용되는 USB 포트에 꼽는 카메라도 사용이 가능하나 해상도나 거리, 비추는 범위 등이 한정돼 있어 인터넷방송이나 웹캠용으로는 사용하기 힘들다.
    CCD 방식의 카메라를 사용해야 한다. (은행에서 VTR에 연결하여 사용하는 감시카메라가 이 방식이다.)
    CCD 카메라는 화소수 및 기타 기능에 따라 십만원에서 100만원 이상까지 가격차이가 심하다. 비싸지만 캠코더도 연결이 가능하다. 일반적으로 20만원 수준이면 사용에 문제가 없다.

    카메라에는 연결단자가 한 개 내지 두 개가 있다. RCA 단자 또는 composite video input 라고 부르는 단자와 VHS 단자이다.
    RCA 단자는 VTR을 TV에 연결할 때 사용하는 단자이다. VHS 단자는 고가의 카메라에만 있다. VHS 단자를 사용하면 보다 선명한 화면을 볼 수 있다.
    RCA 단자는 10base2 방식의 T 콘넥터와 같은 형태이다. 안에 심이 한 개 들어 가고 밖에는 링 형태의 관이 있다. VHS 단자는 5 개의 핀이 꼽히게 되어 있다. 이 둘 중 한 개만 있으면 캡쳐보드와 연결이 가능하다.

    CCD 카메라는 TV나 VTR 에 연결되므로 카메라를 살 때는 그 나라의 방송방식에 맞는걸 사용해야 한다.
    유럽에서는 방송방식이 PAL 방식이므로 유럽에서 수입한 카메라나 유럽에 수출되는 카메라라면 PAL 방식이어서 국내에서 사용할 수 없다. 국내에서는 NTSC 방식을 사용해야 한다.

    ③ 캡쳐보드

    CCD 카메라를 피시에 연결할 때 사용하는 보드로서 이미지프로세서보드라고도 부른다. 보통 TV 수신카드를 겸하고 있다. 모든 보드가 리눅스에서 사용할 수 있지는 않다. 보드에서 사용하는 이미지프로세서 칩에따라 리눅스에서 지원 여부가 결정된다.
    리눅스에서 가장 지원이 잘되는 칩은 BT848, 878 칩이다. 이 칩은 국내의 몇몇 TV 수신카드에서도 사용하고 있다. 필자가 이 글에서 사용한 보드는 독일의 Pinnacle Systems(http://www.pinnaclesys.com) 에서 생산한 STUDIO PCTV라는 모델이다.

    주의할 건 유럽에서는 PAL 방식을 사용하므로 그 쪽에서 수입하면 국내의 NTSC 방송방식을 지원하지 않는다. 독일에서 미국으로 수출되는 모델을 구입해야 한다.(미국은 NTSC 방식이다.) 필자도 미국에서 수입하였다. 이 글은 STUDIO PCTV 캡쳐보드에서의 설치를 가정했으므로 비록  Bt848, 878 칩을 사용해도 다른 보드에서는 맞지 않을 수 있다.
    필자가 국내에서 생산되는 다른 Bt878 칩을 사용한 TV 카드에서 시험을 해 보았는데 약간 화질이 떨어졌으나 작동은 되었다.  

    ④ 케이블

    카메라를 캡쳐보드에 연결할 때 사용하는 케이블로서 10Base2 방식의 랜 케이블과 비슷하다. 케이블의 길이가 길수록 두꺼운 케이블을 사용해야 한다. 약 500 미터까지도 가능하다고 한다.

    ⑤ 사운드카드

    인터넷 방송에서 사운드를 제공하려면 별도의 사운드카드가  필요하다. 대부분의 사운드 카드가 리눅스에서 지원되므로 문제 없다. 이 글에서 사용한 카드는 Sound Blaster bivra 128 PCI 이다.

    아래는 필자가 테스트한 피시에서 lspci 명령으로 본 각 장치이다.
     

    video:~# lspci
    00:00.0 Host bridge: VIA Technologies, Inc.: Unknown device 0605 (rev 81)
    00:01.0 PCI bridge: VIA Technologies, Inc.: Unknown device 8605
    00:04.0 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super] (rev 22)
    00:04.1 IDE interface: VIA Technologies, Inc. VT82C586 IDE [Apollo] (rev 10)
    00:04.4 Host bridge: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev 30)
    00:0d.0 VGA compatible controller: ATI Technologies Inc 3D Rage I/II 215GT [Mach64 GT] (rev1)
    00:0e.0 Multimedia video controller: Brooktree Corporation Bt878 (rev 11)
    00:0e.1 Multimedia controller: Brooktree Corporation Bt878 (rev 11)
    00:0f.0 Multimedia audio controller: Ensoniq: Unknown device 5880 (rev 02)
    00:11.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 30)

        

        *. 비디오캡쳐보드(Bt878), 사운드카드(Ensoniq), 랜카드가 장착된 것을 보여주고 있다.

    (2) 리눅스 설치

    웹캠은 커널이나 배포본과는 무관하다.(커널 2.2, 2.4 모두 가능) 그러나 리얼서버는 커널 2.2에서만 설치가 된다. 배포본 중 필자가 테스트한 것은 레드햇 6.2(영문) 과 데비안 potato 이다. 다른 배포본은 테스트해 보지 못했다. 설치시 특별히 다른 점은 없다. 단 몇 개의 패키지가 추가되야 한다.

    ① 레드햇 6.2 (영문판) : development 에 관한 것은 모두 설치한다.

    ② 데비안 Potato : important 와 Standard 에 속한 것을 모두 설치한다.
        단 아래 두 패키지를 추가로 설치해야 한다.(기본으로 설치가 안된다.)

    - libstdc++2.8 -The GNU stdc++library(old egcs version)-libstdc++2.8_2.90.29-2.deb
       : 리얼서버 설치에서 필요하다.

    - libncurses5-dev - Developer’s libraries and docs for ncurses
       : 커널 컴파일시 make menuconfig를 사용하려면 필요하다.

    - 데비안 potato 에서는 네트워크 설정 파일이 변경됐다.
       아래 필자가 테스트한 피시의 네트워크 설정이다.
       (/etc/network/interfaces 파일 )
     

    # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
    # The loopback interface
    iface lo inet loopback
      up route add -host 127.0.0.1 dev lo
    iface eth0 inet static
      address 211.217.77.244
      netmask 255.255.255.248
      network 211.217.77.240
      broadcast 211.217.77.247
      gateway 211.217.77.241
      up route add -host 211.217.77.244 dev eth0


     video:~# netstat -nr
     

    Kernel IP routing table
    Destination         Gateway           Genmask            Flags   MSS Window  irtt Iface
    211.217.77.244   0.0.0.0           255.255.255.255     UH      0 0               0 eth0
    127.0.0.1            0.0.0.0           255.255.255.255     UH      0 0               0 lo
    211.217.77.240   0.0.0.0           255.255.255.248     U        0 0                0 eth0
    0.0.0.0             211.217.77.241    0.0.0.0               UG       0 0               0 eth0


     

4. 설치작업

    설치작업의 개요는 이러하다. 카메라가 연결되는 캡쳐보드 및 사운드카드 장치 파일을 만들고 커널코드 또는 커널 모듈에 캡쳐보드 및 사운드카드 드라이버를 넣으면 이 장치들이 인식된다. 다음에 사용자 프로그램(리얼프로듀서)에서 이들 장치를 사용하면 된다.

    (1) 비디오 및 사운드 장치 만들기

    비디오 캡쳐카드 및 사운드카드가 사용하는 장치를 만들어야 한다. 캡쳐보드의 장치명은 /dev/video? 이고 사운드 카드는 /dev/dsp?이다. 이미 있는 경우는 만들 필요가 없다. 데비안에는 비디오 장치를 만들어야 한다. /dev 디렉토리에서 아래처럼 만든다.

            - mknod  /dev/video0 c 81 0
            - mknod  /dev/video1 c 81 1
            - chmod 666 /dev/video0 /dev/video1
            - ln -s /dev/video0 /dev/video

            ls -l /dev/video* 
     

      lrwxrwxrwx   1 root    root          11 Mar 25 20:27 /dev/video -> /dev/video0
      crw-rw-rw- 1 root    root    81,   0 Mar 25 20:26 /dev/video0
      crw-rw-rw- 1 root    root    81,   1 Mar 25 20:26 /dev/video1

 

    사운드 장치는 이미 있다. 아래와 같다.
     

      video:/dev# ls -l dsp*
      crw-rw----    1 root     audio     14,   3 Dec  1 00:23 dsp
      crw-rw----    1 root     audio     14,  19 Dec  1 00:23 dsp1
      crw-rw----    1 root     audio     14,  35 Dec  1 00:23 dsp2
      crw-rw----    1 root     audio     14,  51 Dec  1 00:23 dsp3

 

    (2) 비디오 및 사운드 장치 드라이버 설치

    1) 커널 패치

      비디오서버를 만들기 위해 캡쳐보드 및 사운드카드 드라이버를 추가하기 위해서는 레드햇이나 데비안에 들어 있는 커널 모듈만으로도 가능하다. 하지만 bt848/878 캡쳐보드용 bttv 드라이버는 계속해서 업데이트 되고 있으므로 최신 드라이버를 사용해야 화면 상태가 좋다. 그래서 필히 커널을 컴파일해 사용하기를 권한다.

      비디오 캡쳐보드 드라이버를 설치하기 위해서는 먼저 i2c( I square c 라 발음한다.) 드라이버를 커널에 추가해야 한다.(모든 비디오 캡쳐보드에 해당된다.) 2.4에는 이 드라이버가 들어 있으나 2.2에는 없다. 그런데 리얼서버는 커널 2.4에서는 가동이 안된다.(필자가 잘못 알고 있는지도 모른다. 몇 번 시도해 보았으나 에러가 났다.) 그러므로 여기서는 커널 2.2.18을 기준으로 설명한다.

      ① i2c 패치 파일 받기(2.2.18 용)

      - 파일 있는곳 : http://www.strusel007.de/linux/bttv/

              (그림 1)

      - 파일명 :
         259562  Mar 25 18:38   i2c-2.2.18.diff.gz
         (위 그림 1 의 i2c patch for 2.2.18 에 마우스를 놓고 shift + left 버튼을 누르면
         받을 수 있다.)

      - i2c 패치 순서
         아래 순서는 2.2.18 커널 소스가 /usr/src/linux 디렉토리에 들어 있는 경우이다.
         이 디렉토리에서 커널 컴파일이 가능한 경우에만 이 패치가 가능하다.

      . i2c-2.2.18.diff.gz 파일을 /usr/src 디렉토리에 넣는다.
      . cd /usr/src/linux
      . patch -p1 < ../i2c-2.2.18.diff.gz
      아래처럼 메시지가 나와야 한다.
       

      ...
      ........
      patching file `include/linux/i2c.h’
      patching file `drivers/i2c/Config.in’
      patching file `Makefile’
      patching file `drivers/Makefile’
      patching file `drivers/i2c/Makefile’
      patching file `drivers/char/Config.in’
      patching file `drivers/char/mem.c’
      patching file `Documentation/Configure.help’
      patching file `MAINTAINERS’

 

    2) 커널 컴파일

      이제 커널을 컴파일한다. 커널 컴파일 방법은 여기서 설명하지 않는다. 리눅스 월드 과월호 기사를 참고 하기 바란다. 여기서는 STUDIO PCTV 카드 및 sound blaster 128 카드를 사용하기 위해 make menuconfig 에서 선택하는 옵션만 제시한다. 나머지는 자신의 서버에 맞게 선택한다.

      * 데비안 포테이토 커널 컴파일시 make menuconfig 를 사용하려면 아래 패키지를
         설치해야 한다.
         libncurses5-dev - Developer’s libraries and docs for ncurses
       

      [*] Prompt for development and/or incomplete code/drivers

      Character devices  --->
      I2C support  --->
      <*> I2C support (NEW)
      <*> I2C bit-banging interfaces (NEW)

      Video For Linux  --->
      <*> Video For Linux
      <M> BT848 Video For Linux (NEW)

      Sound  --->
      <*> Sound card support
      <*> Creative Ensoniq AudioPCI 97 (ES1371) (NEW)
      <*> OSS sound modules (NEW)
      Additional low level sound drivers  --->
      [*] Additional low level sound drivers (NEW)
      <M> MSP3400 Audio for BT848 (NEW)

       

      * 주의할 건 <M> BT848 Video For Linux (NEW) 는 커널에 포함하지 말고 모듈로
        선택해야 한다. 나중에 최신 모듈로 교체하기 때문이다.

            make dep; make clean; make bzImage; make modules; make modules_install
            까지 진행한다.

      여기까지 진행하고 모듈 디렉토리(/lib/modules/2.2.18/misc)를 보면 아래처럼 나온다.
       

      total 72
      -rw-r--r--    1 root     root        38316 Mar 25 19:47 bttv.o
      -rw-r--r--    1 root     root         7800 Mar 25 19:47 i2c-old.o
      -rw-r--r--    1 root     root        15844 Mar 25 19:47 msp3400.o
      -rw-r--r--    1 root     root         4380 Mar 25 19:47 tuner.o

 

      아직 lilo.conf에서 커널은 변경하지 말 것.

      * 캡쳐보드가 bttv 계열이 아니거나 USB에 꼽는 카메라인 경우는
         "Video For Linux  --->"메뉴에서 자신의 보드에 맞는 드라이버를 선택해야 한다.
         USB 포트에 연결되는 카메라라면 USB 관련 메뉴도 선택해야 한다.

    3) bttv 드라이버 설치

      자신의 보드가 bt8?8 계열이 아니면 이 부분은 건너 뛴다.

      bttv 드라이버는 2.2.18 커널에 들어 있지만 이 드라이버는 최신이 아니다. 따라서 bttv 사이트에 가서 최신 드라이버를 받아서 커널 모듈로 설치하는게 낫다. 아래 그 절차이다.

      ① 드라이버 있는 곳
      위의 그림1에 나온 사이트이다. 0.7.60 이 최신버전이다. the tarball 링크를 누르면 다운 받을 수 있다.

      ② 파일명
      151990 Mar 25 19:50 bttv-0.7.60.tar.gz

      ③ 설치
      i. 위의 파일을 /usr/src 디렉토리에 넣는다.
      ii. tar zxvf bttv-0.7.60.tar.gz
      iii. cd bttv-0.7.60
      iv. make
      v. make install

      커널 모듈 디렉토리(/lib/modules/2.2.18/misc)를 보면 아래처럼 파일들이 추가된 것을 알 수 있다.
       

       video:/usr/src/bttv-0.7.60# ls -l /lib/modules/2.2.18/misc/total 184
      -rw-r--r--    1 root     root        12956 Mar 25 19:57 btaudio.o
      -rw-r--r--    1 root     root        66965 Mar 25 19:57 bttv.o
      -rw-r--r--    1 root     root         6640 Mar 25 19:57 dpl3518.o
      -rw-r--r--    1 root     root         7800 Mar 25 19:47 i2c-old.o
      -rw-r--r--    1 root     root         7804 Mar 25 19:57 kcompat24.o
      -rw-r--r--    1 root     root        20032 Mar 25 19:57 msp3400.o
      -rw-r--r--    1 root     root         4876 Mar 25 19:57 tda7432.o
      -rw-r--r--    1 root     root         4692 Mar 25 19:57 tda9875.o
      -rw-r--r--    1 root     root         8528 Mar 25 19:57 tuner.o
      -rw-r--r--    1 root     root        12420 Mar 25 19:57 tvaudio.o
      -rw-r--r--    1 root     root         5668 Mar 25 19:57 tvmixer.o

 

      ④ bttv 모듈 적재
      이는 레드햇과 데비안이 다르다.

      - 데비안은 /etc/modules에 아래처럼 넣는다.
      bttv

      - 레드햇은 여러 방법이 있는데 아래 방법이 쉽다.

      /etc/rc.d/rc.modules 파일을 아래처럼 만든다.(mode 755)

      #!/bin/bash
      depmod -a
      modprobe bttv

    4) lilo.conf 에 새로 컴파일한 커널을 넣고 리부팅 한다.
        (System.map 파일도 복사한다.)

    5) 드라이버 설치 확인

      캡쳐보드(bttv) 및 sound 카드 드라이버가 설치되었는지 확인하는 방법이다.

      ① 부트 메시지
      아래 부트 때의 메시지는 전체를 실었다. 조금 길지만 좋은 정보가 많으므로 자세히 보면 도움이 된다.
       

      LILO boot:
      Loading Linux............
      Linux version 2.2.18 (root@video) (gcc version 2.95.2 20000220 (Debian GNU/Linux)) #1 Sun Mar 25 19:41:23 KST 2001
      Detected 731481 kHz processor.
      Console: colour VGA+ 80x25
      Calibrating delay loop... 1458.17 BogoMIPS
      Memory: 127724k/131008k available (1176k kernel code, 412k reserved, 1632k data, 64k init)
      Dentry hash table entries: 16384 (order 5, 128k)
      Buffer cache hash table entries: 131072 (order 7, 512k)
      Page cache hash table entries: 32768 (order 5, 128k)
      Intel machine check architecture supported.
      Intel machine check reporting enabled on CPU#0.
      256K L2 cache (8 way)
      CPU: L2 Cache: 256K
      CPU: Intel Pentium III (Coppermine) stepping 03
      Checking 386/387 coupling... OK, FPU using exception 16 error reporting.
      Checking ‘hlt’ instruction... OK.
      POSIX conformance testing by UNIFIX
      PCI: PCI BIOS revision 2.10 entry at 0xf0890
      PCI: Using configuration type 1
      PCI: Probing PCI hardware
      Linux NET4.0 for Linux 2.2
      Based upon Swansea University Computer Society NET3.039
      NET4: Unix domain sockets 1.0 for Linux NET4.0.
      NET4: Linux TCP/IP 1.0 for NET4.0
      IP Protocols: ICMP, UDP, TCP
      TCP: Hash tables configured (ehash 131072 bhash 65536)
      Starting kswapd v 1.5
      i2c-core.o: i2c core module
      i2c-algo-bit.o: i2c bit algorithm module
      Detected PS/2 Mouse Port.
      Serial driver version 4.27 with no serial options enabled
      ttyS00 at 0x03f8 (irq = 4) is a 16550A
      pty: 256 Unix98 ptys configured
      es1371: version v0.22 time 19:42:06 Mar 25 2001
      es1371: found chip, vendor id 0x1274 device id 0x5880 revision 0x02
      es1371: found es1371 rev 2 at io 0xb400 irq 3
      es1371: features: joystick 0x0
      es1371: codec vendor   v (0x838476) revision 9 (0x09)
      es1371: codec features 18bit DAC 18bit ADC
      es1371: stereo enhancement: SigmaTel SS3D
      Linux video capture interface: v1.00
      VP_IDE: IDE controller on PCI bus 00 dev 21
      VP_IDE: not 100% native mode: will probe irqs later
          ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:pio
      ide0: VIA Bus-Master (U)DMA Timing Config Success
          ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:pio, hdd:pio
      ide1: VIA Bus-Master (U)DMA Timing Config Success
      hda: QUANTUM FIREBALLlct10 15, ATA DISK drive
      ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
      hda: QUANTUM FIREBALLlct10 15, 14324MB w/418kB Cache, CHS=1826/255/63
      Floppy drive(s): fd0 is 1.44M
      FDC 0 is a post-1991 82077
      scsi : 0 hosts.
      scsi : detected total.
      3c59x.c 15Sep00 Donald Becker and others http://www.scyld.com/network/vortex.html
      eth0: 3Com 3c905B Cyclone 100baseTx at 0xb000,
              00:01:02:86:02:05, IRQ 11
        8K byte-wide RAM 5:3 Rx:Tx split, 10baseT interface.
        Enabling bus-master transmits and whole-frame receives.
      Partition check:
       hda: hda1 hda2 hda3 < hda5 hda6 >
      apm: BIOS version 1.2 Flags 0x03 (Driver version 1.13)
      VFS: Mounted root (ext2 filesystem) readonly.
      Freeing unused kernel memory: 64k freed
      INIT: version 2.78 booting
      Loading /etc/console-tools/default.kmap.gz
      Activating swap...
      Adding Swap: 128484k swap-space (priority -1)
      Checking root file system...
      Parallelizing fsck version 1.18 (11-Nov-1999)
      /dev/hda2: clean, 31097/381696 files, 102286/763087 blocks
      Calculating module dependencies... done.
      Loading modules: 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: 10, 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
      bttv0: i2c: checking for MSP34xx @ 0x80... not found
      bttv0: i2c: checking for TDA9875 @ 0xb0... not found
      bttv0: i2c: checking for TDA7432 @ 0x8a... not found
      Checking all file systems...
      Parallelizing fsck version 1.18 (11-Nov-1999)
      /dev/hda5: clean, 5748/520192 files, 2057045/2080386 blocks
      Setting kernel variables.
      Loading the saved-state of the serial devices...
      Loading the saved-state of the serial devices...
      /dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
      Mounting local filesystems...
      /dev/hda5 on /debian type ext2 (rw)
      Running dns-clean.
      chmod: /etc/resolv.conf: No such file or directory
      Setting up IP spoofing protection: rp_filter.
      Configuring network interfaces: done.
      Starting portmap daemon: portmap.
      Starting portmapper... Mounting remote filesystems...
      nfs warning: mount version older than kernel
      Setting the System Clock using the Hardware Clock as reference...
      System Clock set. Local time: Sun Mar 25 20:42:45 KST 2001
      Cleaning: /tmp /var/lock /var/run.
      Initializing random number generator... done.
      Recovering nvi editor sessions... done.
      INIT: Entering runlevel: 2
      Starting system log daemon: syslogd klogd.
      kerneld: you almost certainly don’t want to be running kerneld with >= 2.2.x
               kernels; read /usr/src/linux/Documentation/kmod.txt.
      Starting kerneld, version 2.3.11 (pid 143)
      Starting NFS common utilities: statd lockd.
      Starting mouse interface server: gpm.
      Starting internet superserver: inetd.
      Starting printer spooler: lpd.
      Starting deferred execution scheduler: atd.
      Starting periodic command scheduler: cron.

      Debian GNU/Linux 2.2 video ttyS0

      video login:

 

      위에서 진하게 표시한 부분이 사운드카드 및 캡쳐 보드 관련 부분이다.

      ② lsmod
       

      video:~# lsmod
      Module                  Size  Used by
      bttv                   53564   0  (unused)
      kcompat24          3648   0  [bttv]

 

      bttv 모듈이 적재된걸 알 수 있다.(kcompat24 는 bttv에서 사용한다.)

      ③ /proc/interrupts

      video:~# cat /proc/interrupts
       

                 CPU0
        0:      69017          XT-PIC  timer
        1:             2          XT-PIC  keyboard
        2:             0          XT-PIC  cascade
        3:             0          XT-PIC  es1371
        4:          304         XT-PIC  serial
       10:            2          XT-PIC  bttv
       11:         261          XT-PIC  eth0
       12:            0          XT-PIC  PS/2 Mouse
       13:            1          XT-PIC  fpu
       14:     15819          XT-PIC  ide0

 

      사운드 카드가 IRQ 3 을 비디오 캡쳐보드가 IRQ 10 을 랜카드는 11을 사용하고 있다. 위의 부트 메시지와 비교해 보면 알 수 있다.(마더보드에서 com2 를 disable 하였으므로 IRQ 3을 다른 장치가 사용 한다.)

      ④ /proc/ioports
       

      video:~# cat /proc/ioports
      0000-001f : dma1
      0020-003f : pic1
      0040-005f : timer
      0060-006f : keyboard
      0080-008f : dma page reg
      00a0-00bf : pic2
      00c0-00df : dma2
      00f0-00ff : fpu
      01f0-01f7 : ide0
      03c0-03df : vga+
      03f6-03f6 : ide0
      03f8-03ff : serial(set)
      b000-b07f : eth0
      b400-b43f : es1371
      d800-d807 : ide0
      d808-d80f : ide1

 

      여기까지 진행했으면 가장 어려운 작업은 끝났다. 나머지는 프로그램 설치작업이므로 매뉴얼대로 따라하면 된다.

    (3) 리눅스비디오 사용자 프로그램

    1) 인터넷 방송

      인터넷 방송은 두 가지 프로그램을 설치해야 한다. 리얼서버와 리얼프로듀서이다. 리얼서버는 25 유저까지는 무료이다. 리얼프로듀서도 basic 은 무료이다. 아래는 이 둘을 한 대의 리눅스 서버에 설치하는 절차이다.

      - 설치 전 주의사항.

      설치 전에 아래 사항을 확인한다. 리눅스의 호스트네임과 IP 주소가 /etc/hosts 파일에 정확히 들어 있는지 확인해야 한다.

      Hostname 은 hostname 명령으로 확인한다.

      video:/usr/src# hostname
      video

      Ip 주소는 ifconfig 명령으로 확인한다.

      video:/usr/src# ifconfig

      eth0      Link encap:Ethernet  HWaddr 00:01:02:86:02:05
      inet addr:211.217.77.244  Bcast:211.217.77.247  Mask:255.255.255.248

      /etc/hosts에 아래처럼 들어 있어야 한다.(자신의 설정에 맞게 변경한다.)
       

      video:/usr/src# cat /etc/hosts
      127.0.0.1             localhost
      211.217.77.244    video.linuxlab.co.kr    video

 

      * DNS 에서 video.linuxlab.co.kr 이 지정돼야 할 필요는 없다.
         /etc/hosts에만 들어 있으면 된다.

      ① 리얼서버 설치

        ①-1  다운받기

        사이트 위치가 자주 변경되므로 찾기가 힘드나 아래 URL 에 있다.
        http://www.realnetworks.com/products/basicserver/info.html?src=home, \
        ra8smsk_123100,srvpl_121100,gstartd_120100,prdctmn_022101

        위 사이트에서 RealSystem Server Basic 을 선택하고서 리눅스용을 다운 받는다. 그런데 파일만 다운 받는게 아니라 라이센스키 파일도 받아야 한다.
        라이센스키 파일은 위의 링크에서 질문에 대답할 때 입력한 자신의 전자메일
        주소로 그 위치를 알려준다.(전자메일에 텍스트 파일로 들어 있는 경우도 있다.
        이 경우는 전자 메일에서 라이센스키 부분만 별도 파일로 저장한다.)

        필자가 받은 리얼서버 파일과 암호키는 아래와 같다.

        - 서버 파일 : 16051424 Mar 11 10:06 rs8-0-linux-libc6.bin
        - 라이센스키 파일 : 21066 Mar 12 12:15 7973-03-10-010102029494356.lic
           (설치가 정확하면 라이센스키 파일은 리얼서버 디렉토리의 License 디렉토리
           에 들어 간다.)

        데비안은 아래 라이브러리를 설치했는지 확인해 봐야 한다.(기본은 설치가 안된다.)

        libstdc++2.8 - The GNU stdc++ library (old egcs version)- libstdc++2.8_2.90.29-2.deb

        ①-2  설치

        다운받은 리얼서버 실행 파일을 임의의 디렉토리에 넣는다.(필자는 /usr/src 에 넣었다.)

                        A. cd /usr/src
                        B. ./rs8-0-linux-libc6.bin

        아래 화면처럼 나온다.(불필요한 부분은 생략했다.)

        video:/usr/src# ./rs8-0-linux-libc6.bin

        Each input requires the execution of the key abovefollowed by the [ENTER] key. Enter [N]ext to continue: n

        If a RealServer license key file has been sent to you,please enter its directory path below. If you have not received a RealServer license key file, then this serverwill default to a Basic RealServer. /usr/src/7973-03-10-010102029494356.lic

        * 라이센스 키 파일 이름을 입력한다. 절대위치를 입력해야 한다.

        Installation and use of RealServer requires acceptance of the following terms and conditions: Press [Enter] to display the license text...

        Choose “Accept” to accept the terms of this license agreement and continue with RealServer setup.If you do not accept these terms, enter “No”and installation of RealServer will be cancelled.(Default: Accept):

        Enter the complete path to the directory where you want RealServer 8.0 to be installed.  You must specify the full pathname of the directory and have write privileges tothe chosen directory [/usr/src]: /usr/Real

        * /usr/Real 디렉토리에 리얼서버를 설치한다.

        Please enter a username and password that you will use to access the web-based RealSystem Administrator, the RealSystem monitors, and RealSystem live encoders:
        Username: kim
        Password: 123
        Confirm Password:

        * Username 과 passwd 는 리얼서버 관리(웹기반임) 및 리얼프로듀서에서
           리얼서버로 라이브엔코딩(실시간 방송) 데이터를 전송하는데 필요하다.

        Please enter a port on which RealServer will listen for PNA connections.
        These connections have URLs that begin with “pnm://”: (Default: 7070)

        Please enter a port on which RealServer will listen for RTSP connections.
        These connections have URLs that begin with “rtsp://”: (Default: 554)

        * 리얼플레이어에서 리얼서버를 연결하는 포트번호이다.
           리얼플레이어의 "위치: "난에 아래처럼 입력하면 리얼서버에 연결된다.
           (리얼플레이어가 설치되어 있다면 웹브라우저의 주소 난에 입력해도 같다.)

           rtsp://www.linuxvideo.co.kr:554/encoder/live.rm
           (www.linuxvideo.co.kr은 리얼서버가 설치된 리눅스 서버의 FQDN 이다.
           따라서 리눅스 서버가 DNS에 등록이 돼 있어야 위처럼 사용할 수 있다.
           DNS에 등록이 안돼 있으면 ip address를 사용해야 한다. 단 554 포트를
           사용하는 경우는 생략할 수 있다.)

        Please enter a port on which RealServer will listen for HTTP connections.
        These connections have URLs that begin with “http://”: (Default: 8080)

        * 웹브라우저의 “주소: “ 난에 http 를 사용해서 리얼서버를 연결하는 경우에
           사용하는 포트 번호이다. 아래처럼 입력하면 리얼플레이어가 가동되면서
           리얼서버에 연결된다.

           http://www.linuxvideo.co.kr:8080/ramgen/encoder/live.rm

        RealServer will listen for RealSystem Administrator requests on the port shown.  This port has been initialized to a random value for security.  Please verify now that this pre-assigned port will not interfere with ports already in use on your system; you can change it if necessary. (Default: 24391)

        * 리얼서버는 웹브라우저에서 관리가 가능하다. 이 때 사용하는 포트번호이다.
           단 이 포트 번호는 설치 때 무작위로 결정되므로 일정치 않다.

        You have selected the following RealServer configuration:

        Admin Username:         kim
        Admin Password:         123
        Monitor Password:       123
        Encoder Username:       kim
        Encoder Password:       123
        PNA Port:               7070
        RTSP Port:              554
        HTTP Port:              8080
        Admin Port:             24391

        Enter [F]inish to begin copying files, or [P]revious
        to go back to the previous prompts: f

        Would you like to start RealServer now and launch the RealSystem Administrator? (Default: Yes)

        Starting RealServer...
        Please Wait...

        이상과 같이 진행했다면 리얼서버가 실행된다. Ctrl+c 를 누르면 리얼서버 실행이 중단된다.

        ①-3  리얼서버 실행

        설치가 정확하다면 아래처럼 리얼서버를 실행하면 된다.

        /usr/Real/Bin/rmserver /usr/Real/rmserver.cfg &
        (리얼서버를 백그라운드로 실행해야 한다.)

        아래처럼 메시지가 나온다.(일부생략)
         

        video:/usr/src# /usr/Real/Bin/rmserver /usr/Real/rmserver.cfg &
        [1] 941
        RealServer (c) 1995-2000 RealNetworks, Inc. All rights reserved.
        Version: RealServer 8 (8.0.0.149)
        Platform: linux-2.0-libc6-i386

        Creating Server Space...
        Calibrating Timers...
        video:/usr/src# Starting RealServer 8.0 Core...
        Loading RealServer License Files...
        Detecting Number of CPUs...
           Testing 1 CPU(s): 1 CPU Detected, Phew...
           Testing 2 CPU(s): 2 CPUs Not Detected (100% Work Produced)
        Testing File Descriptors...
        Setting per-process descriptor capacity to 678(1013), 9...
        I: Loading Plugins from /usr/Real/Plugins...
        I: adminfs.so.6.0       RealNetworks Admin File System
        I: adtagrep.so.6.0      RealNetworks Ad Insertion Tag Replacement Plugin
        I: allow.so.6.0         RealNetworks Basic Allowance Plugin
        I: archplin.so.6.0      RealNetworks Live Archiver Plugin

 

        ①-4  실행 확인

        -  ps ax 명령을 주면 아래처럼 나온다.
         

        941 ttyS0    S      0:00 /usr/Real/Bin/rmserver /usr/Real/rmserver.cfg
        942 ?          S      0:00 /usr/Real/Bin/rmserver /usr/Real/rmserver.cfg


        (약 10여개 이상이 나온다.)

        - 웹브라우저에서 아래처럼 입력한다.

        http://211.217.77.244:24391/admin/index.html

        (IP address 는 리얼서버가 설치된 리눅스 서버의 주소이다. 24391은 리얼서버 설치 때 부여된 관리 포트번호이다.)

        설치 때 입력한 Admin Username: (kim)과  Admin Password: (123)를 입력하면 아래 관리 화면이 나온다. 사용법은 매뉴얼에 나와 있다.

        리얼서버를 설치했으면 하드에 저장된 리얼서버 파일(.rm)을 이용해 인터넷 방송을 할 수 있다. 그러나 라이브(live) 파일을 전송(생방송)하기 위해서는 리얼프로듀서를 추가로 설치해야 한다.

      ② 리얼프로듀서 설치

        ②-1  다운받기

        위의 리얼서버와 같은 사이트에 있다. 파일 이름은 아래와 같다.(무료이다.)

        4379382 Mar 11 12:04 realproducer_8.5_linux.tar.gz

        ②-2  설치

        . 임의의 디렉토리를 만든 다음 (/usr/src/tmp) 위 파일을 넣는다.
        . tar zxvf realproducer_8.5_linux.tar.gz
        . 아래 4 개의 파일이 풀린다.

        -rw-r--r--    1 bae      bae      18855 Sep 13  2000 LICENSE
        -rw-r--r--    1 bae      bae      12310 Nov 11 07:51 README
        -rwxr-xr-x     1 bae      bae      7176 Sep 22  2000 install
        -rw-rw-r--    1 bae      bae      11745280 Nov 21 13:42 realproducer.tar

         . ./install

        Do you accept the terms of this license?  Yes
        Path : [/usr/local/realproducer-8.5]
        Directory “/usr/local/realproducer-8.5” does not exist.  Should I create it?
        yes
        serial number (enter “free” for free RealProducer): free
        Would you like the installer to create symlinks to the RealProducer products?
        yes
        Where would you like to install the symlinks?  [/usr/local/bin]

        이상을 마치면 /usr/local/realproducer-8.5 디렉토리 안에 프로듀서가 설치된다. 이 디렉토리 안에 README 파일에 리얼프로듀서 가동시에 사용하는 옵션이 나와 있다. 옵션 지정이 상당히 복잡하고 많으므로 자세히 읽어야 한다.

        ②-3  실행

        리얼프로듀서는 리얼서버가 먼저 실행되어 있어야 가동된다. 리얼프로듀서에서 만든 데이터가 리얼서버를 거쳐 사용자에게 전달되기 때문이다. 가장 간단한 실행 명령은 아래와 같다.

        /usr/local/realproducer-8.5/realproducer -s 127.0.0.1:4040/live.rm \
        -u kim -p 123 -a 3 -t 5 -l 2:1,6:1 -vx 320,240

        (한 줄에 입력해야 한다. \은 스크립트에서 다음 줄에 계속될 경우에 사용한다.)

        ㉠ -s  127.0.0.1:4040/live.rm

        리얼서버의 주소를 지정한다. 리얼서버와 프로듀서가 동일 서버이므로 127.0.0.1이다. 리얼서버가 별도의 호스트에 설치되어 있다면 그 서버의 주소를 지정한다. 4040 포트 번호 및 live.rm 은  /usr/Real/rmserver.cfg 에 지정되어 있다.

        ㉡ -u  kim -p 123 : 리얼서버 설치시 부여한 관리자 계정 및 패스워드이다.

        ㉢ -a  3 : 사운드 옵션이다.
                      (사운드의 질을 결정한다. 높을수록 사운드의 질이 높아지나 대신
                      대역폭을 많이 차지한다.)
                  0 : 음성 수준
                  1 : 목소리 및 배경음악
                  2 : 음악 (모노)
                  3 : 음악 (스테레오)

        ㉣ -t 5 : 목표 수신자의 인터넷 연결속도를 정한다.

                  1 : 56k modem
                  2 : 64k ISDN
                  3 : 128k (Double ISAN)
                  4 : 220k (Cable Modem)
                  5 : 150k (LAN)
                  6 : 256k

        ㉤ -l 2 :1, 6 :1

        리얼프로듀서가 사용하는 사운드 및 비디오 장치명이다. 그런데 비디오 장치의 경우 특히 값을 찾아내기 어렵다. (-l 은 알파벳이다)

        - “2:1”은 사운드 장치 및 사용 포트이다.

        “2” 는 /dev/dsp 장치를 가리킨다. 사운드 카드가 한 개라면 2를 사용하면 된다. 그러나 사운드 카드가 두 개라면 /dev/dsp1 에서 사운드가 입력될 수 있다. 이때는 3을 지정한다. 시행착오로 알아 낼 수밖에 없다.

        콜론 뒤의 “1” 은 사운드 카드의 포트이다.

        0 : 마이크로폰 (적색 단자.), 사운드 카드에 마이크를 연결해서 사용할 경우
        1 : Line in 단자. (청색) : 다른 외부 음원(녹음기, VTR)으로부터 사운드를
             입력 받을 때
        2 : CD, 리눅스에 내장된 CD 드라이브가 사운드카드와 연결된 경우 CD로부터의
             사운드를 직접 사용할 때

        - “6:1” 캡쳐 보드의 장치명 및 포트 번호이다. 앞(6)이 장치명(/dev/video?)
           뒤(1)는 포트번호이다.

        장치명은 원칙적으로 다음과 같다.

        4 :  /dev/video0
        5 :  /dev/video1
        6 :  /dev/video2

        그런데 캡쳐보드가 하나라면 장치명이 4번 즉 /dev/video0 여야 하는데 이게 일정치 않다. 캡쳐보드가 하나인데도 보드에 따라서는 5나 6을 지정해야 하는 경우가 있다.(단 장치명은 /dev/video0 이다.)
        만약 리얼프로듀서 가동시 “비디오장치가 없다.” 는 에러 메시지가 뜨면 이 번호를 변경해 보기 바란다.
        필자가 사용한 보드도 한 개인데도 6을 지정해야 한다.

        포트번호는 다음과 같다.(카메라가 연결된 단자를 말함.)

        0 :  TV
        1 :  Composite1
        2 :  S-video(VHS)

        TV 는 단자가 별도로 없다. 캡쳐보드에 TV 수신 기능이 있는 경우 TV 영상을 사용한다.
        Composite 는 RCA 잭을 꼽는 단자이고 VHS 는 VHS 단자이다. 보통은 1 이다. 그러나 이 번호도 보드마다 조금씩 다르다.  포트번호는 틀려도 리얼프로듀서는 가동된다. (장치 지정이 틀리면 가동이 안된다.) 그러나 화면이 안 나온다. 정확이는 안나오는게 아니라 청색 바탕 화면만 나온다.

        리얼서버와 리얼프로듀서를 정상적으로 가동한 후에 리얼플레이어에서 리얼서버를 연결했는데 청색바탕 화면만 나오면 비디오 포트 번호가 틀린 것이다.

        ㉥ -vx 320,240

        화면 크기를 지정한다. 160x120, 176x144, 320x240, 352x288, 640x480 등이 가능하다. (크면 대역폭을 많이 차지한다.)

        ②-4 실행 확인
        -  리얼프로듀서를 위의 옵션을 주고 실행하면 아래처럼 나와야 한다.
         

        RealProducer(r) Basic 8.5
        Copyright (c) 1995-2000 RealNetworks, Inc. All rights reserved.

        The license key number you have entered is invalid.
        RealProducer Basic is now running.  Please edit the file
        LICENSE_KEY and enter a valid serial number or re-install.

        ------> Beginning Run: Mon Mar 26 16:04:46 2001

        Command line: /usr/local/realproducer-8.5/realproducer -s 127.0.0.1:4040/live.rm -u kim -p
         123 -a 3 -t 5 -l 2:1,6:1 -vx 320,240
        Source:
                Audio:  Linux/OSS audio capture plug-in (/dev/dsp) [Line In]
                Video:  V4L1 Video capture plug-in (/dev/video0) [Composite1]
        Output:         127.0.0.1:4040/live.rm
        Title:
        Author:
        Copyright:
        Keywords:
        Description:
        Target Audience: Corporate LAN
        Audio Format:   Stereo Music
        Video Quality:  Normal Motion Video
        Allow Recording:Disabled
        Allow Download: Disabled
        Server Type:    SureStream

        Encoding...

 

        위의 메시지를 보면 사운드 장치(audio)는 /dev/dsp 이고 포트는 Line-in, 비디오 장치(video)는 /dev/video0 포트는 Composite1을 사용하고 있음을 알 수 있다.

        Target Audience : Corporate LAN ( -t 옵션)
        Audio Format :   Stereo Music (-a 옵션)
        - ps ax 명령으로도 확인할 수 있다. 아래 라인이 나타난다.

        277 pts/0   S   5:39 /usr/local/realproducer-8.5/realproducer -s 127.0.0.1
        - 카메라를 비디오 캡쳐보드의 composite 단자에 라디오의 헤드폰 단자를
           사운드 카드의 line-in 에 연결하고 인터넷에 연결된 다른 피시에서
           리얼플레이어를 가동해서 “위치: “ 난에 아래처럼 입력한다.
           (IP 주소는 자신의 주소에 맞게 변경한다.)
           rtsp://211.217.77.244/encoder/live.rm

        아래 그림처럼 나올 것이다.
        ( 라디오를 사운드 카드에 연결했다면 소리도 같이 나온다.)

        * IP 주소 대신 도메인네임을 사용하려면 DNS 서버에 IP 주소를 등록해야 한다.

        리얼플레이어가 정상 작동하는지를 테스트 해 보고 싶으면 리눅스비디오 사이트(rtsp://www.linuxvideo.co.kr/encoder/live.rm)를 연결해 보라. (가끔 꺼져 있는 경우도 있다.)

        ②-5  실행 옵션
        리얼프로듀서 가동시의 옵션은 /usr/local/realproducer-8.5/README 파일에 자세히 나와 있다. 주요 내용만 설명한다. (위에서 설명한 부분은 생략)

        ㉠ -v  : 비디오 데이터 중 프레임 수와 선명도 중 어느 쪽을 중시하느냐를
                   선택한다.

        0 : normal
        1 : 부드러운 동작
        2 : 정확한 이미지

        ㉡ -y  : 0를 선택하면 오디오를 disable 한다. 단 오디오를 사용 않아도 장치는
                    지정해야 한다.
                    즉 -y 0 를 지정해도 -l 에서 오디오 장치를 0으로 지정한다.(-l 0,6:1)

        ㉢ -z  : video disable(0), enable(1)

      ③ 리얼서버 및 프로듀서 자동실행

        리얼서버와 리얼프로듀서를 리눅스 부팅시 자동으로 실행하려면 반드시 리얼서버를 먼저 실행되게 해야 한다. 그리고 10초 정도 후에 리얼프로듀서를 실행해야 한다. 리얼프로듀서를 너무 빨리 가동하면 에러가 난다. 필자의 linuxvideo 사이트(데비안)에서는 아래처럼 지정했다.

        ㉠ 리얼서버

        /etc/rc.boot 디렉토리에서 실행했다. 아래 스크립트를 추가했다.
        -rwxr-xr-x    1 root     root          191 Mar 12 12:17 50Rserver

        내용은 다음과 같다.
         

        #!/bin/bash
        echo “Starting Real Server...”
        /usr/Real/Bin/rmserver /usr/Real/rmserver.cfg &
        sleep 20

 

        ㉡ 리얼프로듀서

        /etc/rc2.d 디렉토리에서 실행했다.

        -rwxr-xr-x    1 root     root          139 Mar 12 12:30 S77produce

        내용은 아래와 같다. (사운드는 제거했다.)
         

        #!/bin/bash
        /usr/local/realproducer-8.5/realproducer -s 127.0.0.1:4040/live.rm \
        -u ??? -p ?????   -t 5 -v 0 -y 0 -l 0,6:1 -vx 352,288 &

 

        이상으로 인터넷 방송 설치에 대한 글을 마친다. 다음 호에는 홈페이지에서 실시간으로 사용자의 웹브라우저에 화상데이타를 전송해 주는 웹캠 설치 방법을 설명하겠다. 이 글에서 bttv 드라이버까지 설치까지는 똑 같다. 단지 프로그램이 다를 뿐이다. 웹캠은 jpg 그림 포맷을 사용하므로 인터넷 방송보다 선명하고 네트스케이프나 익스플로러만 설치하면 누구나 볼 수 있다는 점이 좋다. 단지 초당 보낼 수 있는 프레임 수가 적어 동작이 슬로비디오 보는 것처럼 끊어 진다는 단점이 있다.




▲ top

home으로...