반응형


예전에 몇번 글을 쓴적이 있고 아마 이게 마지막이 될것 같습니다. ^^; 설정은 다른글을 참고 하시고요.

최근 신제품이 나온관계로 이 제품도 이젠 구형이라 사용자도 별로 없을것 같고, 리눅스에서 티비를 보는 분들도 적을것 같으니 간단하게 쓰도록 하겠습니다. ^^;



이 제품을 리눅스에서 쓰는데 있어서 문제점은 티비를 보는데 음성이 안나온다는 것입니다. 따라서 arecord 와 aplay 를 이용한 방법.... 혹은 tvtime 홈페이지에선 sox 프로그램을 이용하는 방법.....을 써서 음성을 나오게 했었습니다.

하지만 이 방법은 저에겐 썩 좋지 않았습니다. 일단 음성은 나오지만 시간이 지날수록 음성과 화면의 동기화가 맞지를 않게 되어 말 따로, 화면 따로 놀게 되더군요. 이런 저런 옵션도 써 봤지만 시간이 지나면 마찬가지 였습니다.

최근에 검색중 mplayer 를 이용하는 방법을 알게 되어 소개할까 합니다. 이 방법은 그냥 mplayer 만을 이용해 음성을 들을수 있고 따로 예전처럼 arecord 와 aplay 의 조합을 이용해서 음성을 나오게 할 필요가 없습니다.

mplayer tv:// -vf pp=lb -tv driver=v4l2:norm=NTSC-M:input=0:device=/dev/video0:chanlist=us-cable:alsa:adevice=hw.2,0:forceaudio:immediatemode=0:amode=2:channel=11 -ao oss

위와 같이 해 주면 됩니다.

핵심은 "alsa" 부분과 "adevice=hw.2,0" 부분 입니다. 직접 티비카드가 제공하는 사운드 장치와 접속하는 부분이랄까요.
참고로 예전에도 말한적이 있지만 adevice 부분의 번호는 각 컴퓨터 마다 조금씩 다릅니다. 저 같은 경우 "2" 라고 되어 있지만 "1" 일수도 있고 다른 숫자일 수도 있습니다. 이 부분은 직접 여러 숫자를 입력해 보시거나 콘솔에서 "arecord -l" 명령으로 카드 번호를 확인하실수 있습니다.
이 티비카드의 경우는 cx88 이란 문자가 들어간 카드의 번호를 찾아 주면 됩니다.

또 한가지는 옵션중 "-ao oss" 라고 된 부분인데요. 오디오를 출력할 장치를 표시해 주는건데 이부분은 좀 애매하더군요.
현재 제 시스템의 문제 인지 모르겠지만, 이 부분을 안 넣어줘도 잘 실행될때가 있는 반면, 어쩔때는 이 부분을 넣어주지 않으면 화면이 슬로우 비디오로 나올때도 있습니다.
때에 따라 "-ao sdl" 을 넣거나도 해 봤는데 현재는 위처럼 "-ao oss" 를 넣고 쓰고 있습니다. 문제가 생기면 이부분은 적당히 여러 가지로 바꿔서 시험해 보시길 바랍니다. "mplayer -ao help" 를 터미널에서 입력해 보면 사용할 수 있는 출력장치들을 보실 수 있습니다.



다른 프로그램도 mplayer 처럼 오디오 장치를 직접 선택 할 수 있다면 티비의 사운드를 들을 수 있을것 같지만 현재는 mplayer 외에 다른 프로그램에 대해선 잘 모르겠습니다. tvtime 은 확실히 안되는것 같고요.

mplayer 가 사실 티비 보기엔 좀 불편한데....현재로선 다른 대안이 있는지는 모르겠네요.



반응형


예전에 SKY HDTV6 PCI 를 리눅스에서 사용하는 방법에 대해 올린적이 있습니다. 바로 이 링크 인데요.

특별히 추가된 내용은 아니고 우분투 9.10 설치한 김에 설정해 주다가 알게 된 내용을 잡담형식으로 적어 볼까 합니다. 한마디로 잡담이고 몰라도 사는데 지장없고 티비보는데 지장없는 내용이지요.



mplayer 로 tv를 볼때 그냥 실행하면 음성이 안나옵니다. 이걸 해결하려면 아래의 명령을 줘야 하죠.

arecord -D hw:1,0 -f dat | aplay &


그런데 저 내용중 hw: 다음의 숫자가 제가 저 글을 쓸당시에 문제였는데 심심해서 'man arecord' 를 해보니 대충 알겠더군요.

'arecod -l'

명령을 콘솔에서 쳐보면 저의 경우 다음과 같은 내용이 나옵니다.

**** CAPTURE 하드웨어 장치 목록 ****
0 카드: SB [HDA ATI SB], 0 장치: ALC883 Analog [ALC883 Analog]
  하위장치: 1/1
  하위장치 #0: subdevice #0
0 카드: SB [HDA ATI SB], 2 장치: ALC883 Analog [ALC883 Analog]
  하위장치: 1/1
  하위장치 #0: subdevice #0
1 카드: CX8801 [Conexant CX8801], 0 장치: CX88 Digital [CX88 Digital]
  하위장치: 1/1
  하위장치 #0: subdevice #0

제 능력으론 왜 0번이 2개나 나오는지 알 수 없으나 그건 중요한게 아니죠. 어쨌던 CX8801 이 티비카드와 상관있다는 정도는 눈치챌수 있으니까요. 그렇다면 이걸 이용해 간단히 스크립트로 만들면 아무때나 쓸 수 있겠지요.

왜 이런짓을 했냐 하면, 제 경우 예전에는 저 하드웨어의 숫자가 컴퓨터 켤때마다 달라지는 경우가 있곤 했거든요. 9.10에서도 그럴지는 모르겠지만 마침 심심한김에(?) 간단히 쉘스크립트로 만들어 보기로 했습니다. 하지만 전 쉘스크립트를 전혀 모르기땜에 고생 좀 했습니다. 오랜만에 안하던짓을 했더니 피곤하네요. --;

!/bin/bash

soundno=`arecord -l | grep CX8801 | awk '{print $1}'`
arecord -D hw:$soundno,0 -f dat | aplay

exit 0

위가 쉘의 내용입니다. 실망에 기가차서 웹브라우저를 끄는 모습이 선합니다만...^^; 사실 별거 아니지만 그냥 이렇게 쉘 스크립트를 만들어 쓰고 있습니다. 뭐...그래도 나름 실용적이지 않습니까? ^^;

저 쉘에서 뒤에 '&' 를 안붙인건 그냥 컨트롤+C로 중지시키고 싶을때 중지시키기 위함입니다. 티비보는동안 쉘 하나를 열어놔야 한다는 점이 좀 그렇지만 kill 로 죽이는게 귀찮아서 말이죠. 사실 이것도 찾아서 kill 로 지우는 스크립트를 만들어 보기도 했는데 그냥 컨트롤+C 로 죽이는것도 나쁘지 않다는 생각이 들어서....



참고로 mplayer 관련 쉘스크립트도 올려 놓습니다. 예? 이젠 기대도 안한다고요? 그래도 쉘스크립트 처음이라 힘들었다고요!!!

#!/bin/bash

ch=$1

if [ -z $1 ]
then
    ch=11
fi

mplayer tv:// -tv driver=v4l2:device=/dev/video0:channel=$ch:chanlist=us-cable:norm=NTSC-M:forceaudio:immediatemode=0

exit 0

그렇습니다. 내용은 단순 그 자체입니다. 그냥 스크립트를 실행하면 채널 11번이 기본이고요. 스크립트에 숫자를 줘서 실행하면 그 채널로 뜨게 했습니다. h 와 k 키로 70여개의 채널을 계속 눌러서 옮겨가기는 너무 힘들더라고요. --;

이 스크립트 파일명을 만일 'mtv' 라고 했다면, 그냥 쉘에서 'mtv' 를 치면 채널 11번이, 'mtv 30' 을 입력하면 30번 채널이 나올것입니다.



쉘스크립트 처음만드는게 왜 힘들었냐 하면...이 쉘스크립트는 파이썬이나 루비와 같은 고등(?) 스크립트와 달리 띄어쓰기 하나에도 매우 민감한 녀석이더라고요. 변수에 값하나 할당하는것도 힘들었다니깐요. if 문 뒤쪽 ']' 도 앞의 $1 뒤에 한칸 안띄워 줬다고 얼마나 까탈스럽게 굴던지...변수에 값을 할당할땐 변수앞에 $ 을 안쓴다는걸 몰라서 얼마나 헤맸는데요. --;

뭐...어쨌던 별로 해결된건 없지만...귀찮긴 마찬가지고 말이죠. 하긴 위쪽 사운드 스크립트 같은 경우 부팅시 자동실행되도록 해 놓을 수도 있겠지만 굳이 그럴꺼 까진 없고...TV 보기엔 tvtime 이 더 좋긴 한데 이건 화질이 못봐줄 수준이고 말이죠. mplayer로 tv 보는건 좀 불편한데...

좋은 방법이나 프로그램 있으시면 알려주시면 감사하겠습니다....





+ Recent posts