본문 바로가기

linux

ALSA device default 값 조정

ALSA 디바이스 드라이버가 로딩되어져 있는 상태에서 default 값을 바꾸고 싶은 경우가 생겼다.


이유는 gst-launch 를 이용함에 있어 gstreamer 의 alsasink 는 


/dev/snd/pcmc0d0p 이 부분을 무조건 읽어온다.


하지만 여기서 


/dev/snd/pcmc0d1p 를 읽어오고 싶을때는 어떻게 해야될까?


현재 aplay 를 통해서 본 결과 


# aplay -l                                                     

**** List of PLAYBACK Hardware Devices ****                                     

card 0: EVM [EVM], device 0: AIC3X tlv320aic3x-hifi-0 []                 

  Subdevices: 1/1                                                               

  Subdevice #0: subdevice #0                                                    

card 0: EVM [EVM], device 1: hdmi HDMI-DAI-CODEC-1 []                    

  Subdevices: 1/1                                                               

  Subdevice #0: subdevice #0 


이렇게 두개가 잡혀 있다.


gstreamer 를 통해 영상과 오디오를 재생하면 영상은 HDMI 오디오는 AIC3X 로 재생이 되었다.


HDMI를 통해 영상과 오디오를 동시에 재생하고 싶어서 찾아본 결과


gstreamer 의 alsasink device:hw:0,1 이런식의 옵션은 먹히지가 않았다.


그래서 ALSA 의 device 의 default 값을 바꾸기로 한것


찾아보니


~/.asoundrc 라는 파일을 수정하면 된다.


pcm.!default {

    type hw

    card 0 // ALSA sound card 

    device 1  // 해당 디바이스 넘버 (위의 HDMI 의 디바이스는 1번이기에 1번이라고 쓴다)

}

이런식으로 ....


이렇게 간단한 방법이 있었는데 너무 힘들게 커널을 고치려고 하고 디바이스 노드 생성되는 부분도 고치고


삽질을 한거 같다 ㅠ


막상 저렇게 하니 너무 간단해서 허무... 


alsa device 에 대해 조금 공부할 필요성을 느꼈다.


출처 : http://alsa.opensrc.org/FAQ026