ALSA 재생 모노 파일이지만 사용할 수 없는 채널 번호를 반환합니다.

ALSA 재생 모노 파일이지만 사용할 수 없는 채널 번호를 반환합니다.

test.wavALSA를 사용하여 스피커를 통해 재생하고 싶은 파일이 있습니다 . 내 시스템에도 sox가 설치되어 있습니다. 모든 사운드 카드가 올바르게 설치되었습니다. aplay -L그리고 arecord -L올바른 값을 반환합니다.

그러나 나는 이것을 플레이하지 못했습니다 test.wav.

aplay -c1 -r 48000 -f S16_LE test.wav
$ Playing WAVE 'test.wav': Signed 16 bit Little Endian, Rate 48000 Hz, Mono
  aplay: set_params:1345: Channels count non available

하지만 sox를 ​​사용하면 시스템에는 문제가 없으며 파일이 실제로 16비트 1채널이라고 표시됩니다.

$ Encoding: Signed PCM
  Channels: 1 @ 16-bit
  Samplerate: 48000Hz

그 이유가 무엇인지는 잘 모르겠습니다. 도움을 주시면 감사하겠습니다! 미리 감사드립니다!

편집하다:

  1. 터미널에 인쇄된 메시지를 수동으로 입력했을 때 실수를 했고, SoX를 사용해 보니 정말 1@16비트였습니다.

  2. .asoundrc

pcm.!default {
 type hw
 card 0
}
ctl.!default {
 type hw
 card 0
}
  1. 사용할 때 채널 수를 지정해야 합니다 arecord. arecord -c 2 -r 48000 -f S16_LE test.wav 그렇지 않으면 위와 같은 오류가 반환됩니다. 하지만 test.wav녹음을 이용하면 재생에는 문제가 없습니다 arecord. 이상한 점은 test.wav다른 곳에서 가져온 것이라면 재생할 수 없다는 것입니다.

답변1

pi사용자가 사용 중인 장치의 구성을 변경하면 hw모든 자동 샘플 형식 변환이 비활성화되었습니다.

카드번호만 설정하려면 다음을 사용하세요.

defaults.pcm.card 0
defaults.ctl.card 0

모든 사용자에 대해 이 설정을 변경하려면 에 입력하세요 /etc/asound.conf.

답변2

다음을 수행하여 sudo 권한 문제를 해결할 수 있었습니다.

sudo nano /root/.asoundrc

pcm.!default {
 type hw
 card 0
}
ctl.!default {
 type hw
 card 0
}

그런 다음 .asoundrc홈 디렉토리에 합계를 추가했습니다 . 이제 옵션을 지정 하지 않고도 asound.confwav 파일에 합계를 사용할 수 있습니다 .aplayarecord

해결책은 다음에서 비롯됩니다.alsa-프로젝트 웹사이트.

관련 정보