2009년 7월 19일 일요일

mythtv의 mysql

mythtv는 여러 설정과 기록물을 위해 mythconverg라는 database를 사용합니다.
  • mysql 데이타베이스가 손상된 것 같으면
    mysqlcheck -u mythtv -p비밀번호 mythconverg
    고치려면
    mysqlcheck -r -u mythtv -p비밀번호 mythconverg

  • channel databae의 백업하려면 먼저 mysql에 들어갑니다.

    mysql -u root -p mythconverg

    이제 백업합니다.
    select * into outfile '/tmp/channelsBackup' from channel;

    복구하려면 다음과 같이 합니다.
    load data infile '/tmp/channelsBackup' into table channel;
  • mysql의 root 유저의 비밀번호를 잃어 버렸으면 (시스템의 root가 아닌)

    먼저 mysql daemon을 중지하고
    $ su
    # service mysql stop

    다시 daemon을 실행합니다.
    # mysqld_safe --skip-grant-tables &
    마지막의 &는 background로 실행시키는 것입니다.

    이제 비밀번호를 바꾸고
    # mysql -uroot mysql
    > UPDATE user SET password=PASSWORD("비밀번호") WHERE user="root";
    > FLUSH PRIVILEGES;
    > exit
    다시 mysql을 실행합니다.
    # service mysql restart
    이제 비밀번호를 확인해봅니다.
    $ mysql -u root -p
  • database 전체를 백업하려면 다음과 같은 스크립트를 만들어 저장합니다.
    예를 들어 backup.mythdb같이...
    아래의 스크립트는 매일 해도 1주 마다 파일명이 바뀌게 됩니다. 1년중 몇 주차 파일이라고 기록됩니다.

    #!/bin/bash
    #Dumps the mythconverg database - daily backup
    #Keeps the last 7 days
    DAY=`/bin/date +%u`
    DUMPFILE="mythdb_$DAY.sql.bz2"
    /usr/bin/mysqldump -u mythtv -p비밀번호 --extended-insert mythconverg -c |\
    /bin/bzip2 -cq9 > /tmp/$DUMPFILE
    exit 0

    위에서 붉은 색의 비밀번호와 /tmp는 맞게 수정합니다.
    실행가능하게 하고 chmod a+x backup.mythdb
    이제 실행은 sh ./backup.mythdb

mplayer 에러...

MPEG-2 동영상을 보던중 문제가 생겨 출력된 화면입니다.


************************************************
**** Your system is too SLOW to play this! ****
************************************************

Possible reasons, problems, workarounds:
- Most common: broken/buggy _audio_ driver
- Try -ao sdl or use the OSS emulation of ALSA.
- Experiment with different values for -autosync, 30 is a good start.
- Slow video output
- Try a different -vo driver (-vo help for a list) or try -framedrop!
- Slow CPU
- Don't try to play a big DVD/DivX on a slow CPU! Try some of the lavdopts,
e.g. -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all.
- Broken file
- Try various combinations of -nobps -ni -forceidx -mc 0.
- Slow media (NFS/SMB mounts, DVD, VCD etc)
- Try -cache 8192.
- Are you using -cache to play a non-interleaved AVI file?
- Try -nocache.
Read DOCS/HTML/en/video.html for tuning/speedup tips.
If none of this helps you, read DOCS/HTML/en/bugreports.html.

XvMC

MPEG-2 볼 때(디코딩) CPU가 motion compensation과 iDCT (Inverse Discrete Cosine Transform)작업을 하는데, CPU를 대신해서 그래픽카드가 이 MC와 iDCT를 대신 할 수 있습니다. 데비안과 같은 리눅스에선 이러한 작업을 X-Video Motion Compensation (XvMC)이 하게 됩니다. 따라서 속도가 느린 컴퓨터에서도 MPEG-2를 볼 수 있게 됩니다.
현재는 MPEG-2에서만 효과를 볼 수 있지만, 새로운 VIA Unichrome chips이 MPEG-4에서, 인텔 칩에선 iDCT+MC와 추가적인 효과(VLD)로 MPEG-4 ASP (H.263), MPEG-4 AVC (H.264), VC-1/VMW3에서도 사용될 수 있다고 합니다. 아직은 완벽하진 않지만.
XvMC는 Via Unichrome-Pro chipsets에서도 XvMC-vld로 사용될 수 있다고 합니다.

참고 사이트 http://www.mythtv.org/wiki/XvMC

XvMC를 사용하려면 XvMCW 라이브러리와 그래픽카드의 비디오 드라이버를 설치해야 합니다. 데비안에서 XvMCW 라이브러리로 libxvmc1가 있으며, 이 패키지는 mplayer를 설치하면 같이 설치됩니다.
여기에 Nvidia사의 그래픽 카드를 사용한다면, 비디오 드라이버로 NVidia사의 드라이버 설치가 필요합니다.
이제 /etc/X11/XvMCConfig에서 다음을 기록하여 XvMC library와 비디오 드라이버가 연결되게 합니다.
libXvMCNVIDIA_dynamic.so.1
데비안에선 /etc/X11/XvMCConfig에서 libXvMC.so.1를 지우고 libXvMCNVIDIA_dynamic.so.1를 기록하면 됩니다.


마지막으로 설치된 비디오 드라이버 설정이 필요합니다.
먼저 $ nvidia-settings을 실행하여 Video Texture Adapter에서 Sync to VBlank를 체크하지 않도록 합니다. 추가적으로 Video Blitter Adapter에서도 Sync to VBlank를 선택하지 않는 것이 필요할 수 있습니다.
이제 /etc/X11/xorg.conf에 아래의 강조된 붉은색 설정을 추가하고,
Section "Device"
Identifier "Videocard0"
Driver "nvidia"
Option "UseEvents" "true"
Option "XvmcUsesTextures" "false" # necessary for color Chromakey OSD)
Option "NVAGP" "1" # some users report 2 or 3 works better
EndSection
다음을 추가합니다.
Section "Extensions"
Option "Composite" "Disabled"
EndSection


이제 X윈도우를 다시 시작하여 효과를 보려면,
mplayer에서 ./mplayer/config에 다음을 기록합니다.
vo=xvmc:bobdeint
vc=ffmpeg12mc
디인터레이싱도 같이 됩니다.

mythtv에선 [Utilities/Setup] [Setup] [TV Settings] [Playback]의 Current Video Playback Profile을 Slim이나 CPU--로 지정합니다.

transcoder

transoder는 mythtv에 내장되어 있어 메뉴로 선택할 수 있습니다.

frontend (mythfrontend)에서 [Utilities/Setup] [Setup] [TV Settings] [Recording Profiles][Transcoders]에서 정합니다.

transcoding을 하려면 [Media Library] [Watch Recordings]에서 보려고 하려는 녹화물에서 키보드 오른쪽 화살표를 눌러, [Job Options] [Begin Transcoding]에서 미리 정한 transcoder profile을 지정하면 됩니다.
다만, 이렇게 하면 기존 녹화물이 trancoding되어 새로운 파일이 mythtv 저장 디렉토리에 생기면서 기존 녹화물은 지워집니다.

[Transcoders]중에서 임의의 profile (에를 들어, High Quality)의 설정을 Lossless transcoding을 설정하면 편합니다.
이렇게 하면 기존의 녹화물에서 필요없는 부분을 제거한 새 녹화물이 Storage Directories에 생깁니다. 기존의 녹화물은 없어지고...
mythtranscode로 PS형태의 mpeg2를 만들 수 있지만 수작업이 필요해서 불편합니다. Storage Directories에 저장된 녹화물은 TS 형태의 mpeg2로 그냥 동영상 플레이어로 봐도 됩니다.

mythtranscode

녹화물을 따로 mpeg2로 저장하려면 mythtranscode를 사용합니다. 이렇게 하면 PS형태의 mepg2로 저장할 수 있습니다.

mythtv의 저장 디렉토리에 파일이 아래와 같이 보이면
1111_20080703012400.mpg
1111_20080703012400.mpg.png
다음과 같이 합니다.

$ mythtranscode --chanid 1111 --starttime 2008-07-03-01-24-00 --mpeg2 --honorcutlist --outfile ./test.mpg

11번 채널에서 7월 3일, 1시 24분에 녹화 된 것으로 필요없는 부분이 제거된 (cut point설정으로) PS형태의 mpeg2인 test.mpg 동영상이 생깁니다.

nuvexport

설치는 데비안 (lenny)에서 # apt-get install nuvexport
이전 버전 etch에서는 libdate-manip-perl를 추가로 설치해야 했는데, 이젠 libdate-manip-perl가 mythtv를 설치할 때 같이 설치되고, nuvexport 패키지 설치할 때도 의존 패키지로 되어 있어 lenny에서는 따로 libdate-manip-perl을 설치하지 안하도 됩니다.

사용하려면 mythtv 계정의 콘솔에서 실행합니다.
# su - mythtv
$ nuvexport

No RecordFilePrefix defined ... in the settings table
언제 부터인가 nuvexport를 실행하면 위와 같이 에러가 생깁니다. 찾아보니 RecordFilePrefix는 mythtv-setup을 실행하여 정하는 Storage Directories인데, mythtv에서 사용하는 데이타베이스 mythconverg에 RecordFilePrefix가 정확히 설정되어 있지 않아서 생긴다고 합니다.
아마도 임으로 Storage Directories를 정하면서 생긴 것 같습니다.
  • 다시 한번 Storage Directories를 임으로 바꾸었으나 제대로 안됩니다.

    # /etc/init.d/mythtv-backend stop
    $ mythtv-setup
    # /etc/init.d/mythtv-backend start
    $ mythfilldatabase

  • 할 수 없이 데이타베이스에서 직접 작업하니 이제 잘 됩니다.

    $ mysql -u mythtv -p mythconverg
    패스워드는 /etc/mythtv/mysql.txt에 저장되어 있으므로
    root계정으로 # cat /etc/mythtv/mysql.txt | grep Password 합니다.
    또는 이미 mythtv가 맞게(frontend까지) 설치되어 있으면 메뉴에서 Mythtv frontend-> Utilities / Setup -> Setup -> General에 보일 것입니다.

    mysql> insert into settings (value, data, hostname) VALUES ('RecordFilePrefix', '/media/mythtv/recordings/', 'alpha');
    여기서 /media/mythtv/recordings는 mythtv-setup에서 따로 정한 Storage Directories이고, alpha는 컴퓨터의 hostname이므로 맞게 정해주어야 합니다.

    mysql> quit
    이제 데이타베이스에서 빠져나와
    $ mythfilldatabase