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