2008년 6월 22일 일요일

mythtv

Debian에서

먼저 리눅스 코솔에서
# 명령어는 root 계정이며
$ 명령어는 사용자 계정입니다.

mythtv 사용하려면

한 개의 컴퓨터에 backend와 frontend를 같이 설치하려면 mysql-server를 설치하고, mythtv를 설치합니다. 분리되어 있는 경우 backend 컴퓨터에는 mysql-server설치후 mythtv-backend를 설치하며, frontend 컴퓨터에선 mythtv-frontend만 설치합니다.
  • 먼저 mysql-server를 설치하였습니다.

    # apt-get install mysql-server
    설치중에 [New password for the MySQL "root" user]가 보이면서 mysql의 root user 비밀번호를 만들라고 합니다. 비밀번호는 설정하지 않게 하였습니다.
    (5번인가 줄기차게 비밀번호 설정을 요구하는데 그냥하지 안았습니다.)

    mysql의 root user 비밀번호를 설정하려면, mysql-server를 설치할 때 입력하거나, 따로 다음과 같이 입력할 수 있습니다.
    사용자 계정에서
    $ mysqladmin -u root password yourpasswordhere
    하지만 mysql의 root user 비밀번호를 설정하면 frontend와 backend가 같이 설치된 컴퓨터에서는 이상이 없으나 따로 설치된 경우에 접속이 잘 안되는 것 같습니다.
    따라서 특별한 보안이 필요하지 않으면 mysql의 root user 비밀번호는 설정할 필요는 없습니다.
  • mythtv 설치

    먼저 souces.list에 다음을 추가하였습니다.
    deb http://www.debian-multimedia.org/ lenny main

    # apt-get update
    # apt-get install debian-multimedia-keyring
    # apt-get update
    # apt-get upgrade
    upgrade할 것은 없네요.

    # apt-get install mythtv
    설치중에 [What is the password for the MySQL administrator account 'root' ]가 보입니다.
    mysql의 root user 비밀번호를 입력하는데, 따로 만들었으면 입력하고,
    안말들었으면 [앞으로]를 눌러 계속 진행합니다.

    참고)
    mythtv를 소스패키지로 설치하려면
    먼저 sources.list에 deb-src를 추가한후
    deb http://www.debian-multimedia.org/ lenny main
    deb-src http://www.debian-multimedia.org/ lenny main
    # apt-get build-dep mythtv
    # apt-get install mythtv mytharchive
    그러나 데비안의 nvidia-glx를 설치하였으면 mythtv 소스 패키지와 충돌합니다.
  • 설정하기

    $ cat /etc/passwd
    맨 밑에 mythtv 유저가 등록되어 있습니다. 비밀번호를 설정하였습니다.
    # passwd mythtv
  • 로그아웃하고 새로 mythtv 로그인하여 mythtv-setup하여 mythbackend를 설정하였습니다.

    $ mythtv-setup -geometry 1024x768

    • General탭에서
      언어는 English TV format은 NTSC,
      Channel frequency tabe us-cable로 하였습니다. (안테나를 사용하면 us-broadcast로)
      Delete files slowly에 체크하였습니다.

      backend만 설치된 경우
      IP address for mythtv 와 Master Server IP address를 127.0.0.1 에서 backend가 설치된 컴퓨터의 고정 IP로 바꾸어 줍니다.
      Security Pin은 따로 정해도 되나 0000을 입력하여 자동으로 접속되게 합니다.
      Block shutdown before client connected은 선택하고,
      Idle timeout은 사용자에 맞게 정합니다. (본인은 900초로 한참뒤 꺼지게 사용중입니다.)
      Server halt command에서 sudo /sbin/halt -p를 sudo shutdown -h now로 바꾸었고, /etc/sudoers 파일설정을 하였습니다.
      mythtv ALL=(ALL) NOPASSWD:/sbin/shutdown
    • Capture cards의 Card type에서 DVB DTV capture card (v3.x) 선택합니다.

      [Recording Options]에서
      [Open DVB card on demand]를 선택하면, mythtv를 사용하지 않을 때 다른 프로그램(예를 들어 mplayer)이 HDTV 카드를 사용할 수 있습니다.
      그러나 국내 HDTV 에서 방송편성표를 보려면 [Use DVB Card for active EIT scan]을 선택해야합니다.
      문제는 [Use DVB Card for active EIT scan]를 선택하면 mythtv가 HDTV 카드를 항상 사용중이므로, mythtv를 사용하지 않을 때 mplayer로 TV를 볼 수 없습니다.
      부득이
      mplayer에서 TV를 보려면 mythtv-backend를 정지 시켜야 합니다.
      # /etc/init.d/mythtv-backend stop



      아날로그를 선택할 수 없습니다. mythtv는 아날로그도 지원하지만 mythtv자체가 HDTV와 아날로그를 직접 선택하지 못해 아날로그를 보려면 다음과 같이 해야 한다고 합니다.
      # rmmod cx88_dvb
      # modprobe cx8800

    • Video sources 탭에서
      Video source name은 임으로 my-Dvico
      listings grabber는 Transmitted guide only (EIT)로
      Channel frequency table은 us-cable로 하였습니다.
    • Input connections에서
      Display Name은 my-Dvico-HDTV로 임으로 정하고
      Video source는 기존에 정한 my-Divico로 정하였습니다.
      Unencrypted channels only를 선택하지 않았으나 추가로 채널이 보이진 않습니다.
      Scan for channels을 눌러 us-cable 방송채널을 설정하고
      Starting channel은 9_1로 KBS 1로 하였습니다.
    • Storage Directories에서

      Default에 저장할 디렉토리를 지정하였습니다. 예를 들어 /var/lib/mythtv/recordings

      mythtv-setup를 끝낼 때 이 recordings디렉토리가 없거나, permission이 맞지 않아 에러가 보이게 됩니다.
      Alt+Tap키를 누른다음, 콘솔창을 열고 /var/lib/mythtv 디렉토리에서
      $ mkdir recordings
      $ chmod 2775 recordings
      (참고로, root 계정으로 만들었으면 소유권을 mythtv로 맞게 해야합니다.
      # chown mythtv.mythtv recordings)

      (참고로 우분투에선 저장할 디렉토리를 기록하면 mythtv-setup을 마치면서 저절로 만들어집니다. permission이 다음과 같습니다.
      drwxrwsr-x mythtv mythtv )

      추가로 다른 storage group을 만들면 녹화할 때 group을 지정하여 녹화목록을 나누어 녹화할 수 있습니다.
  • 채널 정보를 가져옵니다.

    # /etc/init.d/mythtv-backend start
    restart하라는 글이 보이네요
    (참고로 처음 설치하면 /etc/init.d/mythtv-backend stop은 mythtv계정만 됩니다.)
    # /etc/init.d/mythtv-backend restart

    $ mythfilldatabase
  • $ mythfrontend -geometry 1024x768

    Utilities / Setup -> Setup의 General에서
    Password에서 mythtv가 임의로 정해준 초기값을 다른 사용자에서 사용하게 따로 기록하여 기억하였습니다.

    Utilities / Setup -> Setup의 Apperance에서
    Theme는 blue로
    모니터 해상도가 1920 x 1200 이여서
    GUI width (px)은 1024, GUI height (px) 768, GUI X offset 896, GUI Y offset 24로 하고, [Use GUI size for TV playback]을 선택하면 TV를 볼 때 모니터 우측 위에 작은 화면으로 보이게 하였습니다.
    [Hide Mouse Cursor in Myth]도 체크된상태를 해제하였 마우스로 메뉴를 선택할 수 있게 합니다.
    [Run the frontend in a window]를 선택합니다.
    [Use GUI size for TV playback]를 선택하지 않고 [Run the frontend in a window]를 선택하면 mythtv 초기 화면은 작게 보이나 TV를 볼 때 전체화면으로 보게 됩니다.

    Utilities / Setup -> Setup의 TV Setittings -> General에서 LiveTV recordings Max Age는 기본갑 1에서 2일 동안 유지되게 하였습니다.

    신규 녹화를 하고나서 commflagging을 하지 않도록 [Default JobQueue settings for new scheduled recordings]에서 [Run commercial flagger]을 선택하지 안압습니다. (이렇게 하면 별도로 commercial free로 설정하지 않는 채널에서 녹화한 것은 commflagging이 되지 않습니다.)

    Utilities / Setup -> Setup의 TV Setittings -> Playback에서
    Current Video Playback Profile에서 Slim를 선택하였습니다.
    [Default group filter to apply]는 [All Programs]하고, [Show 'LiveTV' recordings when using "All Programs" filter]는 선택해서 [Watch Recordings]에서 키보드 m을 눌러 Default 그룹과 Live 그룹에서 저장한 내용을 확인할 수 있게 하였습니다.
  • 이제 mythtv 사용자가 아닌 기존의 사용자로 다시 X윈도우 로그인한 후 다음과 같이 하여 사용중입니다.

    $ mythfrontend
    여기서 Password를 위에서 기록한 것을 적고 다른 설정은 알맞게 바꾸었습니다.
    (password는 etc/mythtv/mysql.txt에 있으므로 모르면 참고합니다.)
    이제 빠져나온후에
    $ mythfilldatabase

    아래와 같이 mythtv user로 실행하여 실행하였으나 사운드가 software mixing이 안되었습니다.
    $ gksu -u mythtv mythfrontend


    OSD의 한글이 제대로 보이지 않습니다. /usr/share/mythtv에 글꼴을 추가하고,
    # ln -s /usr/share/fonts/truetype/unfonts/UnBatang.ttf /usr/share/mythtv/UnBatang.ttf
    이어서 Utilities / Setup -> Setup의 TV Setittings -> Playback OSD에서 OSD font를 맞게 설정합니다.
  • 녹화물을 따로 저장하려면 mythtranscode, nuvexport, transcoder를 사용합니다.

    먼저 녹화물을 보는 중에 [키보드 m] 이어서 [Edit Recording]를 누르거나, 그냥 [키보드 e]를 누릅니다. 키보드의 좌우, 상하 화살표, 엔터/스페이키로 녹화물의 필요없는 부분을 제거 합니다. (단지 cut point로 제거 표시만 하는 것입니다.)

    mythtranscode로 PS형태의 mpeg2파일을 만들 수 있습니다.

    nuvexport로 XviD, SVCD, VCD, DVD, DivX, ASF, MP4 (iPod)를 만들 수 있습니다.

    transoder는 메뉴로 할 수 있는 인코더 입니다.
    무엇보다 필요없는 부분을 제거한 TS형태의 mpeg2파일을 얻을 수 있습니다.

  • 참고

    • mytharchive를 통한 mpeg2 DVD 파일 만들기는 잘 되었습니다.
    • seektabe복구

      먼저 optimize_mythdb.pl을 실행합니다.
      # chmod 755 /usr/share/doc/mythtv-backend/contrib/optimize_mythdb.pl
      # /usr/share/doc/mythtv-backend/contrib/optimize_mythdb.pl

      mythcommflag를 실행합니다.
      $ mythcommflag --file --rebuild
      여기서 는 저장된 파일의 경로와 파일명입니다.


      계속 문제가 보이면 mythtranscode를 사용합니다.
      mythtranscode --mpeg2 --buildindex --showprogress --infile

    • mpeg2파일을 자를 때는 gopchop 또는 dvbcut을 이용합니다.
      avidemux는 ts파일을 인식하나 synch 문제가 발생합니다.
    • myth.rebuilddatabase.pl

      데비안에서는 myth.rebuilddatabase.pl.gz이 /usr/share/doc/mythtv-backend/contrib와 /usr/share/doc/mythtv-doc/examples에 있습니다.
      먼저 gzip -d하여 압축을 풀고
      $ chmod a+x ~/myth.rebuilddatabase.pl
      파일안에 내용을 알맞게 바꾸어 줍니다.
      my $host = "localhost";
      my $pass = "비밀번호";

      에러가 보이면 추가로 다음의 패키지를 설치합니다.
      # apt-get install libtime-format-perl
우분투에서
  • 우분투에서는 mythtv만 설치하면 mysql-server가 같이 설치됩니다.

    $ sudo apt-get install mythtv

    mysql-server가 설치되면서 mysql의 root 비밀번호 설정할 때, 따로 비밀번호를 설정하지 않고 그냥 설치합니다. mythtv에서 기본 비밀번호을 설정하고 mysql-server와 알맞게 연결시켜 줍니다.

    설치후 mythtv 계정이 아닌 사용자 계정에서 메뉴에 있는 mythtv backend (mythtv-setup)을 설정합니다.
  • 더 간단히 설치하려면 mythbuntu-control-centre를 설치한후에
    [시스템] [관리]에서 Mythbuntu Control Centre를 실행합니다.
  • 데비안과는 달리, 윈도우를 사용하듯 메뉴를 통해 쉽게 설치됩니다. 그러나 쉬운 많큼 나중에 고정 IP를 바꾸거나, backend를 따로 설정하려고 하면 복잡해지던군요.

녹화에 대해서

  • 녹화해보기
    Mangage Recordings > Schedule Recordings > Program Guide를 누르면 TV 편성표를 볼 수 있습니다. 녹화를 하고자하는 방송에서 스페이스키 또는 엔터키를 눌러 녹화 설정합니다.

    [Do not record this program]에서 좌우 화살표키로 [ Record one showing of this title]을 선택합니다.

    [Scheduling Options]에서
    TV 편성표의 녹화 시간을 앞뒤에서 연장하거나 줄이거나 할 수 있습니다.
    나중에 Manage Recordings > Upcoming Recordings에서 바꿀 수도 있습니다.
    국내 방송이 Mythtv에서 쓰는 description을 같이 보여줍니다. [Match duplicates using description] 선택해서 중복 녹화가 안되게 설정합니다.

    [Storage Options]에서
    [Allow auto expire]로 녹화물이 나중에 자동으로 지워지게 하거나, 또는 [Don't allow auto expire]로 녹화물을 계속 보관할지를 정합니다.
    [No episode limit]는 가급적 그대로 합니다. 몇 개의 episode로 설정하면 기존에 녹화물이 있는 경우에 합산이 됩니다. 예를 들어 어제 EBS의 지식프라임을 녹화하고, 오늘 새로 지식프라임을 녹화할 때 [Keep only one episode]이면 녹화가 안됩니다.
    [No episode limit]를 변경한다면, [Don't record if this would exceed the max episodes]를 [Delete oldest if this would exceed the max episodes]로 바꾸어 주고, [Allow auto expire]를 설정하여 기존 녹화물이 정한 숫자 이상이 되면 지워지도록 해줍니다.

    [Post Recording Processing]에서
    [Commercial Flag new recordings]를 선택하면 녹화물안에 있는 광고등을 보지 않고 건너뛰게 해준다고 합니다. 그러나 실제로 사용하면 잘 안되고, 오히려 녹화를 마치고 하드디스크만 움직임이 더 많아집니다. 따라서 Do not Comercial Flag new recordings을 설정합니다.
    신규 녹화를 하고나서 commflagging을 하지 않도록 설정하려면 Utilities/Setup > Setup > TV settings > General에서 설정할 수 있습니다. [Default JobQueue settings for new scheduled recordings]에서 [Run commercial flagger]을 선택하지 않으면 됩니다.
    이렇게 하면 별도로 commercial free로 설정하지 않는 채널에서 녹화한 것은 commflagging이 되지 않습니다.

    대부분의 녹화는 [Channel Record]를 합니다.
    개인적으로 [Scheduling Options]에서 [Match Duplicates using description]을 선택하고,
    [Storage Options]에서 [Allow auto expire], [Keep at most 3 episodes], [Delete oldest if this would exceed the max episosdes]를 선택하며,

    [Post Recording Processing]에서 [Do not Commercial Flag new recordings]을 선택한 후에 [Save these settings]를 눌러 레코딩하고 있습니다.
  • 녹화 방법에 대해서
    • 대부분의 방송이 그러하듯이 매일 한번 방송되거나 일주일에 한번씩 방송됩니다. 녹화를 하려면 Channel Record (Record at any time on this channel)를 선택합니다.

      그러나 방송이 그날 하루 중 언젠가 재방송된다면 Find Daily (Record one showing of this title every day), 일주일 중에 언제가 재방송된다면 Find Weekly (Record in this timeslot every week)가 알맞습니다. 미리 중복 녹화를 피할 수 있습니다.

      특집 방송같이 어쩌다 한번 방송되는 경우에는 Find One이 적당합니다.

      녹화를 못해도 그만인 방송인 경우에, 예를 들어 녹화되면 보고 안되면 컴퓨터가 쉬거나, 하드 디스그 용량이라도 절약하는 거라면, 1회성 방송은 Record only this showing, 매주 방송은 Record in this timeslot every week, 매일 방송은 Record one showing of this title every day으로 합니다. 이러한 녹화는 방송시간표가 변경된 경우에 녹화가 되지 않습니다.
    • Single Record, Find One, Find Weekly, Find Daily는 한 번만 녹화하는 것이고, Record Weekly, Record Daily, Channel Record, Record All은 방송 정보 (Description)을 보고 반복 녹화합니다.
    • Record only this showing
      Single Record로 심벌 S
      특정 방송사의 특정방송을 설정한 시간대에 녹화합니다. 예를 들어 EBS의 다큐-10을 저녁 9시 40분 부터 10시 40분까지 녹화를 합니다. 그러나 다큐-10의 방송시간이 바뀌어 설정한 시간대에 보이지 않으면 녹화를 하지 않고 Not Listed 라는 메시지만 보여 줍니다.

      방송시간이 수시로 바뀌어 녹화가 안되는 경우가 종종 있습니다.
    • Record one showing of this title
      Find One으로 심벌 F
      (특정 방송사의)특정 방송을 시간에 관계없이 방송편성표에 보이면 한번 녹화합니다.
      또한 추가로 방송이 재방송된다면. 녹화 예약이 많아 서로 겹쳐질 때 겹쳐지지 않는 방송 시간대에 녹화할 수 있습니다. 그러나 녹화가능한 첫번째 한번만 녹화되므로, 재방송이 다른 내용의 방송을 여러번 방송한다면 적합하지 않습니다.

      이는 매일 또는 매주 방송이 아닌 어쩌다 보이는 특집방송을 녹화하기에 적당합니다. 비록 재방송이 없어도.
    • Record in this timeslot every week
      Record Weekly로 심벌은 W
      특정 방송사의 특정 방송을 정한 시간대(요일, 시간)에 보이면 매주 녹화합니다. 그러나 방송시간표가 바뀐다면 녹화가 되지 않고 Not Listed가 표시됩니다.
    • Record one showing of this title every week
      Find Weekly로 심벌은 F
      특정 방송(예를들어 아시아 투데이)방송이 주중에 다시 재방송 될때에 알맞습니다. 특정 방송사(KBS1S)의 특정 방송(아시아 투데이)을 첫번째 방송시간대에(목요일 오후 10부터 10시 45분까지) 예약녹화를 하면, 이 특정 방송(아시아 투데이)이 재방송(토요일 2시 25분부터 3시 10분까지)되어도 일주일에 한번만 녹화합니다. 이는 녹화예약이 많아 서로 겹쳐진 경우에, 예약녹화 시간대(목요일 오후 10부터 10시 45분까지)를 녹화하지 못하면 재방송을 녹화하게 됩니다.
      특히 방송편성표에 방송(아시아 투데이)의 주제(Description)가 보이지 않을때 적합합니다. 예를들어 매주 재방송되는 방송(아시아 투데이)의 앞주 방송의 주제가 <태국>이며, 이번주 주제가 <인도네시아> 이지만, mythtv 편성표에 주제가 보이지 않고 단지 아시아 투데이만만 보인다면 mythtv는 첫번째 방송을 녹화하여도 재방송을 구분하지 못해고 모두 녹화해버릴 우려가 있습니다. 이럴 경우 일주일에 한번씩만 꼭 녹화하기에 알맞습니다.

      재방송되는 방송을 매주에 한번만 녹화하기에 적당합니다. 특히 방송표에서 주제를 알 수 없어도 중복녹화를 피할 수 있습니다.
    • Record in this timeslot every day
      Record Daily로 심벌 T
      매일 특정 방송사(EBS)의 특정 방송(다큐-10)을 정한 시간대(저녁 9시40분 부터 10시 40분까지 사용자가 정했다면)에 보이면 매일 녹화합니다. 그러나 방송시간표가 바뀐다면 녹화가 되지 않고 Not Listed가 표시됩니다.
    • Record one showing of this title every day
      Find Daily로 심벌 F
      특정 방송(예를들면 딩동댕 유치원)방송이 매일 재방송 될때에 알맞습니다. 이러한 특정 방송사(EBS)의 특정 방송(딩동댕 유치원)을 첫번째 방송시간대에(오전 8시 20분부터 9시까지) 예약녹화를 하면, 이 특정 방송(딩동댕 유치원)이 재방송되어도 하루에 한번만 녹화합니다. 이는 녹화예약이 많아 서로 겹쳐진 경우에, 예약녹화 시간대(오전 8시 20분부터 9시까지)를 녹화하지 못하면 재방송을 녹화하게 됩니다.
      더구나 방송편성표에 방송(딩동댕 유치원)의 주제(Description)가 보이지 않는다면, 예를들어 매일 재방송되는 방송(딩동댕 유치원)의 어제 주제가 <재미있게 놀기>, 오늘의 주제가 <맛있게 먹어보기>로 이지만, mythtv 편성표에 그날의 주제가 보이지 않고 단지 딩동댕 유치원만 보인다면 mythtv는 재방송을 구분하지 못해고 모두 녹화해버릴 우려가 있습니다. 이때 하루에 한번씩만 꼭 녹화하기에 알맞습니다.

      재방송되지만 매일 한번만 녹화하기에 적당합니다. 방송표에서 주제를 알 수 없어도 중복 녹화없이.
    • Record at any time on this channel
      Channel Record 심벌 C
      특정 방송사(EBS)의 특정 방송(다큐-10)이 보이기만 하면 모두 녹화합니다.

      대부분의 방송은 하루에 한번만 방송되므로 대부분의 방송에 알맞습니다.
    • Record at any time on any channel
      Record All 심벌 A
      특정 방송을 아무 시간대에, 어떤 방송에서도 보이면 녹화합니다. 특정 방송을 특정 방송사(KBS1)에서 방송한후 다른 방송사(KBS2)에서도 방송한다면 앞의 방송(KBS1)을 녹화하지 못할 경우에 알맞습니다.
절전 대해서
  • 외국 사용자들은 컴퓨터를 녹화할 때 저절로 켜지고, 녹화가 끝나면 절전되거나 아예 꺼지게 하는 모양인데,
    국내는 저절로 켜지게 해서 녹화를 시도하면, mythtv가 EIT 방송정보를 수신하는데 시간이 걸리는 문제가 있습니다. 부팅 후 바로 방송정보가 수신되면 좋겠지만 그렇지를 못해서 녹화가 잘 안됩니다.
    일단 녹화를 해서 절전을 위해 꺼지게 해 놓으면 다시 방송정보를 수신한다고 제대로 녹화가 안됩니다.
    그래서 절전을 S3 (suspend to ram)으로 했는데 아직 리눅스에선 S3가 완벽하지를 않아 별도의 수작업이 필요합니다.
    그러나 본인의 컴퓨터에선 S3사용중에 스크립트 어디에선가 하드 디스크를 파킹 (spin down)을 시켜 껄크러운 드르륵 드르륵 소리에 질려 제대로 사용하지 못했습니다.

    그냥 컴퓨터를 손으로 직접 키고나서, 녹화하거나 녹화물을 보는 용도로 사용중입니다. 늦게 자면서 녹화가 필요하면 녹화를 걸어놓고, 다음과 같이 사용중입니다.
    # shutdown -h 03:00
    (새벽 3시에 자동으로 컴퓨터 꺼지게.... 물론 shutdown 한다고 반복되는 삑삑 소리로 미리 pcspkr모듈을 제거해야 합니다.)
마지막 수정 2009년 4월 29일...